diff options
Diffstat (limited to 'net/mac80211/rx.c')
| -rw-r--r-- | net/mac80211/rx.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 28cc494a774d..e48724a6725e 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
| @@ -4086,15 +4086,17 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
| 4086 | ieee80211_is_beacon(hdr->frame_control))) | 4086 | ieee80211_is_beacon(hdr->frame_control))) |
| 4087 | ieee80211_scan_rx(local, skb); | 4087 | ieee80211_scan_rx(local, skb); |
| 4088 | 4088 | ||
| 4089 | if (pubsta) { | 4089 | if (ieee80211_is_data(fc)) { |
| 4090 | rx.sta = container_of(pubsta, struct sta_info, sta); | ||
| 4091 | rx.sdata = rx.sta->sdata; | ||
| 4092 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) | ||
| 4093 | return; | ||
| 4094 | goto out; | ||
| 4095 | } else if (ieee80211_is_data(fc)) { | ||
| 4096 | struct sta_info *sta, *prev_sta; | 4090 | struct sta_info *sta, *prev_sta; |
| 4097 | 4091 | ||
| 4092 | if (pubsta) { | ||
| 4093 | rx.sta = container_of(pubsta, struct sta_info, sta); | ||
| 4094 | rx.sdata = rx.sta->sdata; | ||
| 4095 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) | ||
| 4096 | return; | ||
| 4097 | goto out; | ||
| 4098 | } | ||
| 4099 | |||
| 4098 | prev_sta = NULL; | 4100 | prev_sta = NULL; |
| 4099 | 4101 | ||
| 4100 | for_each_sta_info(local, hdr->addr2, sta, tmp) { | 4102 | for_each_sta_info(local, hdr->addr2, sta, tmp) { |
