aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRajkumar Manoharan <rmanohar@qca.qualcomm.com>2011-09-14 04:50:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-16 16:45:34 -0400
commit7db062ac4bafac040afb28faf355fc2acb426413 (patch)
tree4ef63b8d821a16d70c3ef8ba2d354ea54f3a11a7 /drivers
parentb54af8af49cd93c1ac33e3a8f0bb2f5acc8c7d0e (diff)
ath9k_hw: Do full chip reset on 11A channels for AR9003
AR9003 seems to have issues sometimes with fast channel change in 5GHz and this case is handled specifically for AR9280 by doing a full reset. Let's do a full reset for 5GHz channles of AR9380 & for all channels of AR9280 pci chips. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 4ace66c9d59d..f2de7ee047ce 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1499,14 +1499,16 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1499 } 1499 }
1500 ah->noise = ath9k_hw_getchan_noise(ah, chan); 1500 ah->noise = ath9k_hw_getchan_noise(ah, chan);
1501 1501
1502 if ((AR_SREV_9280(ah) && common->bus_ops->ath_bus_type == ATH_PCI) ||
1503 (AR_SREV_9300_20_OR_LATER(ah) && IS_CHAN_5GHZ(chan)))
1504 bChannelChange = false;
1505
1502 if (bChannelChange && 1506 if (bChannelChange &&
1503 (ah->chip_fullsleep != true) && 1507 (ah->chip_fullsleep != true) &&
1504 (ah->curchan != NULL) && 1508 (ah->curchan != NULL) &&
1505 (chan->channel != ah->curchan->channel) && 1509 (chan->channel != ah->curchan->channel) &&
1506 ((chan->channelFlags & CHANNEL_ALL) == 1510 ((chan->channelFlags & CHANNEL_ALL) ==
1507 (ah->curchan->channelFlags & CHANNEL_ALL)) && 1511 (ah->curchan->channelFlags & CHANNEL_ALL))) {
1508 (!AR_SREV_9280(ah) || AR_DEVID_7010(ah))) {
1509
1510 if (ath9k_hw_channel_change(ah, chan)) { 1512 if (ath9k_hw_channel_change(ah, chan)) {
1511 ath9k_hw_loadnf(ah, ah->curchan); 1513 ath9k_hw_loadnf(ah, ah->curchan);
1512 ath9k_hw_start_nfcal(ah, true); 1514 ath9k_hw_start_nfcal(ah, true);