Skip to content

Commit

Permalink
mac80211: stop queues across suspend/resume
Browse files Browse the repository at this point in the history
Even though userland probably cannot submit packets, there might
still be some coming, and that's no good when the driver doesn't
expect them. Stop the queues across suspend/resume.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Mar 28, 2009
1 parent b5bde37 commit 2542060
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,7 @@ enum queue_stop_reason {
IEEE80211_QUEUE_STOP_REASON_PS,
IEEE80211_QUEUE_STOP_REASON_CSA,
IEEE80211_QUEUE_STOP_REASON_AGGREGATION,
IEEE80211_QUEUE_STOP_REASON_SUSPEND,
};

struct ieee80211_master_priv {
Expand Down
6 changes: 6 additions & 0 deletions net/mac80211/pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ int __ieee80211_suspend(struct ieee80211_hw *hw)
struct ieee80211_if_init_conf conf;
struct sta_info *sta;

ieee80211_stop_queues_by_reason(hw,
IEEE80211_QUEUE_STOP_REASON_SUSPEND);

flush_workqueue(local->hw.workqueue);

/* disable keys */
Expand Down Expand Up @@ -113,5 +116,8 @@ int __ieee80211_resume(struct ieee80211_hw *hw)
ieee80211_configure_filter(local);
netif_addr_unlock_bh(local->mdev);

ieee80211_wake_queues_by_reason(hw,
IEEE80211_QUEUE_STOP_REASON_SUSPEND);

return 0;
}

0 comments on commit 2542060

Please sign in to comment.