mac80211: merge a fix for PS-Poll handling, refresh patches
authorFelix Fietkau <nbd@openwrt.org>
Fri, 12 Jul 2013 07:59:59 +0000 (07:59 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 12 Jul 2013 07:59:59 +0000 (07:59 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 37264

package/kernel/mac80211/patches/300-pending_work.patch
package/kernel/mac80211/patches/403-ath_regd_optional.patch
package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch

index 654d6aa..b35f5c6 100644 (file)
  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 &&
                    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 &&
                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:
index 77384b7..303c4d7 100644 (file)
@@ -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=
index b910830..f47c1a5 100644 (file)
  
 --- 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=