mac80211: update to version 4.19.32-1
authorHauke Mehrtens <hauke@hauke-m.de>
Thu, 28 Mar 2019 15:00:43 +0000 (16:00 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 6 Apr 2019 14:31:04 +0000 (16:31 +0200)
The removed patches are now integrated in the upstream kernel.
Refresh all patches on top of the new backports release.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
15 files changed:
package/kernel/mac80211/Makefile
package/kernel/mac80211/patches/ath/558-ath9k-only-mask-use_eeprom-on-of-noeeprom.patch [deleted file]
package/kernel/mac80211/patches/build/001-fix_build.patch
package/kernel/mac80211/patches/rt2x00/020-cfg80211-add-ratelimited-variants-of-err-and-warn.patch
package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch
package/kernel/mac80211/patches/subsys/210-ap_scan.patch
package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch [deleted file]
package/kernel/mac80211/patches/subsys/306-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch
package/kernel/mac80211/patches/subsys/322-mac80211-Add-airtime-accounting-and-scheduling-to-TX.patch
package/kernel/mac80211/patches/subsys/351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch
package/kernel/mac80211/patches/subsys/353-mac80211-mesh-drop-redundant-rcu_read_lock-unlock-ca.patch
package/kernel/mac80211/patches/subsys/357-mac80211-optimize-skb-resizing.patch
package/kernel/mac80211/patches/subsys/360-mac80211-when-using-iTXQ-select-the-queue-in-ieee802.patch
package/kernel/mac80211/patches/subsys/390-nl-mac-80211-allow-4addr-AP-operation-on-crypto-cont.patch
package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch

index d68738aca51ccb96770828cc14a4503267e64e5c..0db42aeb9a85ff1e672d12551f1bd4041a351483 100644 (file)
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=4.19.23-1
-PKG_RELEASE:=5
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.23/
-PKG_HASH:=703e940b542eb56067fcd847a7c69398dcc9829f34472647eea4211cb2ab3b83
+PKG_VERSION:=4.19.32-1
+PKG_RELEASE:=1
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.32/
+PKG_HASH:=838db1565b54fe4bd1e769c54f30c65c9ea2fb5e99a0cddb7910561794ae317a
 
 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
diff --git a/package/kernel/mac80211/patches/ath/558-ath9k-only-mask-use_eeprom-on-of-noeeprom.patch b/package/kernel/mac80211/patches/ath/558-ath9k-only-mask-use_eeprom-on-of-noeeprom.patch
deleted file mode 100644 (file)
index f0656de..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom
-
-ath9k_of_init() function[0] was initially written on the assumption that
-if someone had an explicit ath9k OF node that "there must be something
-wrong, why would someone add an OF node if everything is fine"[1]
-(Quoting Martin Blumenstingl)
-
-"it turns out it's not that simple. with your requirements I'm now aware
-of two use-cases where the current code in ath9k_of_init() doesn't work
-without modifications"[1]
-
-The "your requirements" Martin speaks of is the result of the fact that I
-have a device (PowerCloud Systems CR5000) that uses the EEPROM for
-caldata and firmware but for which the MAC address is take from the MTD
-"art" partition[2], or more succinctly:
-
-"some cards come with a physical EEPROM chip so "qca,no-eeprom" should not
-be set (your use-case). in this case AH_USE_EEPROM should be set (which
-is the default when there is no OF node)"[1]
-
-The other use case is:
-
-the firmware on some PowerMac G5 seems to add a OF node for the ath9k
-card automatically. depending on the EEPROM on the card AH_NO_EEP_SWAP
-should be unset (which is the default when there is no OF node). see [3]
-
-After this patch to ath9k_of_init() the new behavior will be:
-
-    if there's no OF node then everything is the same as before
-    if there's an empty OF node then ath9k will use the hardware EEPROM
-      (before ath9k would fail to initialize because no EEPROM data was
-      provided by userspace)
-    if there's an OF node with only a MAC address then ath9k will use
-      the MAC address and the hardware EEPROM (see the case above)
-    with "qca,no-eeprom" EEPROM data from userspace will be requested.
-      the behavior here will not change
-[1]
-
-Martin provides additional background on EEPROM swapping[1] which I have
-included in the patch annotation but not the commit message.
-
-Thanks to Christian Lampartar <chunkeey@gmail.com> for all his help on
-troubleshooting this issue and the basis for this patch.
-
-Fixes: 138b41253d9c ("ath9k: parse the device configuration from an OF node")
-
-[0]https://elixir.bootlin.com/linux/v4.20-rc7/source/drivers/net/wireless/ath/ath9k/init.c#L615
-[1]https://github.com/openwrt/openwrt/pull/1645#issuecomment-448027058
-[2]https://github.com/openwrt/openwrt/pull/1613
-[3]https://patchwork.kernel.org/patch/10241731/
-
-Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -642,15 +642,15 @@ static int ath9k_of_init(struct ath_soft
-               ret = ath9k_eeprom_request(sc, eeprom_name);
-               if (ret)
-                       return ret;
-+
-+              ah->ah_flags &= ~AH_USE_EEPROM;
-+              ah->ah_flags |= AH_NO_EEP_SWAP;
-       }
-       mac = of_get_mac_address(np);
-       if (mac)
-               ether_addr_copy(common->macaddr, mac);
--      ah->ah_flags &= ~AH_USE_EEPROM;
--      ah->ah_flags |= AH_NO_EEP_SWAP;
--
-       return 0;
- }
index 9e272e90af0fb9e13df125bc4a9645de9ce47ec7..e57ca190e40109beb89043c01565b9a0cb03b8eb 100644 (file)
@@ -27,7 +27,7 @@
        @set -e ; test -f local-symbols || (                                            \
        echo "/--------------"                                                          ;\
        echo "| You shouldn't run make in the backports tree, but only in"              ;\
-@@ -60,57 +62,61 @@ mrproper:
+@@ -60,58 +62,62 @@ mrproper:
        echo "| (that isn't currently running.)"                                        ;\
        echo "\\--"                                                                     ;\
        false)
 -                      done                                                            \
 -              ) > Kconfig.kernel                                                      ;\
 -              kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion |   \
