diff options
author | Rajkumar Manoharan <rmanoharan@atheros.com> | 2010-12-20 04:09:51 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-22 15:43:25 -0500 |
commit | d584747be838775cebbf5937c20b24da6899e3e8 (patch) | |
tree | 07cab9a9161aecb8eefbdbcd44fe858987a6d262 /drivers/net/wireless/ath/ath9k | |
parent | 97dcec5715a381362c88d1542e52c63147764d3c (diff) |
ath9k: Fix warnings on card removal
The recently added warning message on power change failure
is not needed on device removal.
ath: Failed to wakeup in 500us
------------[ cut here ]------------
WARNING: at drivers/net/wireless/ath/ath9k/hw.c:1618
ath9k_hw_setpower+0x61f/0x630 [ath9k_hw]()
Hardware name: 64756D6
Pid: 540, comm: kworker/u:3 Not tainted 2.6.37-rc6-wl #37
Call Trace:
[<ffffffff810501aa>] warn_slowpath_common+0x7a/0xb0
[<ffffffffa056e280>] ? ath9k_iowrite32+0x0/0x90 [ath9k]
[<ffffffff810501f5>] warn_slowpath_null+0x15/0x20
[<ffffffffa05226ef>] ath9k_hw_setpower+0x61f/0x630 [ath9k_hw]
[<ffffffffa05700e5>] ath9k_ps_wakeup+0x85/0xd0 [ath9k]
[<ffffffffa0570685>] ath9k_configure_filter+0x25/0x80 [ath9k]
[<ffffffffa04dde43>] ieee80211_configure_filter+0x133/0x190 [mac80211]
[<ffffffffa04ee502>] ieee80211_do_stop+0x132/0x540 [mac80211]
[<ffffffff813466ff>] ? _raw_spin_unlock_bh+0x1f/0x30
[<ffffffff812b6923>] ? dev_deactivate+0x1c3/0x1e0
[<ffffffffa04ee925>] ieee80211_stop+0x15/0x20 [mac80211]
[<ffffffff8129d1b6>] __dev_close+0x56/0x90
Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 3 |
4 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index 2c31f5142eda..d9bda275ec21 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h | |||
@@ -667,6 +667,7 @@ extern struct ieee80211_ops ath9k_ops; | |||
667 | extern int modparam_nohwcrypt; | 667 | extern int modparam_nohwcrypt; |
668 | extern int led_blink; | 668 | extern int led_blink; |
669 | extern int ath9k_pm_qos_value; | 669 | extern int ath9k_pm_qos_value; |
670 | extern bool is_ath9k_unloaded; | ||
670 | 671 | ||
671 | irqreturn_t ath_isr(int irq, void *dev); | 672 | irqreturn_t ath_isr(int irq, void *dev); |
672 | int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, | 673 | int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid, |
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index b0e5e716b167..9efc77d82563 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
@@ -45,6 +45,7 @@ int ath9k_pm_qos_value = ATH9K_PM_QOS_DEFAULT_VALUE; | |||
45 | module_param_named(pmqos, ath9k_pm_qos_value, int, S_IRUSR | S_IRGRP | S_IROTH); | 45 | module_param_named(pmqos, ath9k_pm_qos_value, int, S_IRUSR | S_IRGRP | S_IROTH); |
46 | MODULE_PARM_DESC(pmqos, "User specified PM-QOS value"); | 46 | MODULE_PARM_DESC(pmqos, "User specified PM-QOS value"); |
47 | 47 | ||
48 | bool is_ath9k_unloaded; | ||
48 | /* We use the hw_value as an index into our private channel structure */ | 49 | /* We use the hw_value as an index into our private channel structure */ |
49 | 50 | ||
50 | #define CHAN2G(_freq, _idx) { \ | 51 | #define CHAN2G(_freq, _idx) { \ |
@@ -899,6 +900,7 @@ module_init(ath9k_init); | |||
899 | 900 | ||
900 | static void __exit ath9k_exit(void) | 901 | static void __exit ath9k_exit(void) |
901 | { | 902 | { |
903 | is_ath9k_unloaded = true; | ||
902 | ath_ahb_exit(); | 904 | ath_ahb_exit(); |
903 | ath_pci_exit(); | 905 | ath_pci_exit(); |
904 | ath_rate_control_unregister(); | 906 | ath_rate_control_unregister(); |
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c index 7ca8499249ec..3eb938d7a012 100644 --- a/drivers/net/wireless/ath/ath9k/pci.c +++ b/drivers/net/wireless/ath/ath9k/pci.c | |||
@@ -264,6 +264,8 @@ static void ath_pci_remove(struct pci_dev *pdev) | |||
264 | struct ath_softc *sc = aphy->sc; | 264 | struct ath_softc *sc = aphy->sc; |
265 | void __iomem *mem = sc->mem; | 265 | void __iomem *mem = sc->mem; |
266 | 266 | ||
267 | if (!is_ath9k_unloaded) | ||
268 | sc->sc_ah->ah_flags |= AH_UNPLUGGED; | ||
267 | ath9k_deinit_device(sc); | 269 | ath9k_deinit_device(sc); |
268 | free_irq(sc->irq, sc); | 270 | free_irq(sc->irq, sc); |
269 | ieee80211_free_hw(sc->hw); | 271 | ieee80211_free_hw(sc->hw); |
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 00ebed3f9158..b2497b8601e5 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c | |||
@@ -528,7 +528,8 @@ bool ath_stoprecv(struct ath_softc *sc) | |||
528 | sc->rx.rxlink = NULL; | 528 | sc->rx.rxlink = NULL; |
529 | spin_unlock_bh(&sc->rx.rxbuflock); | 529 | spin_unlock_bh(&sc->rx.rxbuflock); |
530 | 530 | ||
531 | if (unlikely(!stopped)) { | 531 | if (!(ah->ah_flags & AH_UNPLUGGED) && |
532 | unlikely(!stopped)) { | ||
532 | ath_err(ath9k_hw_common(sc->sc_ah), | 533 | ath_err(ath9k_hw_common(sc->sc_ah), |
533 | "Could not stop RX, we could be " | 534 | "Could not stop RX, we could be " |
534 | "confusing the DMA engine when we start RX up\n"); | 535 | "confusing the DMA engine when we start RX up\n"); |