Message ID | 1370969333-4649-1-git-send-email-sgruszka@redhat.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Sent from my iPad On 11 jun. 2013, at 18:48, Stanislaw Gruszka <sgruszka@redhat.com> wrote: > My change: > > commit cee2c7315f60beeff6137ee59e99acc77d636eeb > Author: Stanislaw Gruszka <sgruszka@redhat.com> > Date: Fri Oct 5 13:44:09 2012 +0200 > > rt2800: use BBP_R1 for setting tx power > > unfortunately does not work well with RT5390 and RT3290 chips as they > require different temperature compensation TX power settings (TSSI > tuning). Since that commit make wireless connection very unstable on > those chips, restore previous behavior to fix regression. Once we > implement proper TSSI tuning on 5390/3290 we can restore back setting > TX power by BBP_R1 register for those chips. > > Reported-and-tested-by: Mike Romberg <mike-romberg@comcast.net> > Cc: stable@vger.kernel.org > Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Acked-by: Gertjan van Wingerde <gwingerde@gmail.com> > --- > drivers/net/wireless/rt2x00/rt2800lib.c | 29 ++++++++++++++++++----------- > 1 file changed, 18 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c > index 92849e5..8b679df 100644 > --- a/drivers/net/wireless/rt2x00/rt2800lib.c > +++ b/drivers/net/wireless/rt2x00/rt2800lib.c > @@ -2634,19 +2634,26 @@ static void rt2800_config_txpower(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. > */ > - 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; > + 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); > } > - rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl); > - rt2800_bbp_write(rt2x00dev, 1, r1); > + > offset = TX_PWR_CFG_0; > > for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) { > -- > 1.7.11.7 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 92849e5..8b679df 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -2634,19 +2634,26 @@ static void rt2800_config_txpower(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. */ - 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; + 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); } - rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl); - rt2800_bbp_write(rt2x00dev, 1, r1); + offset = TX_PWR_CFG_0; for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) {
My change: commit cee2c7315f60beeff6137ee59e99acc77d636eeb Author: Stanislaw Gruszka <sgruszka@redhat.com> Date: Fri Oct 5 13:44:09 2012 +0200 rt2800: use BBP_R1 for setting tx power unfortunately does not work well with RT5390 and RT3290 chips as they require different temperature compensation TX power settings (TSSI tuning). Since that commit make wireless connection very unstable on those chips, restore previous behavior to fix regression. Once we implement proper TSSI tuning on 5390/3290 we can restore back setting TX power by BBP_R1 register for those chips. Reported-and-tested-by: Mike Romberg <mike-romberg@comcast.net> Cc: stable@vger.kernel.org Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> --- drivers/net/wireless/rt2x00/rt2800lib.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-)