mac80211: introduce refcount for queue_stop_reasons
Sometimes different vifs may be stopping the queues for the same reason (e.g. when several interfaces are performing a channel switch). Instead of using a bitmask for the reasons, use an integer that holds a refcount instead. In order to keep it backwards compatible, introduce a boolean in some functions that tell us whether the queue stopping should be refcounted or not. For now, use not refcounted for all calls to keep it functionally the same as before. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
59f48fe22f
commit
cca07b00a5
@ -119,7 +119,8 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local)
|
||||
* before sending nullfunc to enable powersave at the AP.
|
||||
*/
|
||||
ieee80211_stop_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP,
|
||||
IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL);
|
||||
IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL,
|
||||
false);
|
||||
ieee80211_flush_queues(local, NULL);
|
||||
|
||||
mutex_lock(&local->iflist_mtx);
|
||||
@ -182,7 +183,8 @@ void ieee80211_offchannel_return(struct ieee80211_local *local)
|
||||
mutex_unlock(&local->iflist_mtx);
|
||||
|
||||
ieee80211_wake_queues_by_reason(&local->hw, IEEE80211_MAX_QUEUE_MAP,
|
||||
IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL);
|
||||
IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL,
|
||||
false);
|
||||
}
|
||||
|
||||
void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc)
|
||||
|
Reference in New Issue
Block a user