diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-08 16:15:38 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-08 16:47:38 -0500 |
commit | fe6c791570efe717946ea7b7dd50aec96b70d551 (patch) | |
tree | 1becb5e8aea7a9c9a7d78f987bd73b0a5d8ee434 /net/mac80211 | |
parent | f8bf5681cf15f77692c8ad8cb95d059ff7c622c9 (diff) | |
parent | f19872575ff7819a3723154657a497d9bca66b33 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
net/llc/af_llc.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 d2fcd22ab06..55337709de4 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -2245,6 +2245,10 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx) | |||
2245 | break; | 2245 | break; |
2246 | case cpu_to_le16(IEEE80211_STYPE_DEAUTH): | 2246 | case cpu_to_le16(IEEE80211_STYPE_DEAUTH): |
2247 | case cpu_to_le16(IEEE80211_STYPE_DISASSOC): | 2247 | case cpu_to_le16(IEEE80211_STYPE_DISASSOC): |
2248 | if (is_multicast_ether_addr(mgmt->da) && | ||
2249 | !is_broadcast_ether_addr(mgmt->da)) | ||
2250 | return RX_DROP_MONITOR; | ||
2251 | |||
2248 | /* process only for station */ | 2252 | /* process only for station */ |
2249 | if (sdata->vif.type != NL80211_IFTYPE_STATION) | 2253 | if (sdata->vif.type != NL80211_IFTYPE_STATION) |
2250 | return RX_DROP_MONITOR; | 2254 | return RX_DROP_MONITOR; |
@@ -2739,6 +2743,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2739 | 2743 | ||
2740 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) | 2744 | if (ieee80211_prepare_and_rx_handle(&rx, skb, true)) |
2741 | return; | 2745 | return; |
2746 | goto out; | ||
2742 | } | 2747 | } |
2743 | } | 2748 | } |
2744 | 2749 | ||
@@ -2778,6 +2783,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, | |||
2778 | return; | 2783 | return; |
2779 | } | 2784 | } |
2780 | 2785 | ||
2786 | out: | ||
2781 | dev_kfree_skb(skb); | 2787 | dev_kfree_skb(skb); |
2782 | } | 2788 | } |
2783 | 2789 | ||
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index e69483647f3..2ba74265682 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) { |