mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
mac80211: update to version 4.19.32-1
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>
This commit is contained in:
parent
4ebd66d7a9
commit
3183430df4
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=4.19.23-1
|
PKG_VERSION:=4.19.32-1
|
||||||
PKG_RELEASE:=5
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.23/
|
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.32/
|
||||||
PKG_HASH:=703e940b542eb56067fcd847a7c69398dcc9829f34472647eea4211cb2ab3b83
|
PKG_HASH:=838db1565b54fe4bd1e769c54f30c65c9ea2fb5e99a0cddb7910561794ae317a
|
||||||
|
|
||||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
|||||||
@set -e ; test -f local-symbols || ( \
|
@set -e ; test -f local-symbols || ( \
|
||||||
echo "/--------------" ;\
|
echo "/--------------" ;\
|
||||||
echo "| You shouldn't run make in the backports tree, but only in" ;\
|
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 "| (that isn't currently running.)" ;\
|
||||||
echo "\\--" ;\
|
echo "\\--" ;\
|
||||||
false)
|
false)
|
||||||
@ -56,12 +56,13 @@
|
|||||||
- done \
|
- done \
|
||||||
- ) > Kconfig.kernel ;\
|
- ) > Kconfig.kernel ;\
|
||||||
- kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
|
- 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" != "" || echo "Kernel version parse failed!" ;\
|
||||||
- test "$$kver" != "" ;\
|
- test "$$kver" != "" ;\
|
||||||
- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
||||||
- kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
|
- 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 ;\
|
- print=0 ;\
|
||||||
- for v in $$kvers ; do \
|
- for v in $$kvers ; do \
|
||||||
- if [ "$$print" = "1" ] ; then \
|
- if [ "$$print" = "1" ] ; then \
|
||||||
@ -112,12 +113,13 @@
|
|||||||
+
|
+
|
||||||
+Kconfig.versions: Kconfig.kernel
|
+Kconfig.versions: Kconfig.kernel
|
||||||
+ @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
|
+ @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" != "" || echo "Kernel version parse failed!" ;\
|
||||||
+ test "$$kver" != "" ;\
|
+ test "$$kver" != "" ;\
|
||||||
+ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
+ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
||||||
+ kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
|
+ 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 ;\
|
+ print=0 ;\
|
||||||
+ for v in $$kvers ; do \
|
+ for v in $$kvers ; do \
|
||||||
+ if [ "$$print" = "1" ] ; then \
|
+ if [ "$$print" = "1" ] ; then \
|
||||||
|
@ -25,7 +25,7 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|||||||
|
|
||||||
--- a/include/net/cfg80211.h
|
--- a/include/net/cfg80211.h
|
||||||
+++ b/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...) \
|
#define wiphy_info(wiphy, format, args...) \
|
||||||
dev_info(&(wiphy)->dev, format, ##args)
|
dev_info(&(wiphy)->dev, format, ##args)
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
|
|||||||
|
|
||||||
--- a/net/mac80211/cfg.c
|
--- a/net/mac80211/cfg.c
|
||||||
+++ b/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;
|
sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF;
|
||||||
|
|
||||||
__sta_info_flush(sdata, true);
|
__sta_info_flush(sdata, true);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/mac80211/cfg.c
|
--- a/net/mac80211/cfg.c
|
||||||
+++ b/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
|
* the frames sent while scanning on other channel will be
|
||||||
* lost)
|
* lost)
|
||||||
*/
|
*/
|
||||||
|
@ -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;
|
|
||||||
|
|
@ -136,72 +136,82 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
- MCS_GROUP(1, 0, BW_20),
|
- MCS_GROUP(1, 0, BW_20),
|
||||||
- MCS_GROUP(2, 0, BW_20),
|
- MCS_GROUP(2, 0, BW_20),
|
||||||
- MCS_GROUP(3, 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(1, 1, BW_20),
|
||||||
- MCS_GROUP(2, 1, BW_20),
|
- MCS_GROUP(2, 1, BW_20),
|
||||||
- MCS_GROUP(3, 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(1, 0, BW_40),
|
||||||
- MCS_GROUP(2, 0, BW_40),
|
- MCS_GROUP(2, 0, BW_40),
|
||||||
- MCS_GROUP(3, 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(1, 1, BW_40),
|
||||||
- MCS_GROUP(2, 1, BW_40),
|
- MCS_GROUP(2, 1, BW_40),
|
||||||
- MCS_GROUP(3, 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,
|
||||||
+ CCK_GROUP(8),
|
-
|
||||||
|
|
||||||
- VHT_GROUP(1, 0, BW_20),
|
- VHT_GROUP(1, 0, BW_20),
|
||||||
- VHT_GROUP(2, 0, BW_20),
|
- VHT_GROUP(2, 0, BW_20),
|
||||||
- VHT_GROUP(3, 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(1, 1, BW_20),
|
||||||
- VHT_GROUP(2, 1, BW_20),
|
- VHT_GROUP(2, 1, BW_20),
|
||||||
- VHT_GROUP(3, 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(1, 0, BW_40),
|
||||||
- VHT_GROUP(2, 0, BW_40),
|
- VHT_GROUP(2, 0, BW_40),
|
||||||
- VHT_GROUP(3, 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(1, 1, BW_40),
|
||||||
- VHT_GROUP(2, 1, BW_40),
|
- VHT_GROUP(2, 1, BW_40),
|
||||||
- VHT_GROUP(3, 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(1, 0, BW_80),
|
||||||
- VHT_GROUP(2, 0, BW_80),
|
- VHT_GROUP(2, 0, BW_80),
|
||||||
- VHT_GROUP(3, 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(1, 1, BW_80),
|
||||||
- VHT_GROUP(2, 1, BW_80),
|
- VHT_GROUP(2, 1, BW_80),
|
||||||
- VHT_GROUP(3, 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(1, 1, BW_80, 4),
|
||||||
+ VHT_GROUP(2, 1, BW_80, 4),
|
+ VHT_GROUP(2, 1, BW_80, 4),
|
||||||
+ VHT_GROUP(3, 1, BW_80, 4),
|
+ VHT_GROUP(3, 1, BW_80, 4),
|
||||||
|
@ -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.
|
* The values are not guaranteed to be coherent with regard to each other, i.e.
|
||||||
--- a/net/mac80211/cfg.c
|
--- a/net/mac80211/cfg.c
|
||||||
+++ b/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))
|
if (ieee80211_vif_is_mesh(&sdata->vif))
|
||||||
sta_apply_mesh_params(local, sta, params);
|
sta_apply_mesh_params(local, sta, params);
|
||||||
|
|
||||||
@ -422,8 +422,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
schedule_order);
|
schedule_order);
|
||||||
+ if (!txqi)
|
+ if (!txqi)
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
|
+
|
||||||
- if (!txqi || txqi->schedule_round == local->schedule_round[ac])
|
|
||||||
+ if (txqi->txq.sta) {
|
+ if (txqi->txq.sta) {
|
||||||
+ struct sta_info *sta = container_of(txqi->txq.sta,
|
+ struct sta_info *sta = container_of(txqi->txq.sta,
|
||||||
+ struct sta_info, 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])
|
+ if (txqi->schedule_round == local->schedule_round[ac])
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
ret = dev_alloc_name(ndev, ndev->name);
|
ret = dev_alloc_name(ndev, ndev->name);
|
||||||
--- a/net/mac80211/mesh_pathtbl.c
|
--- a/net/mac80211/mesh_pathtbl.c
|
||||||
+++ b/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,
|
static void prepare_for_gate(struct sk_buff *skb, char *dst_addr,
|
||||||
struct mesh_path *gate_mpath)
|
struct mesh_path *gate_mpath)
|
||||||
{
|
{
|
||||||
@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
int tailroom = 0;
|
int tailroom = 0;
|
||||||
|
|
||||||
hdr = (struct ieee80211_hdr *) skb->data;
|
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)
|
if (sdata->crypto_tx_tailroom_needed_cnt)
|
||||||
tailroom = IEEE80211_ENCRYPT_TAILROOM;
|
tailroom = IEEE80211_ENCRYPT_TAILROOM;
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
sdata->encrypt_headroom,
|
sdata->encrypt_headroom,
|
||||||
tailroom, GFP_ATOMIC);
|
tailroom, GFP_ATOMIC);
|
||||||
if (!fwd_skb)
|
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;
|
return RX_DROP_MONITOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
void mesh_path_timer(struct timer_list *t)
|
void mesh_path_timer(struct timer_list *t)
|
||||||
--- a/net/mac80211/mesh_pathtbl.c
|
--- a/net/mac80211/mesh_pathtbl.c
|
||||||
+++ b/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;
|
struct mesh_path *mpath;
|
||||||
|
|
||||||
|
@ -65,14 +65,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
struct ieee80211_hdr *hdr;
|
struct ieee80211_hdr *hdr;
|
||||||
- bool enc_tailroom;
|
- bool enc_tailroom;
|
||||||
- int tail_need = 0;
|
- int tail_need = 0;
|
||||||
+ int head_need, head_max;
|
-
|
||||||
+ int tail_need, tail_max;
|
|
||||||
+ bool enc_tailroom = false;
|
|
||||||
|
|
||||||
- hdr = (struct ieee80211_hdr *) skb->data;
|
- hdr = (struct ieee80211_hdr *) skb->data;
|
||||||
- enc_tailroom = may_encrypt &&
|
- enc_tailroom = may_encrypt &&
|
||||||
- (sdata->crypto_tx_tailroom_needed_cnt ||
|
- (sdata->crypto_tx_tailroom_needed_cnt ||
|
||||||
- ieee80211_is_mgmt(hdr->frame_control));
|
- 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 &&
|
+ if (sdata && !hdr_len &&
|
||||||
+ !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) {
|
+ !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) {
|
||||||
+ hdr = (struct ieee80211_hdr *) skb->data;
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
||||||
@ -80,11 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
+ ieee80211_is_mgmt(hdr->frame_control));
|
+ ieee80211_is_mgmt(hdr->frame_control));
|
||||||
+ hdr_len += sdata->encrypt_headroom;
|
+ 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;
|
+ head_need = head_max = hdr_len;
|
||||||
+ tail_need = tail_max = 0;
|
+ tail_need = tail_max = 0;
|
||||||
+ if (!sdata) {
|
+ if (!sdata) {
|
||||||
@ -127,13 +129,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
- bool may_encrypt;
|
- bool may_encrypt;
|
||||||
-
|
-
|
||||||
- may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT);
|
- may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT);
|
||||||
-
|
|
||||||
- headroom = local->tx_headroom;
|
- headroom = local->tx_headroom;
|
||||||
- if (may_encrypt)
|
- if (may_encrypt)
|
||||||
- headroom += sdata->encrypt_headroom;
|
- headroom += sdata->encrypt_headroom;
|
||||||
- headroom -= skb_headroom(skb);
|
- headroom -= skb_headroom(skb);
|
||||||
- headroom = max_t(int, 0, headroom);
|
- headroom = max_t(int, 0, headroom);
|
||||||
|
-
|
||||||
- if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) {
|
- if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) {
|
||||||
+ if (ieee80211_skb_resize(sdata, skb, 0, 0)) {
|
+ if (ieee80211_skb_resize(sdata, skb, 0, 0)) {
|
||||||
ieee80211_free_txskb(&local->hw, skb);
|
ieee80211_free_txskb(&local->hw, skb);
|
||||||
|
@ -151,7 +151,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
- ret = IEEE80211_AC_BE;
|
- ret = IEEE80211_AC_BE;
|
||||||
- goto out;
|
- goto out;
|
||||||
- }
|
- }
|
||||||
-
|
+ ret = __ieee80211_select_queue(sdata, sta, skb);
|
||||||
|
|
||||||
- if (skb->protocol == sdata->control_port_protocol) {
|
- if (skb->protocol == sdata->control_port_protocol) {
|
||||||
- skb->priority = 7;
|
- skb->priority = 7;
|
||||||
- goto downgrade;
|
- goto downgrade;
|
||||||
@ -162,8 +163,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
- qos_map = rcu_dereference(sdata->qos_map);
|
- qos_map = rcu_dereference(sdata->qos_map);
|
||||||
- skb->priority = cfg80211_classify8021d(skb, qos_map ?
|
- skb->priority = cfg80211_classify8021d(skb, qos_map ?
|
||||||
- &qos_map->qos_map : NULL);
|
- &qos_map->qos_map : NULL);
|
||||||
+ ret = __ieee80211_select_queue(sdata, sta, skb);
|
-
|
||||||
|
|
||||||
- downgrade:
|
- downgrade:
|
||||||
- ret = ieee80211_downgrade_queue(sdata, sta, skb);
|
- ret = ieee80211_downgrade_queue(sdata, sta, skb);
|
||||||
- out:
|
- out:
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: Manikanta Pubbisetty <mpubbise@codeaurora.org>
|
|||||||
* control port protocol ethertype. The device also honours the
|
* control port protocol ethertype. The device also honours the
|
||||||
--- a/net/mac80211/util.c
|
--- a/net/mac80211/util.c
|
||||||
+++ b/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 */
|
/* Always allow software iftypes */
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
__NL80211_ATTR_AFTER_LAST,
|
__NL80211_ATTR_AFTER_LAST,
|
||||||
--- a/net/mac80211/cfg.c
|
--- a/net/mac80211/cfg.c
|
||||||
+++ b/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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@
|
|||||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||||
const u8 *addr)
|
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_wiphy_params = ieee80211_set_wiphy_params,
|
||||||
.set_tx_power = ieee80211_set_tx_power,
|
.set_tx_power = ieee80211_set_tx_power,
|
||||||
.get_tx_power = ieee80211_get_tx_power,
|
.get_tx_power = ieee80211_get_tx_power,
|
||||||
|
Loading…
Reference in New Issue
Block a user