aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-03-23 12:28:37 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-03-27 20:13:21 -0400
commit2a577d98712a284a612dd51d69db5cb989810dc2 (patch)
treec2e667d92d280d404dd964548aefedd43996645c /net/mac80211/ieee80211_i.h
parentf0e72851f7ad108fed20426b46a18ab5fcd5729f (diff)
mac80211: rework the pending packets code
The pending packets code is quite incomprehensible, uses memory barriers nobody really understands, etc. This patch reworks it entirely, using the queue spinlock, proper stop bits and the skb queues themselves to indicate whether packets are pending or not (rather than a separate variable like before). Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Reviewed-by: Luis R. Rodriguez <lrodriguez@atheros.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.h9
1 files changed, 2 insertions, 7 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 785f6363a6fc..6ce62e553dc2 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -184,10 +184,6 @@ struct ieee80211_rx_data {
184 u16 tkip_iv16; 184 u16 tkip_iv16;
185}; 185};
186 186
187struct ieee80211_tx_stored_packet {
188 struct sk_buff *skb;
189};
190
191struct beacon_data { 187struct beacon_data {
192 u8 *head, *tail; 188 u8 *head, *tail;
193 int head_len, tail_len; 189 int head_len, tail_len;
@@ -583,6 +579,7 @@ enum queue_stop_reason {
583 IEEE80211_QUEUE_STOP_REASON_CSA, 579 IEEE80211_QUEUE_STOP_REASON_CSA,
584 IEEE80211_QUEUE_STOP_REASON_AGGREGATION, 580 IEEE80211_QUEUE_STOP_REASON_AGGREGATION,
585 IEEE80211_QUEUE_STOP_REASON_SUSPEND, 581 IEEE80211_QUEUE_STOP_REASON_SUSPEND,
582 IEEE80211_QUEUE_STOP_REASON_PENDING,
586}; 583};
587 584
588struct ieee80211_master_priv { 585struct ieee80211_master_priv {
@@ -639,9 +636,7 @@ struct ieee80211_local {
639 struct sta_info *sta_hash[STA_HASH_SIZE]; 636 struct sta_info *sta_hash[STA_HASH_SIZE];
640 struct timer_list sta_cleanup; 637 struct timer_list sta_cleanup;
641 638
642 unsigned long queues_pending[BITS_TO_LONGS(IEEE80211_MAX_QUEUES)]; 639 struct sk_buff_head pending[IEEE80211_MAX_QUEUES];
643 unsigned long queues_pending_run[BITS_TO_LONGS(IEEE80211_MAX_QUEUES)];
644 struct ieee80211_tx_stored_packet pending_packet[IEEE80211_MAX_QUEUES];
645 struct tasklet_struct tx_pending_tasklet; 640 struct tasklet_struct tx_pending_tasklet;
646 641
647 /* number of interfaces with corresponding IFF_ flags */ 642 /* number of interfaces with corresponding IFF_ flags */