mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
mac80211: update to latest HEAD
There was a bad patch, causing tx bcast to not work some times. Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
From 379e136c94ecb35b984e3ac7cc7ef493b60cb1b6 Mon Sep 17 00:00:00 2001
|
||||
From 5d5d811e392f9d04933b839e391ccebbfc59037a Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Sat, 4 Sep 2021 05:47:27 +0200
|
||||
Subject: [PATCH 18/27] mac80211: update to latest HEAD
|
||||
Subject: [PATCH 01/54] mac80211: update to latest HEAD
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
@@ -11,6 +11,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
.../mac80211/files/lib/netifd/mac80211.sh | 36 -
|
||||
.../files/lib/netifd/wireless/mac80211.sh | 184 ++-
|
||||
.../mac80211/files/lib/wifi/mac80211.sh | 110 +-
|
||||
.../patches/ath/120-owl-loader-compat.patch | 53 -
|
||||
.../patches/ath/402-ath_regd_optional.patch | 2 +-
|
||||
.../080-ath10k_thermal_config.patch | 2 +-
|
||||
...21-ath10k_init_devices_synchronously.patch | 0
|
||||
@@ -20,6 +21,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
...75-ath10k-use-tpt-trigger-by-default.patch | 0
|
||||
...980-ath10k-fix-max-antenna-gain-unit.patch | 0
|
||||
...-power-reduction-for-US-regulatory-d.patch | 0
|
||||
...h10k-Try-to-get-mac-address-from-dts.patch | 42 +
|
||||
.../201-ath5k-WAR-for-AR71xx-PCI-bug.patch | 0
|
||||
.../411-ath5k_allow_adhoc_and_ap.patch | 0
|
||||
.../420-ath5k_disable_fast_cc.patch | 0
|
||||
@@ -55,6 +57,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
.../552-ath9k-ahb_of.patch} | 0
|
||||
.../553-ath9k_of_gpio_mask.patch | 0
|
||||
.../602-rt2x00-introduce-rt2x00eeprom.patch | 2 +-
|
||||
...07-rt2x00-add_platform_data_mac_addr.patch | 11 +-
|
||||
.../100-remove-cryptoapi-dependencies.patch | 699 ---------
|
||||
.../patches/subsys/130-disable-fils.patch | 32 -
|
||||
...aes-cmac-switch-to-shash-CMAC-driver.patch | 230 ---
|
||||
@@ -62,15 +65,19 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
...320-mac80211_hwsim-add-6GHz-channels.patch | 123 ++
|
||||
...211_hwsim-make-6-GHz-channels-usable.patch | 74 +
|
||||
...-remove-legacy-minstrel-rate-control.patch | 2 +-
|
||||
...te-control-support-for-encap-offload.patch | 43 +-
|
||||
...introduce-aql_enable-node-in-debugfs.patch | 111 ++
|
||||
...ange-struct-txq_info-for-fewer-holes.patch | 39 +
|
||||
...to-a-virtual-time-based-airtime-sche.patch | 1277 +++++++++++++++++
|
||||
...bling-4-address-mode-on-a-sta-vif-af.patch | 72 +
|
||||
...on-API-to-configure-SAR-power-limita.patch | 398 +++++
|
||||
...mac80211-add-ieee80211_set_sar_specs.patch | 51 +
|
||||
...eck-per-vif-offload_flags-in-Tx-path.patch | 26 +
|
||||
.../500-mac80211_configure_antenna_gain.patch | 16 +-
|
||||
64 files changed, 2420 insertions(+), 1087 deletions(-)
|
||||
...the-dst-buffer-to-of_get_mac_address.patch | 237 +++
|
||||
70 files changed, 2755 insertions(+), 1164 deletions(-)
|
||||
delete mode 100644 package/kernel/mac80211/files/lib/netifd/mac80211.sh
|
||||
delete mode 100644 package/kernel/mac80211/patches/ath/120-owl-loader-compat.patch
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/080-ath10k_thermal_config.patch (97%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/921-ath10k_init_devices_synchronously.patch (100%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/922-ath10k-increase-rx-buffer-size-to-2048.patch (100%)
|
||||
@@ -79,6 +86,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/975-ath10k-use-tpt-trigger-by-default.patch (100%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/980-ath10k-fix-max-antenna-gain-unit.patch (100%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath10k}/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch (100%)
|
||||
create mode 100644 package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch
|
||||
rename package/kernel/mac80211/patches/{ath => ath5k}/201-ath5k-WAR-for-AR71xx-PCI-bug.patch (100%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath5k}/411-ath5k_allow_adhoc_and_ap.patch (100%)
|
||||
rename package/kernel/mac80211/patches/{ath => ath5k}/420-ath5k_disable_fast_cc.patch (100%)
|
||||
@@ -125,6 +133,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
create mode 100644 package/kernel/mac80211/patches/subsys/383-mac80211-fix-enabling-4-address-mode-on-a-sta-vif-af.patch
|
||||
create mode 100644 package/kernel/mac80211/patches/subsys/384-nl80211-add-common-API-to-configure-SAR-power-limita.patch
|
||||
create mode 100644 package/kernel/mac80211/patches/subsys/385-mac80211-add-ieee80211_set_sar_specs.patch
|
||||
create mode 100644 package/kernel/mac80211/patches/subsys/386-mac80211-check-per-vif-offload_flags-in-Tx-path.patch
|
||||
create mode 100644 package/kernel/mac80211/patches/subsys/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
|
||||
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
|
||||
index dd9ec172ca..dd39c2d069 100644
|
||||
@@ -821,6 +831,65 @@ index 3e99f06693..6aa46b0c74 100644
|
||||
set wireless.radio${devidx}.disabled=1
|
||||
|
||||
set wireless.default_radio${devidx}=wifi-iface
|
||||
diff --git a/package/kernel/mac80211/patches/ath/120-owl-loader-compat.patch b/package/kernel/mac80211/patches/ath/120-owl-loader-compat.patch
|
||||
deleted file mode 100644
|
||||
index d1d6c9e2e3..0000000000
|
||||
--- a/package/kernel/mac80211/patches/ath/120-owl-loader-compat.patch
|
||||
+++ /dev/null
|
||||
@@ -1,53 +0,0 @@
|
||||
-From: Christian Lamparter <chunkeey@gmail.com>
|
||||
-Date: Sat, 16 Nov 2019 19:25:24 +0100
|
||||
-Subject: [PATCH] owl_loader: compatibility patch
|
||||
-
|
||||
-This patch includes OpenWrt specific changes that are
|
||||
-not included in the upstream owl-loader.
|
||||
-
|
||||
-This includes a platform data handling changes for ar71xx.
|
||||
-
|
||||
-Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
-
|
||||
---- a/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
-+++ b/drivers/net/wireless/ath/ath9k/ath9k_pci_owl_loader.c
|
||||
-@@ -103,6 +103,7 @@ static void owl_fw_cb(const struct firmw
|
||||
- {
|
||||
- struct pci_dev *pdev = (struct pci_dev *)context;
|
||||
- struct owl_ctx *ctx = (struct owl_ctx *)pci_get_drvdata(pdev);
|
||||
-+ struct ath9k_platform_data *pdata = dev_get_platdata(&pdev->dev);
|
||||
- struct pci_bus *bus;
|
||||
-
|
||||
- complete(&ctx->eeprom_load);
|
||||
-@@ -118,6 +119,16 @@ static void owl_fw_cb(const struct firmw
|
||||
- goto release;
|
||||
- }
|
||||
-
|
||||
-+ if (pdata) {
|
||||
-+ memcpy(pdata->eeprom_data, fw->data, fw->size);
|
||||
-+
|
||||
-+ /*
|
||||
-+ * eeprom has been successfully loaded - pass the data to ath9k
|
||||
-+ * but remove the eeprom_name, so it doesn't try to load it too.
|
||||
-+ */
|
||||
-+ pdata->eeprom_name = NULL;
|
||||
-+ }
|
||||
-+
|
||||
- if (ath9k_pci_fixup(pdev, (const u16 *)fw->data, fw->size))
|
||||
- goto release;
|
||||
-
|
||||
-@@ -137,8 +148,14 @@ release:
|
||||
- static const char *owl_get_eeprom_name(struct pci_dev *pdev)
|
||||
- {
|
||||
- struct device *dev = &pdev->dev;
|
||||
-+ struct ath9k_platform_data *pdata;
|
||||
- char *eeprom_name;
|
||||
-
|
||||
-+ /* try the existing platform data first */
|
||||
-+ pdata = dev_get_platdata(dev);
|
||||
-+ if (pdata && pdata->eeprom_name)
|
||||
-+ return pdata->eeprom_name;
|
||||
-+
|
||||
- dev_dbg(dev, "using auto-generated eeprom filename\n");
|
||||
-
|
||||
- eeprom_name = devm_kzalloc(dev, EEPROM_FILENAME_LEN, GFP_KERNEL);
|
||||
diff --git a/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch b/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch
|
||||
index bf87d3551a..3c9180b113 100644
|
||||
--- a/package/kernel/mac80211/patches/ath/402-ath_regd_optional.patch
|
||||
@@ -890,6 +959,54 @@ diff --git a/package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-redu
|
||||
similarity index 100%
|
||||
rename from package/kernel/mac80211/patches/ath/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch
|
||||
rename to package/kernel/mac80211/patches/ath10k/981-ath10k-adjust-tx-power-reduction-for-US-regulatory-d.patch
|
||||
diff --git a/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch
|
||||
new file mode 100644
|
||||
index 0000000000..5f427f6b8f
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mac80211/patches/ath10k/984-ath10k-Try-to-get-mac-address-from-dts.patch
|
||||
@@ -0,0 +1,42 @@
|
||||
+From 22fb5991a44c78ff18ec0082dc90c809356eb893 Mon Sep 17 00:00:00 2001
|
||||
+From: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
+Date: Sun, 27 Sep 2020 19:23:35 +0200
|
||||
+Subject: [PATCH 1/2] ath10k: Try to get mac-address from dts
|
||||
+
|
||||
+Most of embedded device that have the ath10k wifi integrated store the
|
||||
+mac-address in nvmem partitions. Try to fetch the mac-address using the
|
||||
+standard 'of_get_mac_address' than in all the check also try to fetch the
|
||||
+address using the nvmem api searching for a defined 'mac-address' cell.
|
||||
+Mac-address defined in the dts have priority than any other address found.
|
||||
+
|
||||
+Tested-on: QCA9984 hw1.0 PCI 10.4
|
||||
+
|
||||
+Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
+---
|
||||
+ drivers/net/wireless/ath/ath10k/core.c | 10 ++++++++++
|
||||
+ 1 file changed, 10 insertions(+)
|
||||
+
|
||||
+diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
|
||||
+index 5f4e12196..9ed7b9883 100644
|
||||
+--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
++++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
+@@ -8,6 +8,7 @@
|
||||
+ #include <linux/module.h>
|
||||
+ #include <linux/firmware.h>
|
||||
+ #include <linux/of.h>
|
||||
++#include <linux/of_net.h>
|
||||
+ #include <linux/property.h>
|
||||
+ #include <linux/dmi.h>
|
||||
+ #include <linux/ctype.h>
|
||||
+@@ -3062,6 +3068,8 @@ static int ath10k_core_probe_fw(struct ath10k *ar)
|
||||
+
|
||||
+ device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
|
||||
+
|
||||
++ of_get_mac_address(ar->dev->of_node, ar->mac_addr);
|
||||
++
|
||||
+ ret = ath10k_core_init_firmware_features(ar);
|
||||
+ if (ret) {
|
||||
+ ath10k_err(ar, "fatal problem with firmware features: %d\n",
|
||||
+--
|
||||
+2.27.0
|
||||
+
|
||||
diff --git a/package/kernel/mac80211/patches/ath/201-ath5k-WAR-for-AR71xx-PCI-bug.patch b/package/kernel/mac80211/patches/ath5k/201-ath5k-WAR-for-AR71xx-PCI-bug.patch
|
||||
similarity index 100%
|
||||
rename from package/kernel/mac80211/patches/ath/201-ath5k-WAR-for-AR71xx-PCI-bug.patch
|
||||
@@ -1050,6 +1167,35 @@ index e74d9a9aa0..1c52132da6 100644
|
||||
RT2X00_LIB_CRYPTO=
|
||||
RT2X00_LIB_LEDS=
|
||||
RT2X00_LIB_DEBUGFS=
|
||||
diff --git a/package/kernel/mac80211/patches/rt2x00/607-rt2x00-add_platform_data_mac_addr.patch b/package/kernel/mac80211/patches/rt2x00/607-rt2x00-add_platform_data_mac_addr.patch
|
||||
index b5b2c61037..79f99ffdf4 100644
|
||||
--- a/package/kernel/mac80211/patches/rt2x00/607-rt2x00-add_platform_data_mac_addr.patch
|
||||
+++ b/package/kernel/mac80211/patches/rt2x00/607-rt2x00-add_platform_data_mac_addr.patch
|
||||
@@ -1,19 +1,18 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
-@@ -990,8 +990,13 @@ static void rt2x00lib_rate(struct ieee80
|
||||
+@@ -990,6 +990,12 @@ static void rt2x00lib_rate(struct ieee80
|
||||
|
||||
void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr)
|
||||
{
|
||||
+ struct rt2x00_platform_data *pdata;
|
||||
- const char *mac_addr;
|
||||
-
|
||||
++
|
||||
+ pdata = rt2x00dev->dev->platform_data;
|
||||
+ if (pdata && pdata->mac_address)
|
||||
+ ether_addr_copy(eeprom_mac_addr, pdata->mac_address);
|
||||
+
|
||||
- mac_addr = of_get_mac_address(rt2x00dev->dev->of_node);
|
||||
- if (!IS_ERR(mac_addr))
|
||||
- ether_addr_copy(eeprom_mac_addr, mac_addr);
|
||||
+ of_get_mac_address(rt2x00dev->dev->of_node, eeprom_mac_addr);
|
||||
+
|
||||
+ if (!is_valid_ether_addr(eeprom_mac_addr)) {
|
||||
--- a/include/linux/rt2x00_platform.h
|
||||
+++ b/include/linux/rt2x00_platform.h
|
||||
@@ -14,6 +14,7 @@
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch
|
||||
deleted file mode 100644
|
||||
index ca02dfb06f..0000000000
|
||||
@@ -2267,6 +2413,64 @@ index 96ee595ac1..1cab2eb194 100644
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
|
||||
rc80211_minstrel-y := \
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/376-mac80211-add-rate-control-support-for-encap-offload.patch b/package/kernel/mac80211/patches/subsys/376-mac80211-add-rate-control-support-for-encap-offload.patch
|
||||
index 43a4a1334d..f22b0d9849 100644
|
||||
--- a/package/kernel/mac80211/patches/subsys/376-mac80211-add-rate-control-support-for-encap-offload.patch
|
||||
+++ b/package/kernel/mac80211/patches/subsys/376-mac80211-add-rate-control-support-for-encap-offload.patch
|
||||
@@ -7,24 +7,6 @@ The software rate control cannot deal with encap offload, so fix it.
|
||||
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
|
||||
---
|
||||
|
||||
---- a/net/mac80211/ieee80211_i.h
|
||||
-+++ b/net/mac80211/ieee80211_i.h
|
||||
-@@ -2024,6 +2024,15 @@ static inline void ieee80211_tx_skb(stru
|
||||
- ieee80211_tx_skb_tid(sdata, skb, 7);
|
||||
- }
|
||||
-
|
||||
-+static inline bool ieee80211_is_tx_data(struct sk_buff *skb)
|
||||
-+{
|
||||
-+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
-+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
-+
|
||||
-+ return info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP ||
|
||||
-+ ieee80211_is_data(hdr->frame_control);
|
||||
-+}
|
||||
-+
|
||||
- u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||
- struct ieee802_11_elems *elems,
|
||||
- u64 filter, u32 crc, u8 *transmitter_bssid,
|
||||
--- a/net/mac80211/rate.c
|
||||
+++ b/net/mac80211/rate.c
|
||||
@@ -297,15 +297,11 @@ void ieee80211_check_rate_mask(struct ie
|
||||
@@ -117,3 +99,28 @@ Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
|
||||
|
||||
if (info->control.flags & IEEE80211_TX_CTRL_FAST_XMIT) {
|
||||
struct sta_info *sta = container_of(txq->sta, struct sta_info,
|
||||
+--- a/include/net/mac80211.h
|
||||
++++ b/include/net/mac80211.h
|
||||
+@@ -6728,4 +6728,22 @@ struct sk_buff *ieee80211_get_fils_disco
|
||||
+ struct sk_buff *
|
||||
+ ieee80211_get_unsol_bcast_probe_resp_tmpl(struct ieee80211_hw *hw,
|
||||
+ struct ieee80211_vif *vif);
|
||||
++
|
||||
++/**
|
||||
++ * ieee80211_is_tx_data - check if frame is a data frame
|
||||
++ *
|
||||
++ * The function is used to check if a frame is a data frame. Frames with
|
||||
++ * hardware encapsulation enabled are data frames.
|
||||
++ *
|
||||
++ * @skb: the frame to be transmitted.
|
||||
++ */
|
||||
++static inline bool ieee80211_is_tx_data(struct sk_buff *skb)
|
||||
++{
|
||||
++ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
++ struct ieee80211_hdr *hdr = (void *) skb->data;
|
||||
++
|
||||
++ return info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP ||
|
||||
++ ieee80211_is_data(hdr->frame_control);
|
||||
++}
|
||||
++
|
||||
+ #endif /* MAC80211_H */
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/380-mac80211-introduce-aql_enable-node-in-debugfs.patch b/package/kernel/mac80211/patches/subsys/380-mac80211-introduce-aql_enable-node-in-debugfs.patch
|
||||
new file mode 100644
|
||||
index 0000000000..b21b671c10
|
||||
@@ -3714,7 +3918,7 @@ index 0000000000..ba78f7a142
|
||||
+
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/383-mac80211-fix-enabling-4-address-mode-on-a-sta-vif-af.patch b/package/kernel/mac80211/patches/subsys/383-mac80211-fix-enabling-4-address-mode-on-a-sta-vif-af.patch
|
||||
new file mode 100644
|
||||
index 0000000000..5a82f00c9e
|
||||
index 0000000000..c1f77ff5d9
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mac80211/patches/subsys/383-mac80211-fix-enabling-4-address-mode-on-a-sta-vif-af.patch
|
||||
@@ -0,0 +1,72 @@
|
||||
@@ -3768,7 +3972,7 @@ index 0000000000..5a82f00c9e
|
||||
+ if (sdata->vif.type == NL80211_IFTYPE_MONITOR) {
|
||||
+--- a/net/mac80211/ieee80211_i.h
|
||||
++++ b/net/mac80211/ieee80211_i.h
|
||||
+@@ -2224,6 +2224,8 @@ void ieee80211_dynamic_ps_timer(struct t
|
||||
+@@ -2215,6 +2215,8 @@ void ieee80211_dynamic_ps_timer(struct t
|
||||
+ void ieee80211_send_nullfunc(struct ieee80211_local *local,
|
||||
+ struct ieee80211_sub_if_data *sdata,
|
||||
+ bool powersave);
|
||||
@@ -4251,6 +4455,38 @@ index 0000000000..c351bc812a
|
||||
+ .reset_tid_config = ieee80211_reset_tid_config,
|
||||
++ .set_sar_specs = ieee80211_set_sar_specs,
|
||||
+ };
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/386-mac80211-check-per-vif-offload_flags-in-Tx-path.patch b/package/kernel/mac80211/patches/subsys/386-mac80211-check-per-vif-offload_flags-in-Tx-path.patch
|
||||
new file mode 100644
|
||||
index 0000000000..cfad1c3927
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mac80211/patches/subsys/386-mac80211-check-per-vif-offload_flags-in-Tx-path.patch
|
||||
@@ -0,0 +1,26 @@
|
||||
+From: Ryder Lee <ryder.lee@mediatek.com>
|
||||
+Date: Fri, 18 Jun 2021 04:38:59 +0800
|
||||
+Subject: [PATCH] mac80211: check per vif offload_flags in Tx path
|
||||
+
|
||||
+offload_flags has been introduced to indicate encap status of each interface.
|
||||
+An interface can encap offload at runtime, or if it has some extra limitations
|
||||
+it can simply override the flags, so it's more flexible to check offload_flags
|
||||
+in Tx path.
|
||||
+
|
||||
+Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
|
||||
+Link: https://lore.kernel.org/r/177785418cf407808bf3a44760302d0647076990.1623961575.git.ryder.lee@mediatek.com
|
||||
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
+---
|
||||
+
|
||||
+--- a/net/mac80211/tx.c
|
||||
++++ b/net/mac80211/tx.c
|
||||
+@@ -3309,6 +3309,9 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
+ if (!ieee80211_hw_check(&local->hw, TX_AMSDU))
|
||||
+ return false;
|
||||
+
|
||||
++ if (sdata->vif.offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
|
||||
++ return false;
|
||||
++
|
||||
+ if (skb_is_gso(skb))
|
||||
+ return false;
|
||||
+
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch
|
||||
index febe42eb9d..b2ee61a6dc 100644
|
||||
--- a/package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch
|
||||
@@ -4318,6 +4554,249 @@ index febe42eb9d..b2ee61a6dc 100644
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
diff --git a/package/kernel/mac80211/patches/subsys/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/package/kernel/mac80211/patches/subsys/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
new file mode 100644
|
||||
index 0000000000..5d94362155
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mac80211/patches/subsys/782-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
@@ -0,0 +1,237 @@
|
||||
+From 83216e3988cd196183542937c9bd58b279f946af Mon Sep 17 00:00:00 2001
|
||||
+From: Michael Walle <michael@walle.cc>
|
||||
+Date: Mon, 12 Apr 2021 19:47:17 +0200
|
||||
+Subject: of: net: pass the dst buffer to of_get_mac_address()
|
||||
+
|
||||
+of_get_mac_address() returns a "const void*" pointer to a MAC address.
|
||||
+Lately, support to fetch the MAC address by an NVMEM provider was added.
|
||||
+But this will only work with platform devices. It will not work with
|
||||
+PCI devices (e.g. of an integrated root complex) and esp. not with DSA
|
||||
+ports.
|
||||
+
|
||||
+There is an of_* variant of the nvmem binding which works without
|
||||
+devices. The returned data of a nvmem_cell_read() has to be freed after
|
||||
+use. On the other hand the return of_get_mac_address() points to some
|
||||
+static data without a lifetime. The trick for now, was to allocate a
|
||||
+device resource managed buffer which is then returned. This will only
|
||||
+work if we have an actual device.
|
||||
+
|
||||
+Change it, so that the caller of of_get_mac_address() has to supply a
|
||||
+buffer where the MAC address is written to. Unfortunately, this will
|
||||
+touch all drivers which use the of_get_mac_address().
|
||||
+
|
||||
+Usually the code looks like:
|
||||
+
|
||||
+ const char *addr;
|
||||
+ addr = of_get_mac_address(np);
|
||||
+ if (!IS_ERR(addr))
|
||||
+ ether_addr_copy(ndev->dev_addr, addr);
|
||||
+
|
||||
+This can then be simply rewritten as:
|
||||
+
|
||||
+ of_get_mac_address(np, ndev->dev_addr);
|
||||
+
|
||||
+Sometimes is_valid_ether_addr() is used to test the MAC address.
|
||||
+of_get_mac_address() already makes sure, it just returns a valid MAC
|
||||
+address. Thus we can just test its return code. But we have to be
|
||||
+careful if there are still other sources for the MAC address before the
|
||||
+of_get_mac_address(). In this case we have to keep the
|
||||
+is_valid_ether_addr() call.
|
||||
+
|
||||
+The following coccinelle patch was used to convert common cases to the
|
||||
+new style. Afterwards, I've manually gone over the drivers and fixed the
|
||||
+return code variable: either used a new one or if one was already
|
||||
+available use that. Mansour Moufid, thanks for that coccinelle patch!
|
||||
+
|
||||
+<spml>
|
||||
+@a@
|
||||
+identifier x;
|
||||
+expression y, z;
|
||||
+@@
|
||||
+- x = of_get_mac_address(y);
|
||||
++ x = of_get_mac_address(y, z);
|
||||
+ <...
|
||||
+- ether_addr_copy(z, x);
|
||||
+ ...>
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+@@
|
||||
+- if (<+... x ...+>) {}
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+@@
|
||||
+ if (<+... x ...+>) {
|
||||
+ ...
|
||||
+ }
|
||||
+- else {}
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+expression e;
|
||||
+@@
|
||||
+- if (<+... x ...+>@e)
|
||||
+- {}
|
||||
+- else
|
||||
++ if (!(e))
|
||||
+ {...}
|
||||
+
|
||||
+@@
|
||||
+expression x, y, z;
|
||||
+@@
|
||||
+- x = of_get_mac_address(y, z);
|
||||
++ of_get_mac_address(y, z);
|
||||
+ ... when != x
|
||||
+</spml>
|
||||
+
|
||||
+All drivers, except drivers/net/ethernet/aeroflex/greth.c, were
|
||||
+compile-time tested.
|
||||
+
|
||||
+Suggested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
+Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
+Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
+---
|
||||
+ arch/arm/mach-mvebu/kirkwood.c | 3 +-
|
||||
+ arch/powerpc/sysdev/tsi108_dev.c | 5 +-
|
||||
+ drivers/net/ethernet/aeroflex/greth.c | 6 +--
|
||||
+ drivers/net/ethernet/allwinner/sun4i-emac.c | 10 ++--
|
||||
+ drivers/net/ethernet/altera/altera_tse_main.c | 7 +--
|
||||
+ drivers/net/ethernet/arc/emac_main.c | 8 +--
|
||||
+ drivers/net/ethernet/atheros/ag71xx.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bcm4908_enet.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bcmsysport.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bgmac-bcma.c | 10 ++--
|
||||
+ drivers/net/ethernet/broadcom/bgmac-platform.c | 11 ++--
|
||||
+ drivers/net/ethernet/cadence/macb_main.c | 11 ++--
|
||||
+ drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 8 +--
|
||||
+ drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 5 +-
|
||||
+ drivers/net/ethernet/davicom/dm9000.c | 10 ++--
|
||||
+ drivers/net/ethernet/ethoc.c | 6 +--
|
||||
+ drivers/net/ethernet/ezchip/nps_enet.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fec_main.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fec_mpc52xx.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fman/mac.c | 9 ++--
|
||||
+ .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 5 +-
|
||||
+ drivers/net/ethernet/freescale/gianfar.c | 8 +--
|
||||
+ drivers/net/ethernet/freescale/ucc_geth.c | 5 +-
|
||||
+ drivers/net/ethernet/hisilicon/hisi_femac.c | 7 +--
|
||||
+ drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 7 +--
|
||||
+ drivers/net/ethernet/lantiq_xrx200.c | 7 +--
|
||||
+ drivers/net/ethernet/marvell/mv643xx_eth.c | 5 +-
|
||||
+ drivers/net/ethernet/marvell/mvneta.c | 6 +--
|
||||
+ .../net/ethernet/marvell/prestera/prestera_main.c | 11 ++--
|
||||
+ drivers/net/ethernet/marvell/pxa168_eth.c | 9 +---
|
||||
+ drivers/net/ethernet/marvell/sky2.c | 8 ++-
|
||||
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 11 ++--
|
||||
+ drivers/net/ethernet/micrel/ks8851_common.c | 7 ++-
|
||||
+ drivers/net/ethernet/microchip/lan743x_main.c | 5 +-
|
||||
+ drivers/net/ethernet/nxp/lpc_eth.c | 4 +-
|
||||
+ drivers/net/ethernet/qualcomm/qca_spi.c | 10 ++--
|
||||
+ drivers/net/ethernet/qualcomm/qca_uart.c | 9 +---
|
||||
+ drivers/net/ethernet/renesas/ravb_main.c | 12 +++--
|
||||
+ drivers/net/ethernet/renesas/sh_eth.c | 5 +-
|
||||
+ .../net/ethernet/samsung/sxgbe/sxgbe_platform.c | 13 ++---
|
||||
+ drivers/net/ethernet/socionext/sni_ave.c | 10 ++--
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-anarion.c | 2 +-
|
||||
+ .../ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-generic.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-intel-plat.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-mediatek.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-oxnas.c | 2 +-
|
||||
+ .../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-visconti.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 14 ++---
|
||||
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.h | 2 +-
|
||||
+ drivers/net/ethernet/ti/am65-cpsw-nuss.c | 19 ++++---
|
||||
+ drivers/net/ethernet/ti/cpsw.c | 7 +--
|
||||
+ drivers/net/ethernet/ti/cpsw_new.c | 7 +--
|
||||
+ drivers/net/ethernet/ti/davinci_emac.c | 8 +--
|
||||
+ drivers/net/ethernet/ti/netcp_core.c | 7 +--
|
||||
+ drivers/net/ethernet/wiznet/w5100-spi.c | 8 ++-
|
||||
+ drivers/net/ethernet/wiznet/w5100.c | 2 +-
|
||||
+ drivers/net/ethernet/xilinx/ll_temac_main.c | 8 +--
|
||||
+ drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 15 +++---
|
||||
+ drivers/net/ethernet/xilinx/xilinx_emaclite.c | 8 +--
|
||||
+ drivers/net/wireless/ath/ath9k/init.c | 5 +-
|
||||
+ drivers/net/wireless/mediatek/mt76/eeprom.c | 9 +---
|
||||
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +--
|
||||
+ drivers/of/of_net.c | 60 ++++++++++------------
|
||||
+ drivers/staging/octeon/ethernet.c | 10 ++--
|
||||
+ drivers/staging/wfx/main.c | 7 ++-
|
||||
+ include/linux/of_net.h | 6 +--
|
||||
+ include/net/dsa.h | 2 +-
|
||||
+ net/dsa/dsa2.c | 2 +-
|
||||
+ net/dsa/slave.c | 2 +-
|
||||
+ net/ethernet/eth.c | 11 ++--
|
||||
+ 85 files changed, 218 insertions(+), 364 deletions(-)
|
||||
+
|
||||
+--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
++++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
+@@ -618,7 +618,6 @@ static int ath9k_of_init(struct ath_soft
|
||||
+ struct ath_hw *ah = sc->sc_ah;
|
||||
+ struct ath_common *common = ath9k_hw_common(ah);
|
||||
+ enum ath_bus_type bus_type = common->bus_ops->ath_bus_type;
|
||||
+- const char *mac;
|
||||
+ char eeprom_name[100];
|
||||
+ int ret;
|
||||
+
|
||||
+@@ -641,9 +640,7 @@ static int ath9k_of_init(struct ath_soft
|
||||
+ ah->ah_flags |= AH_NO_EEP_SWAP;
|
||||
+ }
|
||||
+
|
||||
+- mac = of_get_mac_address(np);
|
||||
+- if (!IS_ERR(mac))
|
||||
+- ether_addr_copy(common->macaddr, mac);
|
||||
++ of_get_mac_address(np, common->macaddr);
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
+--- a/drivers/net/wireless/mediatek/mt76/eeprom.c
|
||||
++++ b/drivers/net/wireless/mediatek/mt76/eeprom.c
|
||||
+@@ -90,15 +90,9 @@ out_put_node:
|
||||
+ void
|
||||
+ mt76_eeprom_override(struct mt76_dev *dev)
|
||||
+ {
|
||||
+-#ifdef CONFIG_OF
|
||||
+ struct device_node *np = dev->dev->of_node;
|
||||
+- const u8 *mac = NULL;
|
||||
+
|
||||
+- if (np)
|
||||
+- mac = of_get_mac_address(np);
|
||||
+- if (!IS_ERR_OR_NULL(mac))
|
||||
+- ether_addr_copy(dev->macaddr, mac);
|
||||
+-#endif
|
||||
++ of_get_mac_address(np, dev->macaddr);
|
||||
+
|
||||
+ if (!is_valid_ether_addr(dev->macaddr)) {
|
||||
+ eth_random_addr(dev->macaddr);
|
||||
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+@@ -990,11 +990,7 @@ static void rt2x00lib_rate(struct ieee80
|
||||
+
|
||||
+ void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr)
|
||||
+ {
|
||||
+- const char *mac_addr;
|
||||
+-
|
||||
+- mac_addr = of_get_mac_address(rt2x00dev->dev->of_node);
|
||||
+- if (!IS_ERR(mac_addr))
|
||||
+- ether_addr_copy(eeprom_mac_addr, mac_addr);
|
||||
++ of_get_mac_address(rt2x00dev->dev->of_node, eeprom_mac_addr);
|
||||
+
|
||||
+ if (!is_valid_ether_addr(eeprom_mac_addr)) {
|
||||
+ eth_random_addr(eeprom_mac_addr);
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user