diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-06-10 04:21:41 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-14 15:39:27 -0400 |
commit | a6a67db2bc89d2b1ff07e0817f11235c20d2c329 (patch) | |
tree | 1096c42ede83af4dbae34387246f91c0d6649baf /net/mac80211/ieee80211_i.h | |
parent | 5d22c89b9bea17a0e48e7534a9b237885e2c0809 (diff) |
mac80211: refcount aggregation queue stop
mac80211 currently maintains the ampdu_lock to
avoid starting a queue due to one aggregation
session while another aggregation session needs
the queue stopped.
We can do better, however, and instead refcount
the queue stops for this particular purpose,
thus removing the need for the lock. This will
help making ampdu_action able to sleep.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index a3ae51308039..8a91b5d83870 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -723,13 +723,7 @@ struct ieee80211_local { | |||
723 | struct sk_buff_head pending[IEEE80211_MAX_QUEUES]; | 723 | struct sk_buff_head pending[IEEE80211_MAX_QUEUES]; |
724 | struct tasklet_struct tx_pending_tasklet; | 724 | struct tasklet_struct tx_pending_tasklet; |
725 | 725 | ||
726 | /* | 726 | atomic_t agg_queue_stop[IEEE80211_MAX_QUEUES]; |
727 | * This lock is used to prevent concurrent A-MPDU | ||
728 | * session start/stop processing, this thus also | ||
729 | * synchronises the ->ampdu_action() callback to | ||
730 | * drivers and limits it to one at a time. | ||
731 | */ | ||
732 | spinlock_t ampdu_lock; | ||
733 | 727 | ||
734 | /* number of interfaces with corresponding IFF_ flags */ | 728 | /* number of interfaces with corresponding IFF_ flags */ |
735 | atomic_t iff_allmultis, iff_promiscs; | 729 | atomic_t iff_allmultis, iff_promiscs; |