ath9k: get correct tx gain type in ath9k_hw_4k_get_eeprom
authorGabor Juhos <juhosg@openwrt.org>
Tue, 5 Oct 2010 09:32:17 +0000 (11:32 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Oct 2010 17:37:52 +0000 (13:37 -0400)
The base_eep_header_4k structure contains information that the
device supports high power tx gain table or not. However the
ath9k_hw_4k_get_eeprom function does not return that value when
it is called with EEP_TXGAIN_TYPE. This leads to that the tx gain
initialization will use the init values from the original tx gain
table even if the device inidicates that the high power table
should be used.

Changes-licensed-under: ISC
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: Shu Hwa Shen <shensh@zcomm.com.cn>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/eeprom_4k.c

index d6eed1f02e84c13fa6981814a66b1f5198e63bf4..872e75b0b574062bd573f48054b74c611906a630 100644 (file)
@@ -179,6 +179,9 @@ static u32 ath9k_hw_4k_get_eeprom(struct ath_hw *ah,
        struct ar5416_eeprom_4k *eep = &ah->eeprom.map4k;
        struct modal_eep_4k_header *pModal = &eep->modalHeader;
        struct base_eep_header_4k *pBase = &eep->baseEepHeader;
+       u16 ver_minor;
+
+       ver_minor = pBase->version & AR5416_EEP_VER_MINOR_MASK;
 
        switch (param) {
        case EEP_NFTHRESH_2:
@@ -204,7 +207,7 @@ static u32 ath9k_hw_4k_get_eeprom(struct ath_hw *ah,
        case EEP_DB_2:
                return pModal->db1_1;
        case EEP_MINOR_REV:
-               return pBase->version & AR5416_EEP_VER_MINOR_MASK;
+               return ver_minor;
        case EEP_TX_MASK:
                return pBase->txMask;
        case EEP_RX_MASK:
@@ -217,6 +220,11 @@ static u32 ath9k_hw_4k_get_eeprom(struct ath_hw *ah,
                return pModal->version;
        case EEP_ANT_DIV_CTL1:
                return pModal->antdiv_ctl1;
+       case EEP_TXGAIN_TYPE:
+               if (ver_minor >= AR5416_EEP_MINOR_VER_19)
+                       return pBase->txGainType;
+               else
+                       return AR5416_EEP_TXGAIN_ORIGINAL;
        default:
                return 0;
        }