diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-06-07 15:58:37 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-06-10 13:28:37 -0400 |
commit | 8f77f3849cc3ae2d6df9301785a3d316ea7d7ee1 (patch) | |
tree | 02143d1e81c85f64900546e3e9c2b820f72745d1 /include | |
parent | fc240e3fc5791c572402b0857948da7b1e68d77f (diff) |
mac80211: do not pass PS frames out of mac80211 again
In order to handle powersave frames properly we had needed
to pass these out to the device queues again, and introduce
the skb->requeue bit. This, however, also has unnecessary
overhead by needing to 'clean up' already tried frames, and
this clean-up code is also buggy when software encryption
is used.
Instead of sending the frames via the master netdev queue
again, simply put them into the pending queue. This also
fixes a problem where frames for that particular station
could be reordered when some were still on the software
queues and older ones are re-injected into the software
queue after them.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/skbuff.h | 4 | ||||
-rw-r--r-- | include/net/mac80211.h | 3 |
2 files changed, 3 insertions, 4 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index f1c93b878b3b..fa51293f2708 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -304,9 +304,6 @@ typedef unsigned char *sk_buff_data_t; | |||
304 | * @tc_verd: traffic control verdict | 304 | * @tc_verd: traffic control verdict |
305 | * @ndisc_nodetype: router type (from link layer) | 305 | * @ndisc_nodetype: router type (from link layer) |
306 | * @do_not_encrypt: set to prevent encryption of this frame | 306 | * @do_not_encrypt: set to prevent encryption of this frame |
307 | * @requeue: set to indicate that the wireless core should attempt | ||
308 | * a software retry on this frame if we failed to | ||
309 | * receive an ACK for it | ||
310 | * @dma_cookie: a cookie to one of several possible DMA operations | 307 | * @dma_cookie: a cookie to one of several possible DMA operations |
311 | * done by skb DMA functions | 308 | * done by skb DMA functions |
312 | * @secmark: security marking | 309 | * @secmark: security marking |
@@ -380,7 +377,6 @@ struct sk_buff { | |||
380 | #endif | 377 | #endif |
381 | #if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE) | 378 | #if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE) |
382 | __u8 do_not_encrypt:1; | 379 | __u8 do_not_encrypt:1; |
383 | __u8 requeue:1; | ||
384 | #endif | 380 | #endif |
385 | /* 0/13/14 bit hole */ | 381 | /* 0/13/14 bit hole */ |
386 | 382 | ||
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 17d61d19d912..c06104476973 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -239,6 +239,8 @@ struct ieee80211_bss_conf { | |||
239 | * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211, | 239 | * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211, |
240 | * used to indicate that a pending frame requires TX processing before | 240 | * used to indicate that a pending frame requires TX processing before |
241 | * it can be sent out. | 241 | * it can be sent out. |
242 | * @IEEE80211_TX_INTFL_RETRIED: completely internal to mac80211, | ||
243 | * used to indicate that a frame was already retried due to PS | ||
242 | */ | 244 | */ |
243 | enum mac80211_tx_control_flags { | 245 | enum mac80211_tx_control_flags { |
244 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), | 246 | IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), |
@@ -256,6 +258,7 @@ enum mac80211_tx_control_flags { | |||
256 | IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), | 258 | IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), |
257 | IEEE80211_TX_INTFL_RCALGO = BIT(13), | 259 | IEEE80211_TX_INTFL_RCALGO = BIT(13), |
258 | IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), | 260 | IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), |
261 | IEEE80211_TX_INTFL_RETRIED = BIT(15), | ||
259 | }; | 262 | }; |
260 | 263 | ||
261 | /** | 264 | /** |