aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 75c4e9743fb4..7b4d4d46843b 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3271,33 +3271,32 @@ ieee80211_sta_rx_scan(struct net_device *dev, struct sk_buff *skb,
3271 struct ieee80211_rx_status *rx_status) 3271 struct ieee80211_rx_status *rx_status)
3272{ 3272{
3273 struct ieee80211_mgmt *mgmt; 3273 struct ieee80211_mgmt *mgmt;
3274 u16 fc; 3274 __le16 fc;
3275 3275
3276 if (skb->len < 2) 3276 if (skb->len < 2)
3277 return RX_DROP_UNUSABLE; 3277 return RX_DROP_UNUSABLE;
3278 3278
3279 mgmt = (struct ieee80211_mgmt *) skb->data; 3279 mgmt = (struct ieee80211_mgmt *) skb->data;
3280 fc = le16_to_cpu(mgmt->frame_control); 3280 fc = mgmt->frame_control;
3281 3281
3282 if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) 3282 if (ieee80211_is_ctl(fc))
3283 return RX_CONTINUE; 3283 return RX_CONTINUE;
3284 3284
3285 if (skb->len < 24) 3285 if (skb->len < 24)
3286 return RX_DROP_MONITOR; 3286 return RX_DROP_MONITOR;
3287 3287
3288 if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) { 3288 if (ieee80211_is_probe_resp(fc)) {
3289 if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_RESP) { 3289 ieee80211_rx_mgmt_probe_resp(dev, mgmt, skb->len, rx_status);
3290 ieee80211_rx_mgmt_probe_resp(dev, mgmt, 3290 dev_kfree_skb(skb);
3291 skb->len, rx_status); 3291 return RX_QUEUED;
3292 dev_kfree_skb(skb);
3293 return RX_QUEUED;
3294 } else if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BEACON) {
3295 ieee80211_rx_mgmt_beacon(dev, mgmt, skb->len,
3296 rx_status);
3297 dev_kfree_skb(skb);
3298 return RX_QUEUED;
3299 }
3300 } 3292 }
3293
3294 if (ieee80211_is_beacon(fc)) {
3295 ieee80211_rx_mgmt_beacon(dev, mgmt, skb->len, rx_status);
3296 dev_kfree_skb(skb);
3297 return RX_QUEUED;
3298 }
3299
3301 return RX_CONTINUE; 3300 return RX_CONTINUE;
3302} 3301}
3303 3302
@@ -3875,7 +3874,7 @@ static void ieee80211_send_nullfunc(struct ieee80211_local *local,
3875{ 3874{
3876 struct sk_buff *skb; 3875 struct sk_buff *skb;
3877 struct ieee80211_hdr *nullfunc; 3876 struct ieee80211_hdr *nullfunc;
3878 u16 fc; 3877 __le16 fc;
3879 3878
3880 skb = dev_alloc_skb(local->hw.extra_tx_headroom + 24); 3879 skb = dev_alloc_skb(local->hw.extra_tx_headroom + 24);
3881 if (!skb) { 3880 if (!skb) {
@@ -3887,11 +3886,11 @@ static void ieee80211_send_nullfunc(struct ieee80211_local *local,
3887 3886
3888 nullfunc = (struct ieee80211_hdr *) skb_put(skb, 24); 3887 nullfunc = (struct ieee80211_hdr *) skb_put(skb, 24);
3889 memset(nullfunc, 0, 24); 3888 memset(nullfunc, 0, 24);
3890 fc = IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC | 3889 fc = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC |
3891 IEEE80211_FCTL_TODS; 3890 IEEE80211_FCTL_TODS);
3892 if (powersave) 3891 if (powersave)
3893 fc |= IEEE80211_FCTL_PM; 3892 fc |= cpu_to_le16(IEEE80211_FCTL_PM);
3894 nullfunc->frame_control = cpu_to_le16(fc); 3893 nullfunc->frame_control = fc;
3895 memcpy(nullfunc->addr1, sdata->u.sta.bssid, ETH_ALEN); 3894 memcpy(nullfunc->addr1, sdata->u.sta.bssid, ETH_ALEN);
3896 memcpy(nullfunc->addr2, sdata->dev->dev_addr, ETH_ALEN); 3895 memcpy(nullfunc->addr2, sdata->dev->dev_addr, ETH_ALEN);
3897 memcpy(nullfunc->addr3, sdata->u.sta.bssid, ETH_ALEN); 3896 memcpy(nullfunc->addr3, sdata->u.sta.bssid, ETH_ALEN);