mac80211: merge a fix for PS-Poll handling, refresh patches

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 37264
owl
Felix Fietkau 2013-07-12 07:59:59 +00:00
parent e389c2b410
commit f8543faec4
3 changed files with 22 additions and 5 deletions

View File

@ -196,7 +196,24 @@
static void static void
--- a/net/mac80211/rx.c --- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c +++ b/net/mac80211/rx.c
@@ -2369,6 +2369,7 @@ ieee80211_rx_h_action(struct ieee80211_r @@ -936,8 +936,14 @@ ieee80211_rx_h_check(struct ieee80211_rx
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb);
- /* Drop duplicate 802.11 retransmissions (IEEE 802.11 Chap. 9.2.9) */
- if (rx->sta && !is_multicast_ether_addr(hdr->addr1)) {
+ /*
+ * Drop duplicate 802.11 retransmissions
+ * (IEEE 802.11-2012: 9.3.2.10 "Duplicate detection and recovery")
+ */
+ if (rx->skb->len >= 24 && rx->sta &&
+ !ieee80211_is_ctl(hdr->frame_control) &&
+ !ieee80211_is_qos_nullfunc(hdr->frame_control) &&
+ !is_multicast_ether_addr(hdr->addr1)) {
if (unlikely(ieee80211_has_retry(hdr->frame_control) &&
rx->sta->last_seq_ctrl[rx->seqno_idx] ==
hdr->seq_ctrl)) {
@@ -2369,6 +2375,7 @@ ieee80211_rx_h_action(struct ieee80211_r
sdata->vif.type != NL80211_IFTYPE_MESH_POINT && sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
sdata->vif.type != NL80211_IFTYPE_AP_VLAN && sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
sdata->vif.type != NL80211_IFTYPE_AP && sdata->vif.type != NL80211_IFTYPE_AP &&
@ -204,7 +221,7 @@
sdata->vif.type != NL80211_IFTYPE_ADHOC) sdata->vif.type != NL80211_IFTYPE_ADHOC)
break; break;
@@ -2720,14 +2721,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ @@ -2720,14 +2727,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_
if (!ieee80211_vif_is_mesh(&sdata->vif) && if (!ieee80211_vif_is_mesh(&sdata->vif) &&
sdata->vif.type != NL80211_IFTYPE_ADHOC && sdata->vif.type != NL80211_IFTYPE_ADHOC &&
@ -222,7 +239,7 @@
break; break;
case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP): case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP): case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
@@ -3059,10 +3061,16 @@ static int prepare_for_handlers(struct i @@ -3059,10 +3067,16 @@ static int prepare_for_handlers(struct i
} }
break; break;
case NL80211_IFTYPE_WDS: case NL80211_IFTYPE_WDS:

View File

@ -58,7 +58,7 @@
---help--- ---help---
--- a/.local-symbols --- a/.local-symbols
+++ b/.local-symbols +++ b/.local-symbols
@@ -122,6 +122,7 @@ RTL8187_LEDS= @@ -123,6 +123,7 @@ RTL8187_LEDS=
ATH_COMMON= ATH_COMMON=
ATH_CARDS= ATH_CARDS=
ATH_DEBUG= ATH_DEBUG=

View File

@ -279,7 +279,7 @@
--- a/.local-symbols --- a/.local-symbols
+++ b/.local-symbols +++ b/.local-symbols
@@ -271,6 +271,7 @@ RT2X00_LIB_FIRMWARE= @@ -272,6 +272,7 @@ RT2X00_LIB_FIRMWARE=
RT2X00_LIB_CRYPTO= RT2X00_LIB_CRYPTO=
RT2X00_LIB_LEDS= RT2X00_LIB_LEDS=
RT2X00_LIB_DEBUGFS= RT2X00_LIB_DEBUGFS=