From 34740cc7752a90bba6dfd6f46254386e78ac7d28 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 12 Jul 2013 07:59:59 +0000 Subject: [PATCH 1/1] mac80211: merge a fix for PS-Poll handling, refresh patches Signed-off-by: Felix Fietkau SVN-Revision: 37264 --- .../mac80211/patches/300-pending_work.patch | 23 ++++++++++++++++--- .../patches/403-ath_regd_optional.patch | 2 +- .../603-rt2x00-introduce-rt2x00eeprom.patch | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/package/kernel/mac80211/patches/300-pending_work.patch b/package/kernel/mac80211/patches/300-pending_work.patch index 654d6aabe8..b35f5c6036 100644 --- a/package/kernel/mac80211/patches/300-pending_work.patch +++ b/package/kernel/mac80211/patches/300-pending_work.patch @@ -196,7 +196,24 @@ static void --- a/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_AP_VLAN && sdata->vif.type != NL80211_IFTYPE_AP && @@ -204,7 +221,7 @@ sdata->vif.type != NL80211_IFTYPE_ADHOC) 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) && sdata->vif.type != NL80211_IFTYPE_ADHOC && @@ -222,7 +239,7 @@ break; case cpu_to_le16(IEEE80211_STYPE_ASSOC_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; case NL80211_IFTYPE_WDS: diff --git a/package/kernel/mac80211/patches/403-ath_regd_optional.patch b/package/kernel/mac80211/patches/403-ath_regd_optional.patch index 77384b7fb6..303c4d7792 100644 --- a/package/kernel/mac80211/patches/403-ath_regd_optional.patch +++ b/package/kernel/mac80211/patches/403-ath_regd_optional.patch @@ -58,7 +58,7 @@ ---help--- --- a/.local-symbols +++ b/.local-symbols -@@ -122,6 +122,7 @@ RTL8187_LEDS= +@@ -123,6 +123,7 @@ RTL8187_LEDS= ATH_COMMON= ATH_CARDS= ATH_DEBUG= diff --git a/package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch index b910830dea..f47c1a5321 100644 --- a/package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch +++ b/package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch @@ -279,7 +279,7 @@ --- a/.local-symbols +++ b/.local-symbols -@@ -271,6 +271,7 @@ RT2X00_LIB_FIRMWARE= +@@ -272,6 +272,7 @@ RT2X00_LIB_FIRMWARE= RT2X00_LIB_CRYPTO= RT2X00_LIB_LEDS= RT2X00_LIB_DEBUGFS= -- 2.30.2