mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 18:07:52 +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
	 John Crispin
					John Crispin