--                      sed 's/^\(\([3-4]\|2\.6\)\.[0-9]\+\).*/\1/;t;d')                ;\
+-                      sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d')                ;\
 -              test "$$kver" != "" || echo "Kernel version parse failed!"              ;\
 -              test "$$kver" != ""                                                     ;\
 -              kvers="$$(seq 14 39 | sed 's/^/2.6./')"                                 ;\
 -              kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')"                            ;\
--              kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')"                            ;\
+-              kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')"                            ;\
+-              kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')"                            ;\
 -              print=0                                                                 ;\
 -              for v in $$kvers ; do                                                   \
 -                      if [ "$$print" = "1" ] ; then                                   \
 +
 +Kconfig.versions: Kconfig.kernel
 +      @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion |  \
-+              sed 's/^\(\([3-4]\|2\.6\)\.[0-9]\+\).*/\1/;t;d')                ;\
++              sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d')                ;\
 +      test "$$kver" != "" || echo "Kernel version parse failed!"              ;\
 +      test "$$kver" != ""                                                     ;\
 +      kvers="$$(seq 14 39 | sed 's/^/2.6./')"                                 ;\
 +      kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')"                            ;\
-+      kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')"                            ;\
++      kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')"                            ;\
++      kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')"                            ;\
 +      print=0                                                                 ;\
 +      for v in $$kvers ; do                                                   \
 +              if [ "$$print" = "1" ] ; then                                   \
index ace01bb9be129c1b2ae37a17ba2e76490ec1663c..bea18844897450615bc244d9fc9aac89f05b2dd6 100644 (file)
@@ -25,7 +25,7 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
 
 --- a/include/net/cfg80211.h
 +++ b/include/net/cfg80211.h
