Skip to content

Commit

Permalink
ath5k: do not reschedule tx_complete_work on stop
Browse files Browse the repository at this point in the history
This patch claim to fix "WARNING: at net/mac80211/util.c:599
ieee80211_can_queue_work.isra.7+0x30/0x40", which was reported at:

https://bugzilla.redhat.com/show_bug.cgi?id=922295

We use ATH_STAT_STARTED flag to disallow to perform
ath5k_tx_complete_poll_work() code, hence reschedule
ah->tx_complete_work, when we stop device. This flag was defined in
ath5k code, but it was not used.

I didn't get feedback if the fix works, so patch is compile only tested.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Stanislaw Gruszka authored and John W. Linville committed May 3, 2013
1 parent 4ef69d0 commit db17834
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions drivers/net/wireless/ath/ath5k/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -2369,6 +2369,9 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
int i;
bool needreset = false;

if (!test_bit(ATH_STAT_STARTED, ah->status))
return;

mutex_lock(&ah->lock);

for (i = 0; i < ARRAY_SIZE(ah->txqs); i++) {
Expand Down Expand Up @@ -2676,6 +2679,7 @@ int ath5k_start(struct ieee80211_hw *hw)
mmiowb();
mutex_unlock(&ah->lock);

set_bit(ATH_STAT_STARTED, ah->status);
ieee80211_queue_delayed_work(ah->hw, &ah->tx_complete_work,
msecs_to_jiffies(ATH5K_TX_COMPLETE_POLL_INT));

Expand Down Expand Up @@ -2737,6 +2741,7 @@ void ath5k_stop(struct ieee80211_hw *hw)

ath5k_stop_tasklets(ah);

clear_bit(ATH_STAT_STARTED, ah->status);
cancel_delayed_work_sync(&ah->tx_complete_work);

if (!ath5k_modparam_no_hw_rfkill_switch)
Expand Down

0 comments on commit db17834

Please sign in to comment.