mac80211: update to wireless-testing+wireless-2.6 from 2010-01-13
authorFelix Fietkau <nbd@openwrt.org>
Fri, 15 Jan 2010 01:16:40 +0000 (01:16 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 15 Jan 2010 01:16:40 +0000 (01:16 +0000)
SVN-Revision: 19139

20 files changed:
package/mac80211/Makefile
package/mac80211/patches/001-disable_b44.patch
package/mac80211/patches/002-disable_rfkill.patch
package/mac80211/patches/003-disable_bt.patch
package/mac80211/patches/007-remove_misc_drivers.patch
package/mac80211/patches/009-remove_mac80211_module_dependence.patch
package/mac80211/patches/010-b43_config.patch
package/mac80211/patches/012-remove_rfkill.patch
package/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch
package/mac80211/patches/300-ath9k_fix_init_crash.patch [new file with mode: 0644]
package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch
package/mac80211/patches/510-ath9k_debugfs_chainmask.patch
package/mac80211/patches/520-ath9k_debugfs_regaccess.patch
package/mac80211/patches/530-mac80211_work_fix.patch [deleted file]
package/mac80211/patches/530-monitor_queue_select_fix.patch [new file with mode: 0644]
package/mac80211/patches/540-wds_assoc_dummyframe.patch [deleted file]
package/mac80211/patches/550-vlan_sta_lookup.patch [deleted file]
package/mac80211/patches/560-4addr_vlan_check.patch [deleted file]
package/mac80211/patches/570-monitor_queue_select_fix.patch [deleted file]

index 0f02b48356883f1c3a36558a3aeb162fe32810bf..b173300db930607f712e854dda065eecd65e95ef 100644 (file)
@@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=2010-01-11
+PKG_VERSION:=2010-01-13
 PKG_RELEASE:=1
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 #      http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
 #      http://wireless.kernel.org/download/compat-wireless-2.6
-PKG_MD5SUM:=78a36bb7d28be7028f640a10eaa4692b
+PKG_MD5SUM:=b773266f141a1a6349b6e09b84948f02
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
index 165e7283f48ff0125f85a40eb6f96d97a17e45bd..1a14a6d17e6cd0e00436f7b37628025c446e280f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -270,10 +270,10 @@ endif
+@@ -281,10 +281,10 @@ endif
  
  CONFIG_P54_PCI=m
  
index da07a76bd6ea461de000175572da9922ed9050a4..222cd9b544c1238c854518f348714a27fffd69b3 100644 (file)
@@ -1,7 +1,7 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -16,7 +16,7 @@ include $(KLIB_BUILD)/.config
- endif
+@@ -73,7 +73,7 @@ endif # build check
+ endif # kernel Makefile check
  
  # These both are needed by compat-wireless || compat-bluetooth so enable them
 - CONFIG_COMPAT_RFKILL=y
@@ -9,7 +9,7 @@
  
  ifeq ($(CONFIG_MAC80211),y)
  $(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
-@@ -463,8 +463,8 @@ endif
+@@ -474,8 +474,8 @@ endif
  # We need the backported rfkill module on kernel < 2.6.31.
  # In more recent kernel versions use the in kernel rfkill module.
  ifdef CONFIG_COMPAT_KERNEL_31
index c8ac124787ca652e1ad5b87c6c3cbce2dfa2c5ee..147450da7429ae915842e58cc4e423081323a62e 100644 (file)
@@ -1,13 +1,13 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -36,8 +36,8 @@ endif
+@@ -95,8 +95,8 @@ ifndef CONFIG_COMPAT_KERNEL_27
  ifeq ($(CONFIG_BT),y)
  # we'll ignore compiling bluetooth
  else
--CONFIG_COMPAT_BLUETOOTH=y
--CONFIG_COMPAT_BLUETOOTH_MODULES=m
+- CONFIG_COMPAT_BLUETOOTH=y
+- CONFIG_COMPAT_BLUETOOTH_MODULES=m
 +# CONFIG_COMPAT_BLUETOOTH=y
 +# CONFIG_COMPAT_BLUETOOTH_MODULES=m
  endif
+ endif # Kernel >= 2.6.26
  
- # We will warn when you don't have MQ support or NET_SCHED enabled.
index 0730e504fd8504cb30d4caffc3dbd955b23928f0..7a5b11566cfcfa566feae60b7e4ed9f24eefe64b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -303,10 +303,10 @@ CONFIG_PCI_ATMEL=m
+@@ -314,10 +314,10 @@ CONFIG_PCI_ATMEL=m
  CONFIG_MWL8K=m
  
  # Ethernet drivers go here
@@ -15,7 +15,7 @@
  
  endif
  ## end of PCI
-@@ -345,10 +345,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
+@@ -356,10 +356,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
  CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n
  CONFIG_USB_NET_COMPAT_CDCETHER=n
  else
index 6efd127d7ef5115d1bd2f8b0fd0c8dd9d5af1c5b..68420d8a2a48d5412ada7507595ffefc8db75f10 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -69,21 +69,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
+@@ -44,21 +44,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
  endif
  endif
  
index 4aafdf32d53a46263a46ce06fd608ce6a356a548..ed86f405412ae2bc1fa73251c12cdab24123964e 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -188,9 +188,9 @@ CONFIG_B43_HWRNG=y
+@@ -199,9 +199,9 @@ CONFIG_B43_HWRNG=y
  CONFIG_B43_PCI_AUTOSELECT=y
  CONFIG_B43_PCICORE_AUTOSELECT=y
  ifneq ($(CONFIG_PCMCIA),)
@@ -12,7 +12,7 @@
  CONFIG_B43_LEDS=y
  CONFIG_B43_PHY_LP=y
  # CONFIG_B43_DEBUG=y
-@@ -245,8 +245,8 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y
+@@ -256,8 +256,8 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y
  CONFIG_SSB_PCIHOST=y
  CONFIG_SSB_B43_PCI_BRIDGE=y
  ifneq ($(CONFIG_PCMCIA),)
index a47168a05cf5eb30db9b0f70e504dccd7315d629..ae80b6ef9d91a73f41181da9db81ded28d442db4 100644 (file)
@@ -26,7 +26,7 @@
        int     (*set_block)(void *data, bool blocked);
  };
  
--#if defined(CONFIG_RFKILL_BACKPORT) || defined(CONFIG_RFKILL_MODULE_BACKPORT)
+-#if defined(CONFIG_RFKILL_BACKPORT) || defined(CONFIG_RFKILL_BACKPORT_MODULE)
 +#if 0
  /**
   * rfkill_alloc - allocate rfkill structure
index 25e6f3ddd62cff66f70f19c35a3b575635e9293d..4f344697699e63ba5f652b4ec5e9d7b4ed7babbc 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath5k/reset.c
 +++ b/drivers/net/wireless/ath/ath5k/reset.c
-@@ -1357,10 +1357,18 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
+@@ -1360,10 +1360,18 @@ int ath5k_hw_reset(struct ath5k_hw *ah, 
         * guess we can tweak it and see how it goes ;-)
         */
        if (ah->ah_version != AR5K_AR5210) {
diff --git a/package/mac80211/patches/300-ath9k_fix_init_crash.patch b/package/mac80211/patches/300-ath9k_fix_init_crash.patch
new file mode 100644 (file)
index 0000000..8f3540b
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/drivers/net/wireless/ath/ath9k/ahb.c
++++ b/drivers/net/wireless/ath/ath9k/ahb.c
+@@ -121,6 +121,9 @@ static int ath_ahb_probe(struct platform
+       sc->mem = mem;
+       sc->irq = irq;
++      /* Will be cleared in ath9k_start() */
++      sc->sc_flags |= SC_OP_INVALID;
++
+       ret = request_irq(irq, ath_isr, IRQF_SHARED, "ath9k", sc);
+       if (ret) {
+               dev_err(&pdev->dev, "request_irq failed\n");
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -534,8 +534,6 @@ static int ath9k_init_softc(u16 devid, s
+       int ret = 0, i;
+       int csz = 0;
+-      sc->sc_flags |= SC_OP_INVALID;
+-
+       ah = kzalloc(sizeof(struct ath_hw), GFP_KERNEL);
+       if (!ah)
+               return -ENOMEM;
+--- a/drivers/net/wireless/ath/ath9k/pci.c
++++ b/drivers/net/wireless/ath/ath9k/pci.c
+@@ -202,6 +202,9 @@ static int ath_pci_probe(struct pci_dev 
+       sc->dev = &pdev->dev;
+       sc->mem = mem;
++      /* Will be cleared in ath9k_start() */
++      sc->sc_flags |= SC_OP_INVALID;
++
+       ret = request_irq(pdev->irq, ath_isr, IRQF_SHARED, "ath9k", sc);
+       if (ret) {
+               dev_err(&pdev->dev, "request_irq failed\n");
index a4af5c98dc81877880ef412ed7028bec61c7e724..96c22a0d0df1740cc1fcbcdb28257cb2272c3553 100644 (file)
@@ -1,8 +1,8 @@
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1103,6 +1103,9 @@ static void ath_unregister_led(struct at
+--- a/drivers/net/wireless/ath/ath9k/gpio.c
++++ b/drivers/net/wireless/ath/ath9k/gpio.c
+@@ -119,6 +119,9 @@ static void ath_unregister_led(struct at
  
static void ath_deinit_leds(struct ath_softc *sc)
+ void ath_deinit_leds(struct ath_softc *sc)
  {
 +      if (AR_SREV_9100(sc->sc_ah))
 +              return;
        ath_unregister_led(&sc->assoc_led);
        sc->sc_flags &= ~SC_OP_LED_ASSOCIATED;
        ath_unregister_led(&sc->tx_led);
-@@ -1121,6 +1124,9 @@ static void ath_init_leds(struct ath_sof
-       else
-               sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
+@@ -132,6 +135,9 @@ void ath_init_leds(struct ath_softc *sc)
+       char *trigger;
+       int ret;
  
 +      if (AR_SREV_9100(sc->sc_ah))
 +              return;
 +
-       /* Configure gpio 1 for output */
-       ath9k_hw_cfg_output(sc->sc_ah, sc->sc_ah->led_pin,
-                           AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
+       if (AR_SREV_9287(sc->sc_ah))
+               sc->sc_ah->led_pin = ATH_LED_PIN_9287;
+       else
index 6be78881447a23260963896773d0e997ec0438d9..c09935ee75b5c39938f6e54c29df6b2a55c0c983 100644 (file)
  #include "ath9k.h"
  #include "btcoex.h"
  
-@@ -1597,6 +1598,7 @@ static int ath_init_softc(u16 devid, str
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -531,6 +531,7 @@ static int ath9k_init_softc(u16 devid, s
  {
        struct ath_hw *ah = NULL;
        struct ath_common *common;
 +      struct ath9k_platform_data *pdata;
-       int r = 0, i;
+       int ret = 0, i;
        int csz = 0;
-       int qnum;
-@@ -1619,6 +1621,10 @@ static int ath_init_softc(u16 devid, str
  
-       ah->hw_version.devid = devid;
+@@ -542,6 +543,10 @@ static int ath9k_init_softc(u16 devid, s
        ah->hw_version.subsysid = subsysid;
+       sc->sc_ah = ah;
 +      pdata = (struct ath9k_platform_data *) sc->dev->platform_data;
 +      if (!pdata)
 +              ah->ah_flags |= AH_USE_EEPROM;
 +
-       sc->sc_ah = ah;
        common = ath9k_hw_common(ah);
+       common->ops = &ath9k_common_ops;
+       common->bus_ops = bus_ops;
index 157098a69d22918a9530f6e2df6217f2a068023b..7d043d693b70292c405801fe6e36706478a0c012 100644 (file)
@@ -91,7 +91,7 @@
  static ssize_t read_file_dma(struct file *file, char __user *user_buf,
                             size_t count, loff_t *ppos)
  {
-@@ -600,6 +684,16 @@ int ath9k_init_debug(struct ath_hw *ah)
+@@ -710,6 +794,16 @@ int ath9k_init_debug(struct ath_hw *ah)
                goto err;
  #endif
  
        sc->debug.debugfs_dma = debugfs_create_file("dma", S_IRUSR,
                                       sc->debug.debugfs_phy, sc, &fops_dma);
        if (!sc->debug.debugfs_dma)
-@@ -643,6 +737,8 @@ void ath9k_exit_debug(struct ath_hw *ah)
+@@ -760,6 +854,8 @@ void ath9k_exit_debug(struct ath_hw *ah)
        struct ath_common *common = ath9k_hw_common(ah);
        struct ath_softc *sc = (struct ath_softc *) common->priv;
  
 +      debugfs_remove(sc->debug.debugfs_tx_chainmask);
 +      debugfs_remove(sc->debug.debugfs_rx_chainmask);
+       debugfs_remove(sc->debug.debugfs_recv);
        debugfs_remove(sc->debug.debugfs_xmit);
        debugfs_remove(sc->debug.debugfs_wiphy);
-       debugfs_remove(sc->debug.debugfs_rcstat);
 --- a/drivers/net/wireless/ath/ath9k/debug.h
 +++ b/drivers/net/wireless/ath/ath9k/debug.h
-@@ -123,6 +123,8 @@ struct ath_stats {
+@@ -148,6 +148,8 @@ struct ath_stats {
  };
  
  struct ath9k_debug {
index b9fa0221d70b898ea075e71244b8be5a1dbbefda..02e4cac375a9c23e7eb09e777baffdc230b5a7eb 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/debug.c
 +++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -664,6 +664,86 @@ static const struct file_operations fops
+@@ -774,6 +774,86 @@ static const struct file_operations fops
        .owner = THIS_MODULE
  };
  
@@ -87,8 +87,8 @@
  int ath9k_init_debug(struct ath_hw *ah)
  {
        struct ath_common *common = ath9k_hw_common(ah);
-@@ -726,6 +806,17 @@ int ath9k_init_debug(struct ath_hw *ah)
-       if (!sc->debug.debugfs_xmit)
+@@ -843,6 +923,17 @@ int ath9k_init_debug(struct ath_hw *ah)
+       if (!sc->debug.debugfs_recv)
                goto err;
  
 +      sc->debug.regidx = 0;
        return 0;
  err:
        ath9k_exit_debug(ah);
-@@ -739,6 +830,8 @@ void ath9k_exit_debug(struct ath_hw *ah)
+@@ -856,6 +947,8 @@ void ath9k_exit_debug(struct ath_hw *ah)
  
        debugfs_remove(sc->debug.debugfs_tx_chainmask);
        debugfs_remove(sc->debug.debugfs_rx_chainmask);
 +      debugfs_remove(sc->debug.debugfs_regval);
 +      debugfs_remove(sc->debug.debugfs_regidx);
+       debugfs_remove(sc->debug.debugfs_recv);
        debugfs_remove(sc->debug.debugfs_xmit);
        debugfs_remove(sc->debug.debugfs_wiphy);
-       debugfs_remove(sc->debug.debugfs_rcstat);
 --- a/drivers/net/wireless/ath/ath9k/debug.h
 +++ b/drivers/net/wireless/ath/ath9k/debug.h
-@@ -132,6 +132,9 @@ struct ath9k_debug {
-       struct dentry *debugfs_rcstat;
+@@ -158,6 +158,9 @@ struct ath9k_debug {
        struct dentry *debugfs_wiphy;
        struct dentry *debugfs_xmit;
+       struct dentry *debugfs_recv;
 +      struct dentry *debugfs_regidx;
 +      struct dentry *debugfs_regval;
 +      u32 regidx;
diff --git a/package/mac80211/patches/530-mac80211_work_fix.patch b/package/mac80211/patches/530-mac80211_work_fix.patch
deleted file mode 100644 (file)
index 339a52d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/net/mac80211/scan.c
-+++ b/net/mac80211/scan.c
-@@ -284,6 +284,7 @@ void ieee80211_scan_completed(struct iee
-       ieee80211_mlme_notify_scan_completed(local);
-       ieee80211_ibss_notify_scan_completed(local);
-       ieee80211_mesh_notify_scan_completed(local);
-+      ieee80211_queue_work(&local->hw, &local->work_work);
- }
- EXPORT_SYMBOL(ieee80211_scan_completed);
---- a/net/mac80211/work.c
-+++ b/net/mac80211/work.c
-@@ -818,6 +818,7 @@ static void ieee80211_work_work(struct w
-                   wk->chan == local->tmp_channel &&
-                   wk->chan_type == local->tmp_channel_type) {
-                       wk->started = true;
-+                      wk->timeout = jiffies;
-               }
-               if (!wk->started && !local->tmp_channel) {
-@@ -935,6 +936,9 @@ void ieee80211_add_work(struct ieee80211
-       if (WARN_ON(!wk->done))
-               return;
-+      if (WARN_ON(!ieee80211_sdata_running(wk->sdata)))
-+              return;
-+
-       wk->started = false;
-       local = wk->sdata->local;
diff --git a/package/mac80211/patches/530-monitor_queue_select_fix.patch b/package/mac80211/patches/530-monitor_queue_select_fix.patch
new file mode 100644 (file)
index 0000000..a4fff50
--- /dev/null
@@ -0,0 +1,18 @@
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -697,10 +697,14 @@ static u16 ieee80211_monitor_select_queu
+       hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len));
+-      if (!ieee80211_is_data_qos(hdr->frame_control)) {
++      if (!ieee80211_is_data(hdr->frame_control)) {
+               skb->priority = 7;
+               return ieee802_1d_to_ac[skb->priority];
+       }
++      if (!ieee80211_is_data_qos(hdr->frame_control)) {
++              skb->priority = 0;
++              return ieee802_1d_to_ac[skb->priority];
++      }
+       p = ieee80211_get_qos_ctl(hdr);
+       skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;
diff --git a/package/mac80211/patches/540-wds_assoc_dummyframe.patch b/package/mac80211/patches/540-wds_assoc_dummyframe.patch
deleted file mode 100644 (file)
index 9efb3ac..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
---- a/net/mac80211/mlme.c
-+++ b/net/mac80211/mlme.c
-@@ -312,6 +312,38 @@ void ieee80211_send_nullfunc(struct ieee
-       ieee80211_tx_skb(sdata, skb);
- }
-+static void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local,
-+                                        struct ieee80211_sub_if_data *sdata)
-+{
-+      struct sk_buff *skb;
-+      struct ieee80211_hdr *nullfunc;
-+      __le16 fc;
-+
-+      if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION))
-+              return;
-+
-+      skb = dev_alloc_skb(local->hw.extra_tx_headroom + 30);
-+      if (!skb) {
-+              printk(KERN_DEBUG "%s: failed to allocate buffer for 4addr "
-+                     "nullfunc frame\n", sdata->name);
-+              return;
-+      }
-+      skb_reserve(skb, local->hw.extra_tx_headroom);
-+
-+      nullfunc = (struct ieee80211_hdr *) skb_put(skb, 30);
-+      memset(nullfunc, 0, 30);
-+      fc = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC |
-+                       IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS);
-+      nullfunc->frame_control = fc;
-+      memcpy(nullfunc->addr1, sdata->u.mgd.bssid, ETH_ALEN);
-+      memcpy(nullfunc->addr2, sdata->vif.addr, ETH_ALEN);
-+      memcpy(nullfunc->addr3, sdata->u.mgd.bssid, ETH_ALEN);
-+      memcpy(nullfunc->addr4, sdata->vif.addr, ETH_ALEN);
-+
-+      IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
-+      ieee80211_tx_skb(sdata, skb);
-+}
-+
- /* spectrum management related things */
- static void ieee80211_chswitch_work(struct work_struct *work)
- {
-@@ -1120,6 +1152,13 @@ static bool ieee80211_assoc_success(stru
-       ieee80211_set_associated(sdata, cbss, changed);
-       /*
-+       * If we're using 4-addr mode, let the AP know that we're
-+       * doing so, so that it can create the STA VLAN on its side
-+       */
-+      if (ifmgd->use_4addr)
-+              ieee80211_send_4addr_nullfunc(local, sdata);
-+
-+      /*
-        * Start timer to probe the connection to the AP now.
-        * Also start the timer that will detect beacon loss.
-        */
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -1111,6 +1111,18 @@ ieee80211_rx_h_sta_process(struct ieee80
-       if (ieee80211_is_nullfunc(hdr->frame_control) ||
-           ieee80211_is_qos_nullfunc(hdr->frame_control)) {
-               I802_DEBUG_INC(rx->local->rx_handlers_drop_nullfunc);
-+
-+              /*
-+               * If we receive a 4-addr nullfunc frame from a STA
-+               * that was not moved to a 4-addr STA vlan yet, drop
-+               * the frame to the monitor interface, to make sure
-+               * that hostapd sees it
-+               */
-+              if (ieee80211_has_a4(hdr->frame_control) &&
-+                  (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
-+                   (rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
-+                    !rx->sdata->u.vlan.sta)))
-+                      return RX_DROP_MONITOR;
-               /*
-                * Update counter and free packet here to avoid
-                * counting this as a dropped packed.
diff --git a/package/mac80211/patches/550-vlan_sta_lookup.patch b/package/mac80211/patches/550-vlan_sta_lookup.patch
deleted file mode 100644 (file)
index ad15ca9..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
---- a/net/mac80211/sta_info.c
-+++ b/net/mac80211/sta_info.c
-@@ -119,6 +119,27 @@ struct sta_info *sta_info_get(struct iee
-       return sta;
- }
-+/*
-+ * Get sta info either from the specified interface
-+ * or from one of its vlans
-+ */
-+struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata,
-+                                const u8 *addr)
-+{
-+      struct ieee80211_local *local = sdata->local;
-+      struct sta_info *sta;
-+
-+      sta = rcu_dereference(local->sta_hash[STA_HASH(addr)]);
-+      while (sta) {
-+              if ((sta->sdata == sdata ||
-+                   sta->sdata->bss == sdata->bss) &&
-+                  memcmp(sta->sta.addr, addr, ETH_ALEN) == 0)
-+                      break;
-+              sta = rcu_dereference(sta->hnext);
-+      }
-+      return sta;
-+}
-+
- struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata,
-                                    int idx)
- {
---- a/net/mac80211/sta_info.h
-+++ b/net/mac80211/sta_info.h
-@@ -408,6 +408,9 @@ static inline u32 get_sta_flags(struct s
- struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata,
-                             const u8 *addr);
-+struct sta_info *sta_info_get_bss(struct ieee80211_sub_if_data *sdata,
-+                                const u8 *addr);
-+
- static inline
- void for_each_sta_info_type_check(struct ieee80211_local *local,
-                                 const u8 *addr,
---- a/net/mac80211/cfg.c
-+++ b/net/mac80211/cfg.c
-@@ -148,7 +148,7 @@ static int ieee80211_add_key(struct wiph
-       rcu_read_lock();
-       if (mac_addr) {
--              sta = sta_info_get(sdata, mac_addr);
-+              sta = sta_info_get_bss(sdata, mac_addr);
-               if (!sta) {
-                       ieee80211_key_free(key);
-                       err = -ENOENT;
-@@ -179,7 +179,7 @@ static int ieee80211_del_key(struct wiph
-       if (mac_addr) {
-               ret = -ENOENT;
--              sta = sta_info_get(sdata, mac_addr);
-+              sta = sta_info_get_bss(sdata, mac_addr);
-               if (!sta)
-                       goto out_unlock;
-@@ -226,7 +226,7 @@ static int ieee80211_get_key(struct wiph
-       rcu_read_lock();
-       if (mac_addr) {
--              sta = sta_info_get(sdata, mac_addr);
-+              sta = sta_info_get_bss(sdata, mac_addr);
-               if (!sta)
-                       goto out;
-@@ -419,7 +419,7 @@ static int ieee80211_get_station(struct 
-       rcu_read_lock();
--      sta = sta_info_get(sdata, mac);
-+      sta = sta_info_get_bss(sdata, mac);
-       if (sta) {
-               ret = 0;
-               sta_set_sinfo(sta, sinfo);
-@@ -775,7 +775,7 @@ static int ieee80211_del_station(struct 
-       if (mac) {
-               rcu_read_lock();
--              sta = sta_info_get(sdata, mac);
-+              sta = sta_info_get_bss(sdata, mac);
-               if (!sta) {
-                       rcu_read_unlock();
-                       return -ENOENT;
-@@ -803,7 +803,7 @@ static int ieee80211_change_station(stru
-       rcu_read_lock();
--      sta = sta_info_get(sdata, mac);
-+      sta = sta_info_get_bss(sdata, mac);
-       if (!sta) {
-               rcu_read_unlock();
-               return -ENOENT;
diff --git a/package/mac80211/patches/560-4addr_vlan_check.patch b/package/mac80211/patches/560-4addr_vlan_check.patch
deleted file mode 100644 (file)
index 7079957..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -1051,8 +1051,11 @@ ieee80211_tx_prepare(struct ieee80211_su
-       hdr = (struct ieee80211_hdr *) skb->data;
--      if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
-+      if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
-               tx->sta = rcu_dereference(sdata->u.vlan.sta);
-+              if (!tx->sta && sdata->dev->ieee80211_ptr->use_4addr)
-+                      return TX_DROP;
-+      }
-       if (!tx->sta)
-               tx->sta = sta_info_get(sdata, hdr->addr1);
diff --git a/package/mac80211/patches/570-monitor_queue_select_fix.patch b/package/mac80211/patches/570-monitor_queue_select_fix.patch
deleted file mode 100644 (file)
index fc186c5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -696,10 +696,14 @@ static u16 ieee80211_monitor_select_queu
-       hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len));
--      if (!ieee80211_is_data_qos(hdr->frame_control)) {
-+      if (!ieee80211_is_data(hdr->frame_control)) {
-               skb->priority = 7;
-               return ieee802_1d_to_ac[skb->priority];
-       }
-+      if (!ieee80211_is_data_qos(hdr->frame_control)) {
-+              skb->priority = 0;
-+              return ieee802_1d_to_ac[skb->priority];
-+      }
-       p = ieee80211_get_qos_ctl(hdr);
-       skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;