Search Linux Wireless

Re: [rt2x00-users] [PATCH] rt2800: fix RT5592 TX power settings regression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Any comments on this patch?  Ron, does it work for you?

On Thu, Nov 06, 2014 at 11:27:53AM +0100, Stanislaw Gruszka wrote:
> On Wed, Nov 05, 2014 at 06:03:30PM +0100, Ronald Wahl wrote:
> > Commit cee2c7315f60beeff6137ee59e99acc77d636eeb (rt2800: fix RT5390 &
> > RT3290 TX power settings regression) needs to be extended for the RT5592
> > chipset as well. But at least for the RT5592 the existing regression fix is
> > not right because the value returned from rt2800_get_gain_calibration_delta()
> > is bogus as it is generated by an unappropriate algorithm. This can cause
> > severe connection issues with sticks that have external ALC enabled like the
> > Netis WF2150 because of too low TX power at least during the scan process.
> > 
> > So the fix for now is not to call rt2800_get_gain_calibration_delta()
> > for the RT5592 chipset. I do not touch the existing regression fix for
> > RT5390 & RT3290 but I think they may need a rework as well.
> 
> Thanks for the patch, but I prefer to call rt2800_get_gain_calibration_delta()
> on chips that we know it is needed for them, something like in attached
> patch
> 
> Mike, since you are cee2c7315f reporter, could you test the attached patch
> does not break driver functioning on your H/W.
> 
> Thanks
> Stanislaw
> 
> 

> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index 9f57a2d..81ee481 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -4119,7 +4119,20 @@ static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev,
>  	 * expected. We adjust it, based on TSSI reference and boundaries values
>  	 * provided in EEPROM.
>  	 */
> -	delta += rt2800_get_gain_calibration_delta(rt2x00dev);
> +	switch (rt2x00dev->chip.rt) {
> +	case RT2860:
> +	case RT2872:
> +	case RT2883:
> +	case RT3070:
> +	case RT3071:
> +	case RT3090:
> +	case RT3572:
> +		delta += rt2800_get_gain_calibration_delta(rt2x00dev);
> +		break;
> +	default:
> +		/* TODO: temperature compensation code for other chips. */
> +		break;
> +	}
>  
>  	/*
>  	 * Decrease power according to user settings, on devices with unknown
> @@ -4136,25 +4149,19 @@ static void rt2800_config_txpower_rt28xx(struct rt2x00_dev *rt2x00dev,
>  	 * TODO: we do not use +6 dBm option to do not increase power beyond
>  	 * regulatory limit, however this could be utilized for devices with
>  	 * CAPABILITY_POWER_LIMIT.
> -	 *
> -	 * TODO: add different temperature compensation code for RT3290 & RT5390
> -	 * to allow to use BBP_R1 for those chips.
> -	 */
> -	if (!rt2x00_rt(rt2x00dev, RT3290) &&
> -	    !rt2x00_rt(rt2x00dev, RT5390)) {
> -		rt2800_bbp_read(rt2x00dev, 1, &r1);
> -		if (delta <= -12) {
> -			power_ctrl = 2;
> -			delta += 12;
> -		} else if (delta <= -6) {
> -			power_ctrl = 1;
> -			delta += 6;
> -		} else {
> -			power_ctrl = 0;
> -		}
> -		rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
> -		rt2800_bbp_write(rt2x00dev, 1, r1);
> +	 */
> +	if (delta <= -12) {
> +		power_ctrl = 2;
> +		delta += 12;
> +	} else if (delta <= -6) {
> +		power_ctrl = 1;
> +		delta += 6;
> +	} else {
> +		power_ctrl = 0;
>  	}
> +	rt2800_bbp_read(rt2x00dev, 1, &r1);
> +	rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
> +	rt2800_bbp_write(rt2x00dev, 1, r1);
>  
>  	offset = TX_PWR_CFG_0;
>  

> _______________________________________________
> users mailing list
> users@xxxxxxxxxxxxxxxxxxxxxxx
> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com


-- 
John W. Linville		Someday the world will need a hero, and you
linville@xxxxxxxxxxxxx			might be all we have.  Be ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux