diff options
-rw-r--r-- | include/net/mac80211.h | 4 | ||||
-rw-r--r-- | net/mac80211/ieee80211_i.h | 3 | ||||
-rw-r--r-- | net/mac80211/rx.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 3754ea405c88..1d75b960da06 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -513,6 +513,9 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info) | |||
513 | * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index | 513 | * @RX_FLAG_HT: HT MCS was used and rate_idx is MCS index |
514 | * @RX_FLAG_40MHZ: HT40 (40 MHz) was used | 514 | * @RX_FLAG_40MHZ: HT40 (40 MHz) was used |
515 | * @RX_FLAG_SHORT_GI: Short guard interval was used | 515 | * @RX_FLAG_SHORT_GI: Short guard interval was used |
516 | * @RX_FLAG_INTERNAL_CMTR: set internally after frame was reported | ||
517 | * on cooked monitor to avoid double-reporting it for multiple | ||
518 | * virtual interfaces | ||
516 | */ | 519 | */ |
517 | enum mac80211_rx_flags { | 520 | enum mac80211_rx_flags { |
518 | RX_FLAG_MMIC_ERROR = 1<<0, | 521 | RX_FLAG_MMIC_ERROR = 1<<0, |
@@ -526,6 +529,7 @@ enum mac80211_rx_flags { | |||
526 | RX_FLAG_HT = 1<<9, | 529 | RX_FLAG_HT = 1<<9, |
527 | RX_FLAG_40MHZ = 1<<10, | 530 | RX_FLAG_40MHZ = 1<<10, |
528 | RX_FLAG_SHORT_GI = 1<<11, | 531 | RX_FLAG_SHORT_GI = 1<<11, |
532 | RX_FLAG_INTERNAL_CMTR = 1<<12, | ||
529 | }; | 533 | }; |
530 | 534 | ||
531 | /** | 535 | /** |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 04093e84ebd7..ba5d3637b956 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -163,8 +163,7 @@ typedef unsigned __bitwise__ ieee80211_rx_result; | |||
163 | /* frame is destined to interface currently processed (incl. multicast frames) */ | 163 | /* frame is destined to interface currently processed (incl. multicast frames) */ |
164 | #define IEEE80211_RX_RA_MATCH BIT(1) | 164 | #define IEEE80211_RX_RA_MATCH BIT(1) |
165 | #define IEEE80211_RX_AMSDU BIT(2) | 165 | #define IEEE80211_RX_AMSDU BIT(2) |
166 | #define IEEE80211_RX_CMNTR_REPORTED BIT(3) | 166 | #define IEEE80211_RX_FRAGMENTED BIT(3) |
167 | #define IEEE80211_RX_FRAGMENTED BIT(4) | ||
168 | 167 | ||
169 | struct ieee80211_rx_data { | 168 | struct ieee80211_rx_data { |
170 | struct sk_buff *skb; | 169 | struct sk_buff *skb; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 96f13ad05d3c..097bb0343b91 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1868,7 +1868,7 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx, | |||
1868 | struct net_device *prev_dev = NULL; | 1868 | struct net_device *prev_dev = NULL; |
1869 | struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); | 1869 | struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); |
1870 | 1870 | ||
1871 | if (rx->flags & IEEE80211_RX_CMNTR_REPORTED) | 1871 | if (status->flag & RX_FLAG_INTERNAL_CMTR) |
1872 | goto out_free_skb; | 1872 | goto out_free_skb; |
1873 | 1873 | ||
1874 | if (skb_headroom(skb) < sizeof(*rthdr) && | 1874 | if (skb_headroom(skb) < sizeof(*rthdr) && |
@@ -1929,7 +1929,7 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx, | |||
1929 | } else | 1929 | } else |
1930 | goto out_free_skb; | 1930 | goto out_free_skb; |
1931 | 1931 | ||
1932 | rx->flags |= IEEE80211_RX_CMNTR_REPORTED; | 1932 | status->flag |= RX_FLAG_INTERNAL_CMTR; |
1933 | return; | 1933 | return; |
1934 | 1934 | ||
1935 | out_free_skb: | 1935 | out_free_skb: |