diff options
author | John W. Linville <linville@tuxdriver.com> | 2010-12-02 15:46:37 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-02 15:46:37 -0500 |
commit | 09f921f83faa49cdea25abfb98c439c01526b89d (patch) | |
tree | 1e8ee5c8f14e0e57965eca81bc6725288fd3597b /net/mac80211 | |
parent | 4cebb34caa5122216a1e2451eae9e0fc47ec2589 (diff) | |
parent | d89197c7f34934fbb0f96d938a0d6cfe0b8bcb1c (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Conflicts:
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/rx.c | 6 | ||||
-rw-r--r-- | net/mac80211/tx.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index d83334bbb245..6289525c0998 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -2254,6 +2254,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) | |||
2254 | break; | 2254 | break; |
2255 | case cpu_to_le16(IEEE80211_STYPE_DEAUTH): | 2255 | case cpu_to_le16(IEEE80211_STYPE_DEAUTH): |
2256 | case cpu_to_le16(IEEE80211_STYPE_DISASSOC): | 2256 | case cpu_to_le16(IEEE80211_STYPE_DISASSOC): |
2257 | if (is_multicast_ether_addr(mgmt->da) && | ||
2258 | !is_broadcast_ether_addr(mgmt->da)) | ||
2259 | return RX_DROP_MONITOR; | ||
2260 | |||
2257 | /* process only for station */ | 2261 | /* process only for station */ |
2258 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | 2262 | if (sdata->vif.type != NL80211_IFTYPE_STATION) |
2259 | return RX_DROP_MONITOR; | 2263 | return RX_DROP_MONITOR; |
@@ -2747,6 +2751,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2747 | 2751 | ||
2748 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) | 2752 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) |
2749 | return; | 2753 | return; |
2754 | goto out; | ||
2750 | } | 2755 | } |
2751 | } | 2756 | } |
2752 | 2757 | ||
@@ -2786,6 +2791,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2786 | return; | 2791 | return; |
2787 | } | 2792 | } |
2788 | 2793 | ||
2794 | out: | ||
2789 | dev_kfree_skb(skb); | 2795 | dev_kfree_skb(skb); |
2790 | } | 2796 | } |
2791 | 2797 | ||
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index e69483647f33..2ba742656825 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1595,7 +1595,12 @@ static void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, | |||
1595 | list) { | 1595 | list) { |
1596 | if (!ieee80211_sdata_running(tmp_sdata)) | 1596 | if (!ieee80211_sdata_running(tmp_sdata)) |
1597 | continue; | 1597 | continue; |
1598 | if (tmp_sdata->vif.type != NL80211_IFTYPE_AP) | 1598 | if (tmp_sdata->vif.type == |
1599 | NL80211_IFTYPE_MONITOR || | ||
1600 | tmp_sdata->vif.type == | ||
1601 | NL80211_IFTYPE_AP_VLAN || | ||
1602 | tmp_sdata->vif.type == | ||
1603 | NL80211_IFTYPE_WDS) | ||
1599 | continue; | 1604 | continue; |
1600 | if (compare_ether_addr(tmp_sdata->vif.addr, | 1605 | if (compare_ether_addr(tmp_sdata->vif.addr, |
1601 | hdr->addr2) == 0) { | 1606 | hdr->addr2) == 0) { |