diff options
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 29a582df6371..f59f6f51e39c 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -2513,10 +2513,10 @@ void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid) | |||
2513 | 2513 | ||
2514 | /* main receive path */ | 2514 | /* main receive path */ |
2515 | 2515 | ||
2516 | static int prepare_for_handlers(struct ieee80211_sub_if_data *sdata, | 2516 | static int prepare_for_handlers(struct ieee80211_rx_data *rx, |
2517 | struct ieee80211_rx_data *rx, | ||
2518 | struct ieee80211_hdr *hdr) | 2517 | struct ieee80211_hdr *hdr) |
2519 | { | 2518 | { |
2519 | struct ieee80211_sub_if_data *sdata = rx->sdata; | ||
2520 | struct sk_buff *skb = rx->skb; | 2520 | struct sk_buff *skb = rx->skb; |
2521 | struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); | 2521 | struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); |
2522 | u8 *bssid = ieee80211_get_bssid(hdr, skb->len, sdata->vif.type); | 2522 | u8 *bssid = ieee80211_get_bssid(hdr, skb->len, sdata->vif.type); |
@@ -2656,7 +2656,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2656 | rx.sdata = prev_sta->sdata; | 2656 | rx.sdata = prev_sta->sdata; |
2657 | 2657 | ||
2658 | rx.flags |= IEEE80211_RX_RA_MATCH; | 2658 | rx.flags |= IEEE80211_RX_RA_MATCH; |
2659 | prepares = prepare_for_handlers(rx.sdata, &rx, hdr); | 2659 | prepares = prepare_for_handlers(&rx, hdr); |
2660 | if (!prepares) | 2660 | if (!prepares) |
2661 | goto next_sta; | 2661 | goto next_sta; |
2662 | 2662 | ||
@@ -2690,7 +2690,7 @@ next_sta: | |||
2690 | rx.sdata = prev_sta->sdata; | 2690 | rx.sdata = prev_sta->sdata; |
2691 | 2691 | ||
2692 | rx.flags |= IEEE80211_RX_RA_MATCH; | 2692 | rx.flags |= IEEE80211_RX_RA_MATCH; |
2693 | prepares = prepare_for_handlers(rx.sdata, &rx, hdr); | 2693 | prepares = prepare_for_handlers(&rx, hdr); |
2694 | if (!prepares) | 2694 | if (!prepares) |
2695 | prev_sta = NULL; | 2695 | prev_sta = NULL; |
2696 | 2696 | ||
@@ -2733,15 +2733,15 @@ next_sta: | |||
2733 | } | 2733 | } |
2734 | 2734 | ||
2735 | rx.sta = sta_info_get_bss(prev, hdr->addr2); | 2735 | rx.sta = sta_info_get_bss(prev, hdr->addr2); |
2736 | rx.sdata = prev; | ||
2736 | 2737 | ||
2737 | rx.flags |= IEEE80211_RX_RA_MATCH; | 2738 | rx.flags |= IEEE80211_RX_RA_MATCH; |
2738 | prepares = prepare_for_handlers(prev, &rx, hdr); | 2739 | prepares = prepare_for_handlers(&rx, hdr); |
2739 | 2740 | ||
2740 | if (!prepares) | 2741 | if (!prepares) |
2741 | goto next; | 2742 | goto next; |
2742 | 2743 | ||
2743 | if (status->flag & RX_FLAG_MMIC_ERROR) { | 2744 | if (status->flag & RX_FLAG_MMIC_ERROR) { |
2744 | rx.sdata = prev; | ||
2745 | if (rx.flags & IEEE80211_RX_RA_MATCH) | 2745 | if (rx.flags & IEEE80211_RX_RA_MATCH) |
2746 | ieee80211_rx_michael_mic_report(hdr, | 2746 | ieee80211_rx_michael_mic_report(hdr, |
2747 | &rx); | 2747 | &rx); |
@@ -2768,15 +2768,15 @@ next: | |||
2768 | 2768 | ||
2769 | if (prev) { | 2769 | if (prev) { |
2770 | rx.sta = sta_info_get_bss(prev, hdr->addr2); | 2770 | rx.sta = sta_info_get_bss(prev, hdr->addr2); |
2771 | rx.sdata = prev; | ||
2771 | 2772 | ||
2772 | rx.flags |= IEEE80211_RX_RA_MATCH; | 2773 | rx.flags |= IEEE80211_RX_RA_MATCH; |
2773 | prepares = prepare_for_handlers(prev, &rx, hdr); | 2774 | prepares = prepare_for_handlers(&rx, hdr); |
2774 | 2775 | ||
2775 | if (!prepares) | 2776 | if (!prepares) |
2776 | prev = NULL; | 2777 | prev = NULL; |
2777 | 2778 | ||
2778 | if (prev && status->flag & RX_FLAG_MMIC_ERROR) { | 2779 | if (prev && status->flag & RX_FLAG_MMIC_ERROR) { |
2779 | rx.sdata = prev; | ||
2780 | if (rx.flags & IEEE80211_RX_RA_MATCH) | 2780 | if (rx.flags & IEEE80211_RX_RA_MATCH) |
2781 | ieee80211_rx_michael_mic_report(hdr, | 2781 | ieee80211_rx_michael_mic_report(hdr, |
2782 | &rx); | 2782 | &rx); |