@@ -307,12 +307,16 @@ void ath9k_ani_reset(struct ath_hw *ah,
if (IS_CHAN_2GHZ(chan)) {
ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
ATH9K_ANI_FIRSTEP_LEVEL);
- if (AR_SREV_9300_20_OR_LATER(ah))
+ if (AR_SREV_9300_20_OR_LATER(ah) &&
+ ah->caps.rx_chainmask != 1)
ah->ani_function |= ATH9K_ANI_MRC_CCK;
} else
ah->ani_function = 0;
}
+ if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
+ ah->ani_function &= ~ATH9K_ANI_MRC_CCK;
+
/* always allow mode (on/off) to be controlled */
ah->ani_function |= ATH9K_ANI_MODE;
@@ -674,7 +674,7 @@ static int __ath9k_hw_init(struct ath_hw
ah->ani_function = ATH9K_ANI_ALL;
if (AR_SREV_9280_20_OR_LATER(ah) && !AR_SREV_9300_20_OR_LATER(ah))
ah->ani_function &= ~ATH9K_ANI_NOISE_IMMUNITY_LEVEL;
- if (!AR_SREV_9300_20_OR_LATER(ah))
+ if (!AR_SREV_9300_20_OR_LATER(ah) || ah->caps.rx_chainmask == 1)
ah->ani_function &= ~ATH9K_ANI_MRC_CCK;
ath9k_hw_init_mode_regs(ah);