-@@ -6588,6 +6588,11 @@ int cfg80211_external_auth_request(struc
+@@ -6597,6 +6597,11 @@ int cfg80211_external_auth_request(struc
  #define wiphy_info(wiphy, format, args...)                    \
        dev_info(&(wiphy)->dev, format, ##args)
  
index 4630274cb47d28684223e413a18834be356654fb..6775884a3400a36245e9edba14b59d8b055c9ade 100644 (file)
@@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
 
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -1063,7 +1063,6 @@ static int ieee80211_stop_ap(struct wiph
+@@ -1067,7 +1067,6 @@ static int ieee80211_stop_ap(struct wiph
        sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF;
  
        __sta_info_flush(sdata, true);
index 174096f5eaff652bc5ec60490f8902540dbd9149..fcc173da696c736f89c83dcb46267eefca2f2076 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -2229,7 +2229,7 @@ static int ieee80211_scan(struct wiphy *
+@@ -2237,7 +2237,7 @@ static int ieee80211_scan(struct wiphy *
                 * the  frames sent while scanning on other channel will be
                 * lost)
                 */
diff --git a/package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch b/package/kernel/mac80211/patches/subsys/302-mac80211-allocate-tailroom-for-forwarded-mesh-packet.patch
deleted file mode 100644 (file)
index 6db41da..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Fri, 22 Feb 2019 13:21:15 +0100
-Subject: [PATCH] mac80211: allocate tailroom for forwarded mesh packets
-
-Forwarded packets enter the tx path through ieee80211_add_pending_skb,
-which skips the ieee80211_skb_resize call.
-Fixes WARN_ON in ccmp_encrypt_skb and resulting packet loss.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -2598,6 +2598,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
-       struct ieee80211_sub_if_data *sdata = rx->sdata;
-       struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
-       u16 ac, q, hdrlen;
-+      int tailroom = 0;
-       hdr = (struct ieee80211_hdr *) skb->data;
-       hdrlen = ieee80211_hdrlen(hdr->frame_control);
-@@ -2684,8 +2685,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
-       if (!ifmsh->mshcfg.dot11MeshForwarding)
-               goto out;
-+      if (sdata->crypto_tx_tailroom_needed_cnt)
-+              tailroom = IEEE80211_ENCRYPT_TAILROOM;
-+
-       fwd_skb = skb_copy_expand(skb, local->tx_headroom +
--                                     sdata->encrypt_headroom, 0, GFP_ATOMIC);
-+                                     sdata->encrypt_headroom,
-+                                tailroom, GFP_ATOMIC);
-       if (!fwd_skb)
-               goto out;
index fa51f1be7ec3a73d469aa7b6d8690789673853a7..02a0ca0a52b3d8501dc505bddd4a797ea50a339a 100644 (file)
@@ -136,72 +136,82 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -      MCS_GROUP(1, 0, BW_20),
 -      MCS_GROUP(2, 0, BW_20),
 -      MCS_GROUP(3, 0, BW_20),
-+      MCS_GROUP(1, 0, BW_20, 5),
-+      MCS_GROUP(2, 0, BW_20, 4),
-+      MCS_GROUP(3, 0, BW_20, 4),
+-
 -      MCS_GROUP(1, 1, BW_20),
 -      MCS_GROUP(2, 1, BW_20),
 -      MCS_GROUP(3, 1, BW_20),
-+      MCS_GROUP(1, 1, BW_20, 5),
-+      MCS_GROUP(2, 1, BW_20, 4),
-+      MCS_GROUP(3, 1, BW_20, 4),
+-
 -      MCS_GROUP(1, 0, BW_40),
 -      MCS_GROUP(2, 0, BW_40),
 -      MCS_GROUP(3, 0, BW_40),
-+      MCS_GROUP(1, 0, BW_40, 4),
-+      MCS_GROUP(2, 0, BW_40, 4),
-+      MCS_GROUP(3, 0, BW_40, 4),
+-
 -      MCS_GROUP(1, 1, BW_40),
 -      MCS_GROUP(2, 1, BW_40),
 -      MCS_GROUP(3, 1, BW_40),
-+      MCS_GROUP(1, 1, BW_40, 4),
-+      MCS_GROUP(2, 1, BW_40, 4),
-+      MCS_GROUP(3, 1, BW_40, 4),
+-
 -      CCK_GROUP,
-+      CCK_GROUP(8),
+-
 -      VHT_GROUP(1, 0, BW_20),
 -      VHT_GROUP(2, 0, BW_20),
 -      VHT_GROUP(3, 0, BW_20),
-+      VHT_GROUP(1, 0, BW_20, 5),
-+      VHT_GROUP(2, 0, BW_20, 4),
-+      VHT_GROUP(3, 0, BW_20, 4),
+-
 -      VHT_GROUP(1, 1, BW_20),
 -      VHT_GROUP(2, 1, BW_20),
 -      VHT_GROUP(3, 1, BW_20),
-+      VHT_GROUP(1, 1, BW_20, 5),
-+      VHT_GROUP(2, 1, BW_20, 4),
-+      VHT_GROUP(3, 1, BW_20, 4),
+-
 -      VHT_GROUP(1, 0, BW_40),
 -      VHT_GROUP(2, 0, BW_40),
 -      VHT_GROUP(3, 0, BW_40),
-+      VHT_GROUP(1, 0, BW_40, 4),
-+      VHT_GROUP(2, 0, BW_40, 4),
-+      VHT_GROUP(3, 0, BW_40, 4),
+-
 -      VHT_GROUP(1, 1, BW_40),
 -      VHT_GROUP(2, 1, BW_40),
 -      VHT_GROUP(3, 1, BW_40),
-+      VHT_GROUP(1, 1, BW_40, 4),
-+      VHT_GROUP(2, 1, BW_40, 4),
-+      VHT_GROUP(3, 1, BW_40, 4),
+-
 -      VHT_GROUP(1, 0, BW_80),
 -      VHT_GROUP(2, 0, BW_80),
 -      VHT_GROUP(3, 0, BW_80),
-+      VHT_GROUP(1, 0, BW_80, 4),
-+      VHT_GROUP(2, 0, BW_80, 4),
-+      VHT_GROUP(3, 0, BW_80, 4),
+-
 -      VHT_GROUP(1, 1, BW_80),
 -      VHT_GROUP(2, 1, BW_80),
 -      VHT_GROUP(3, 1, BW_80),
++      MCS_GROUP(1, 0, BW_20, 5),
++      MCS_GROUP(2, 0, BW_20, 4),
++      MCS_GROUP(3, 0, BW_20, 4),
++
++      MCS_GROUP(1, 1, BW_20, 5),
++      MCS_GROUP(2, 1, BW_20, 4),
++      MCS_GROUP(3, 1, BW_20, 4),
++
++      MCS_GROUP(1, 0, BW_40, 4),
++      MCS_GROUP(2, 0, BW_40, 4),
++      MCS_GROUP(3, 0, BW_40, 4),
++
++      MCS_GROUP(1, 1, BW_40, 4),
++      MCS_GROUP(2, 1, BW_40, 4),
++      MCS_GROUP(3, 1, BW_40, 4),
++
++      CCK_GROUP(8),
++
++      VHT_GROUP(1, 0, BW_20, 5),
++      VHT_GROUP(2, 0, BW_20, 4),
++      VHT_GROUP(3, 0, BW_20, 4),
++
++      VHT_GROUP(1, 1, BW_20, 5),
++      VHT_GROUP(2, 1, BW_20, 4),
++      VHT_GROUP(3, 1, BW_20, 4),
++
++      VHT_GROUP(1, 0, BW_40, 4),
++      VHT_GROUP(2, 0, BW_40, 4),
++      VHT_GROUP(3, 0, BW_40, 4),
++
++      VHT_GROUP(1, 1, BW_40, 4),
++      VHT_GROUP(2, 1, BW_40, 4),
++      VHT_GROUP(3, 1, BW_40, 4),
++
++      VHT_GROUP(1, 0, BW_80, 4),
++      VHT_GROUP(2, 0, BW_80, 4),
++      VHT_GROUP(3, 0, BW_80, 4),
++
 +      VHT_GROUP(1, 1, BW_80, 4),
 +      VHT_GROUP(2, 1, BW_80, 4),
 +      VHT_GROUP(3, 1, BW_80, 4),
index b0050606144f64fb006b427d72f09290220e69eb..d4176eb491451b3b7b324dde5984a29fa145bab2 100644 (file)
@@ -125,7 +125,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
   * The values are not guaranteed to be coherent with regard to each other, i.e.
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -1430,6 +1430,9 @@ static int sta_apply_parameters(struct i
+@@ -1434,6 +1434,9 @@ static int sta_apply_parameters(struct i
        if (ieee80211_vif_is_mesh(&sdata->vif))
                sta_apply_mesh_params(local, sta, params);
  
@@ -422,8 +422,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
                                        schedule_order);
 +      if (!txqi)
 +              return NULL;
--      if (!txqi || txqi->schedule_round == local->schedule_round[ac])
++
 +      if (txqi->txq.sta) {
 +              struct sta_info *sta = container_of(txqi->txq.sta,
 +                                              struct sta_info, sta);
@@ -437,7 +436,8 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
 +              }
 +      }
 +
-+
+-      if (!txqi || txqi->schedule_round == local->schedule_round[ac])
 +      if (txqi->schedule_round == local->schedule_round[ac])
                return NULL;
  
index b45675b5590677a76c16ef94b2f8b01a747fdbd2..d8dbecca1b3c040a0ecc5437722fce2782602e99 100644 (file)
@@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                ret = dev_alloc_name(ndev, ndev->name);
 --- a/net/mac80211/mesh_pathtbl.c
 +++ b/net/mac80211/mesh_pathtbl.c
-@@ -103,13 +103,15 @@ void mesh_path_assign_nexthop(struct mes
+@@ -105,13 +105,15 @@ void mesh_path_assign_nexthop(struct mes
  static void prepare_for_gate(struct sk_buff *skb, char *dst_addr,
                             struct mesh_path *gate_mpath)
  {
@@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        int tailroom = 0;
  
        hdr = (struct ieee80211_hdr *) skb->data;
-@@ -2688,7 +2688,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
+@@ -2690,7 +2690,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
        if (sdata->crypto_tx_tailroom_needed_cnt)
                tailroom = IEEE80211_ENCRYPT_TAILROOM;
  
@@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                                       sdata->encrypt_headroom,
                                  tailroom, GFP_ATOMIC);
        if (!fwd_skb)
-@@ -2720,6 +2722,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
+@@ -2722,6 +2724,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
                return RX_DROP_MONITOR;
        }
  
index ae5be18170a5b47baec5ad9d2fad809e9ca7882c..86300be4edbe4f943abe2054466ad38cd53eed6d 100644 (file)
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  void mesh_path_timer(struct timer_list *t)
 --- a/net/mac80211/mesh_pathtbl.c
 +++ b/net/mac80211/mesh_pathtbl.c
-@@ -217,7 +217,7 @@ static struct mesh_path *mpath_lookup(st
+@@ -219,7 +219,7 @@ static struct mesh_path *mpath_lookup(st
  {
        struct mesh_path *mpath;
  
index 8fd85fedcc9e3f420a2161a82afcf6526c67abe0..98b23422653d271122e42c191bb0fd36edff5282 100644 (file)
@@ -65,14 +65,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        struct ieee80211_hdr *hdr;
 -      bool enc_tailroom;
 -      int tail_need = 0;
-+      int head_need, head_max;
-+      int tail_need, tail_max;
-+      bool enc_tailroom = false;
+-
 -      hdr = (struct ieee80211_hdr *) skb->data;
 -      enc_tailroom = may_encrypt &&
 -                     (sdata->crypto_tx_tailroom_needed_cnt ||
 -                      ieee80211_is_mgmt(hdr->frame_control));
+-
+-      if (enc_tailroom) {
+-              tail_need = IEEE80211_ENCRYPT_TAILROOM;
+-              tail_need -= skb_tailroom(skb);
+-              tail_need = max_t(int, tail_need, 0);
++      int head_need, head_max;
++      int tail_need, tail_max;
++      bool enc_tailroom = false;
++
 +      if (sdata && !hdr_len &&
 +          !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) {
 +              hdr = (struct ieee80211_hdr *) skb->data;
@@ -80,11 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +                              ieee80211_is_mgmt(hdr->frame_control));
 +              hdr_len += sdata->encrypt_headroom;
 +      }
--      if (enc_tailroom) {
--              tail_need = IEEE80211_ENCRYPT_TAILROOM;
--              tail_need -= skb_tailroom(skb);
--              tail_need = max_t(int, tail_need, 0);
++
 +      head_need = head_max = hdr_len;
 +      tail_need = tail_max = 0;
 +      if (!sdata) {
@@ -127,13 +129,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -      bool may_encrypt;
 -
 -      may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT);
--
 -      headroom = local->tx_headroom;
 -      if (may_encrypt)
 -              headroom += sdata->encrypt_headroom;
 -      headroom -= skb_headroom(skb);
 -      headroom = max_t(int, 0, headroom);
+-
 -      if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) {
 +      if (ieee80211_skb_resize(sdata, skb, 0, 0)) {
                ieee80211_free_txskb(&local->hw, skb);
index 03d115071ec71f8ed39f48d03b84e25ab0db51f9..bb3af7317a5aeab88db49452a084b66910610146 100644 (file)
@@ -151,7 +151,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -              ret = IEEE80211_AC_BE;
 -              goto out;
 -      }
--
++      ret = __ieee80211_select_queue(sdata, sta, skb);
 -      if (skb->protocol == sdata->control_port_protocol) {
 -              skb->priority = 7;
 -              goto downgrade;
@@ -162,8 +163,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -      qos_map = rcu_dereference(sdata->qos_map);
 -      skb->priority = cfg80211_classify8021d(skb, qos_map ?
 -                                             &qos_map->qos_map : NULL);
-+      ret = __ieee80211_select_queue(sdata, sta, skb);
+-
 - downgrade:
 -      ret = ieee80211_downgrade_queue(sdata, sta, skb);
 - out:
index 4c5b403dc4b19cefe5e8c0a475af9114de2fee7e..2940615354464315dc9f55d02d47c670b79cb8c0 100644 (file)
@@ -50,7 +50,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
   *    control port protocol ethertype. The device also honours the
 --- a/net/mac80211/util.c
 +++ b/net/mac80211/util.c
-@@ -3622,7 +3622,9 @@ int ieee80211_check_combinations(struct
+@@ -3626,7 +3626,9 @@ int ieee80211_check_combinations(struct
        }
  
        /* Always allow software iftypes */
index 56c6c8a79e5b0d1c58096b891df19950e7642670..4dcd7b5fccbcaad466ec92e73dd94b177a835837 100644 (file)
@@ -57,7 +57,7 @@
        __NL80211_ATTR_AFTER_LAST,
 --- a/net/mac80211/cfg.c
 +++ b/net/mac80211/cfg.c
-@@ -2497,6 +2497,19 @@ static int ieee80211_get_tx_power(struct
+@@ -2505,6 +2505,19 @@ static int ieee80211_get_tx_power(struct
        return 0;
  }
  
@@ -77,7 +77,7 @@
  static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
                                  const u8 *addr)
  {
-@@ -3864,6 +3877,7 @@ const struct cfg80211_ops mac80211_confi
+@@ -3872,6 +3885,7 @@ const struct cfg80211_ops mac80211_confi
        .set_wiphy_params = ieee80211_set_wiphy_params,
        .set_tx_power = ieee80211_set_tx_power,
        .get_tx_power = ieee80211_get_tx_power,