diff options
author | Alex Shi <alex.shi@linaro.org> | 2016-12-01 12:02:23 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2016-12-01 12:02:23 +0800 |
commit | a5e9874fc9e05e8471bfd58cabd75a3432d38ba6 (patch) | |
tree | ff0a388af912d9a20635ea8bae6f82e660dcf427 /net/mac80211/rx.c | |
parent | 0a2aefa1f71da3bb10634918c68f6fb0068c1052 (diff) | |
parent | 8576fa45c10e665bb72931a31461c7310f3c5494 (diff) |
Merge tag 'v4.1.36' into linux-linaro-lsk-v4.1lsk-v4.1-16.12
This is the 4.1.36 stable release
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 3073164a6fcf..06d1732e2094 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2179,16 +2179,22 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx) if (!(status->rx_flags & IEEE80211_RX_AMSDU)) return RX_CONTINUE; - if (ieee80211_has_a4(hdr->frame_control) && - rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && - !rx->sdata->u.vlan.sta) - return RX_DROP_UNUSABLE; + if (unlikely(ieee80211_has_a4(hdr->frame_control))) { + switch (rx->sdata->vif.type) { + case NL80211_IFTYPE_AP_VLAN: + if (!rx->sdata->u.vlan.sta) + return RX_DROP_UNUSABLE; + break; + case NL80211_IFTYPE_STATION: + if (!rx->sdata->u.mgd.use_4addr) + return RX_DROP_UNUSABLE; + break; + default: + return RX_DROP_UNUSABLE; + } + } - if (is_multicast_ether_addr(hdr->addr1) && - ((rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && - rx->sdata->u.vlan.sta) || - (rx->sdata->vif.type == NL80211_IFTYPE_STATION && - rx->sdata->u.mgd.use_4addr))) + if (is_multicast_ether_addr(hdr->addr1)) return RX_DROP_UNUSABLE; skb->dev = dev; |