From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from tpesmarthost.raritan.com ([220.128.57.202]:38260 "EHLO tpesmarthost.raritan.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752639AbaKUJjv (ORCPT ); Fri, 21 Nov 2014 04:39:51 -0500 Message-ID: <546F085B.3060408@raritan.com> (sfid-20141121_103956_938583_16A6E654) Date: Fri, 21 Nov 2014 10:39:39 +0100 From: Ronald Wahl MIME-Version: 1.0 To: "John W. Linville" , Stanislaw Gruszka CC: Mike Romberg , , Subject: Re: [rt2x00-users] [PATCH] rt2800: fix RT5592 TX power settings regression References: <1415207010-9622-1-git-send-email-ronald.wahl@raritan.com> <20141106102753.GA1891@redhat.com> <20141120210859.GE31881@tuxdriver.com> In-Reply-To: <20141120210859.GE31881@tuxdriver.com> Content-Type: text/plain; charset="utf-8"; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: For me the patch will work but there is a change for RT3290 and RT5390. On both chipsets BBP 1 was not written before but with this patch it is going to be written now and the value depends on the return of rt2800_get_txpower_bw_comp(). It should be checked that the function does the correct things for these chips. - ron On 20.11.2014 22:09, John W. Linville wrote: > 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@rt2x00.serialmonkey.com >> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com > > -- Ronald Wahl - ronald.wahl@raritan.com - Phone +49 375271349-0 Fax -99 Raritan Deutschland GmbH, Kornmarkt 7, 08056 Zwickau, Germany USt-IdNr. DE813094160, Steuer-Nr. 227/117/01749 Amtsgericht Chemnitz HRB 23605 Geschäftsführung: Stuart Hopper, Ralf Ploenes