| From 6e956da2027c767859128b9bfef085cf2a8e233b Mon Sep 17 00:00:00 2001 |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| Date: Mon, 26 Aug 2013 15:18:53 +0200 |
| Subject: rt2800: fix wrong TX power compensation |
| |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| |
| commit 6e956da2027c767859128b9bfef085cf2a8e233b upstream. |
| |
| We should not do temperature compensation on devices without |
| EXTERNAL_TX_ALC bit set (called DynamicTxAgcControl on vendor driver). |
| Such devices can have totally bogus TSSI parameters on the EEPROM, |
| but still threaded by us as valid and result doing wrong TX power |
| calculations. |
| |
| This fix inability to connect to AP on slightly longer distance on |
| some Ralink chips/devices. |
| |
| Reported-and-tested-by: Fabien ADAM <id2ndr@crocobox.org> |
| Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/rt2x00/rt2800lib.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/drivers/net/wireless/rt2x00/rt2800lib.c |
| +++ b/drivers/net/wireless/rt2x00/rt2800lib.c |
| @@ -2790,6 +2790,13 @@ static int rt2800_get_gain_calibration_d |
| int i; |
| |
| /* |
| + * First check if temperature compensation is supported. |
| + */ |
| + rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); |
| + if (!rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_EXTERNAL_TX_ALC)) |
| + return 0; |
| + |
| + /* |
| * Read TSSI boundaries for temperature compensation from |
| * the EEPROM. |
| * |