aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-09-24 06:38:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-09-27 15:57:54 -0400
commit554891e63a29af35cc6bb403ef34e319518114d0 (patch)
tree2fdabf08455ea34697a853b3616cb92d9ef5b173 /include/net/mac80211.h
parent4080c7cdc23f26c6e6166a70f50fa43814552d81 (diff)
mac80211: move packet flags into packet
commit 8c0c709eea5cbab97fb464cd68b06f24acc58ee1 Author: Johannes Berg <johannes@sipsolutions.net> Date: Wed Nov 25 17:46:15 2009 +0100 mac80211: move cmntr flag out of rx flags moved the CMNTR flag into the skb RX flags for some aggregation cleanups, but this was wrong since the optimisation this flag tried to make requires that it is kept across the processing of multiple interfaces -- which isn't true for flags in the skb. The patch not only broke the optimisation, it also introduced a bug: under some (common!) circumstances the flag will be set on an already freed skb! However, investigating this in more detail, I found that most of the flags that we set should be per packet, _except_ for this one, due to a-MPDU processing. Additionally, the flags used for processing (currently just this one) need to be reset before processing a new packet. Since we haven't actually seen bugs reported as a result of the wrong flags handling (which is not too surprising -- the only real bug case I can come up with is an a-MSDU contained in an a-MPDU), I'll make a different fix for rc. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 73469d8b64bb..fe8b9dae4dee 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -581,9 +581,6 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
581 * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index 581 * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index
582 * @RX_FLAG_40MHZ: HT40 (40 MHz) was used 582 * @RX_FLAG_40MHZ: HT40 (40 MHz) was used
583 * @RX_FLAG_SHORT_GI: Short guard interval was used 583 * @RX_FLAG_SHORT_GI: Short guard interval was used
584 * @RX_FLAG_INTERNAL_CMTR: set internally after frame was reported
585 * on cooked monitor to avoid double-reporting it for multiple
586 * virtual interfaces
587 */ 584 */
588enum mac80211_rx_flags { 585enum mac80211_rx_flags {
589 RX_FLAG_MMIC_ERROR = 1<<0, 586 RX_FLAG_MMIC_ERROR = 1<<0,
@@ -597,7 +594,6 @@ enum mac80211_rx_flags {
597 RX_FLAG_HT = 1<<9, 594 RX_FLAG_HT = 1<<9,
598 RX_FLAG_40MHZ = 1<<10, 595 RX_FLAG_40MHZ = 1<<10,
599 RX_FLAG_SHORT_GI = 1<<11, 596 RX_FLAG_SHORT_GI = 1<<11,
600 RX_FLAG_INTERNAL_CMTR = 1<<12,
601}; 597};
602 598
603/** 599/**
@@ -618,6 +614,7 @@ enum mac80211_rx_flags {
618 * @rate_idx: index of data rate into band's supported rates or MCS index if 614 * @rate_idx: index of data rate into band's supported rates or MCS index if
619 * HT rates are use (RX_FLAG_HT) 615 * HT rates are use (RX_FLAG_HT)
620 * @flag: %RX_FLAG_* 616 * @flag: %RX_FLAG_*
617 * @rx_flags: internal RX flags for mac80211
621 */ 618 */
622struct ieee80211_rx_status { 619struct ieee80211_rx_status {
623 u64 mactime; 620 u64 mactime;
@@ -627,6 +624,7 @@ struct ieee80211_rx_status {
627 int antenna; 624 int antenna;
628 int rate_idx; 625 int rate_idx;
629 int flag; 626 int flag;
627 unsigned int rx_flags;
630}; 628};
631 629
632/** 630/**