[rdkb][common][bsp][Refactor and sync wifi from openwrt]

[Description]
8abcb810 [MAC80211][WiFi6][mt76][fix rx filter cr for bfee functionality]
3363708e [MAC80211][WiFi6][mt76][Preparation of Filogic 830/820/630/615 MP2.2 external release information]
baf1c3d8 [MAC80211][WiFi6][core][Fix incorrect VIF assignment for IEEE 802.11 fragments]
d2656767 [MAC80211][Rebase Patch][Add support for IEEE 802.11 fragmentation]
4292af94 [MAC80211][WiFi6][mt76][Add support for IEEE 802.11 fragmentation]

[Release-log]

Change-Id: I04ce0635ad0fe236e88224a8832f6d0a566de8eb
diff --git a/recipes-wifi/linux-mac80211/files/patches/subsys/mtk-0030-mac80211-mtk-fix-incorrect-VIF-assignment-for-IEEE-8.patch b/recipes-wifi/linux-mac80211/files/patches/subsys/mtk-0030-mac80211-mtk-fix-incorrect-VIF-assignment-for-IEEE-8.patch
new file mode 100644
index 0000000..60fa62b
--- /dev/null
+++ b/recipes-wifi/linux-mac80211/files/patches/subsys/mtk-0030-mac80211-mtk-fix-incorrect-VIF-assignment-for-IEEE-8.patch
@@ -0,0 +1,33 @@
+From 6f8a21b15ee4078ecf14c11a5cca0d8dee0bc474 Mon Sep 17 00:00:00 2001
+From: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+Date: Wed, 3 Apr 2024 14:23:51 +0800
+Subject: [PATCH] mac80211: mtk: fix incorrect VIF assignment for IEEE 802.11
+ fragments
+
+When in WDS mode (vif is AP_VLAN), only the first fragment would be dequeued from txq and go through some tx processing which includes the replacement of vif in CB(SKB) from the AP_VLAN one to the AP one. However, the rest of the fragments would be dequeued from txqi->frags and bypass this process which in turn results in different VIF assignment for softmac to fill in TXD. Therefore, we fix this by assigning the correct AP VIF to SKB_CB of the rest fragments.
+
+Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+---
+ net/mac80211/tx.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
+index 4085444..0577764 100644
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -3736,8 +3736,11 @@ begin:
+ 	skb = __skb_dequeue(&txqi->frags);
+ 	if (unlikely(skb)) {
+ 		if (!(IEEE80211_SKB_CB(skb)->control.flags &
+-				IEEE80211_TX_INTCFL_NEED_TXPROCESSING))
++				IEEE80211_TX_INTCFL_NEED_TXPROCESSING)) {
++			// TODO: report airtime of non-first fragments.
++			IEEE80211_SKB_CB(skb)->control.vif = vif;
+ 			goto out;
++		}
+ 		IEEE80211_SKB_CB(skb)->control.flags &=
+ 			~IEEE80211_TX_INTCFL_NEED_TXPROCESSING;
+ 	} else {
+-- 
+2.18.0
+
diff --git a/recipes-wifi/linux-mac80211/files/patches/subsys/subsys.inc b/recipes-wifi/linux-mac80211/files/patches/subsys/subsys.inc
index 0dcdec8..f61f662 100644
--- a/recipes-wifi/linux-mac80211/files/patches/subsys/subsys.inc
+++ b/recipes-wifi/linux-mac80211/files/patches/subsys/subsys.inc
@@ -87,6 +87,7 @@
     file://mtk-0027-mac80211-mtk-fix-AP-mgmt-not-encrypted-in-WDS-mode-w.patch \
     file://mtk-0028-mac80211-mtk-backport-refactor-STA-CSA-paring-flow.patch \
     file://mtk-0029-mac80211-mtk-send-4-addr-nullfunc-after-drv_event_ca.patch \
+    file://mtk-0030-mac80211-mtk-fix-incorrect-VIF-assignment-for-IEEE-8.patch \
     file://mtk-9900-mac80211-mtk-mask-kernel-version-limitation-and-fill.patch \
     file://mtk-9901-mac80211-mtk-add-fill-receive-path-ops-to-get-wed-id.patch \
     file://mtk-9902-mac80211-mtk-add-support-for-letting-drivers-registe.patch \
diff --git a/recipes-wifi/linux-mt76/files/patches/0015-wifi-mt76-mt7915-add-support-for-IEEE-802.11-fragmen.patch b/recipes-wifi/linux-mt76/files/patches/0015-wifi-mt76-mt7915-add-support-for-IEEE-802.11-fragmen.patch
new file mode 100644
index 0000000..ab924eb
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/patches/0015-wifi-mt76-mt7915-add-support-for-IEEE-802.11-fragmen.patch
@@ -0,0 +1,67 @@
+From 7b7d9e3ef08ce5526d43d657cb717b471002b087 Mon Sep 17 00:00:00 2001
+From: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+Date: Wed, 3 Apr 2024 14:05:59 +0800
+Subject: [PATCH] wifi: mt76: mt7915: add support for IEEE 802.11 fragmentation
+
+Add fragmentation index into TXD.DW2 to support IEEE 802.11 fragmentation.
+
+Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
+---
+ mt76_connac2_mac.h |  7 +++++++
+ mt76_connac_mac.c  | 10 +++++++++-
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/mt76_connac2_mac.h b/mt76_connac2_mac.h
+index 5f13211..eb47653 100644
+--- a/mt76_connac2_mac.h
++++ b/mt76_connac2_mac.h
+@@ -355,4 +355,11 @@ enum tx_port_idx {
+ 	MT_TX_PORT_IDX_MCU
+ };
+ 
++enum tx_frag_idx {
++	MT_TX_FRAG_NONE,
++	MT_TX_FRAG_FIRST,
++	MT_TX_FRAG_MID,
++	MT_TX_FRAG_LAST
++};
++
+ #endif /* __MT76_CONNAC2_MAC_H */
+diff --git a/mt76_connac_mac.c b/mt76_connac_mac.c
+index 630c640..d7d602a 100644
+--- a/mt76_connac_mac.c
++++ b/mt76_connac_mac.c
+@@ -391,6 +391,7 @@ mt76_connac2_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi,
+ 	bool multicast = is_multicast_ether_addr(hdr->addr1);
+ 	u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK;
+ 	__le16 fc = hdr->frame_control;
++	__le16 sc = hdr->seq_ctrl;
+ 	u8 fc_type, fc_stype;
+ 	u32 val;
+ 
+@@ -432,6 +433,13 @@ mt76_connac2_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi,
+ 	    info->flags & IEEE80211_TX_CTL_USE_MINRATE)
+ 		val |= MT_TXD2_FIX_RATE;
+ 
++	if (ieee80211_has_morefrags(fc) && ieee80211_is_first_frag(sc))
++		val |= FIELD_PREP(MT_TXD2_FRAG, MT_TX_FRAG_FIRST);
++	else if (ieee80211_has_morefrags(fc) && !ieee80211_is_first_frag(sc))
++		val |= FIELD_PREP(MT_TXD2_FRAG, MT_TX_FRAG_MID);
++	else if (!ieee80211_has_morefrags(fc) && !ieee80211_is_first_frag(sc))
++		val |= FIELD_PREP(MT_TXD2_FRAG, MT_TX_FRAG_LAST);
++
+ 	txwi[2] |= cpu_to_le32(val);
+ 
+ 	if (ieee80211_is_beacon(fc)) {
+@@ -440,7 +448,7 @@ mt76_connac2_mac_write_txwi_80211(struct mt76_dev *dev, __le32 *txwi,
+ 	}
+ 
+ 	if (info->flags & IEEE80211_TX_CTL_INJECTED) {
+-		u16 seqno = le16_to_cpu(hdr->seq_ctrl);
++		u16 seqno = le16_to_cpu(sc);
+ 
+ 		if (ieee80211_is_back_req(hdr->frame_control)) {
+ 			struct ieee80211_bar *bar;
+-- 
+2.18.0
+
diff --git a/recipes-wifi/linux-mt76/files/patches/0016-wifi-mt76-mt7915-fix-rx-filter-setting-for-bfee-func.patch b/recipes-wifi/linux-mt76/files/patches/0016-wifi-mt76-mt7915-fix-rx-filter-setting-for-bfee-func.patch
new file mode 100644
index 0000000..f223d89
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/patches/0016-wifi-mt76-mt7915-fix-rx-filter-setting-for-bfee-func.patch
@@ -0,0 +1,32 @@
+From 1a9953c39a08407607e5ef9d2ca4fefa77b5eaea Mon Sep 17 00:00:00 2001
+From: Howard Hsu <howard-yh.hsu@mediatek.com>
+Date: Fri, 12 Apr 2024 11:33:08 +0800
+Subject: [PATCH] wifi: mt76: mt7915: fix rx filter setting for bfee
+ functionality
+
+Fix rx filter setting to prevent dropping NDPA frames. Without this
+commit, bfee functionality may behave abnormally.
+
+Fixes: e57b7901469f ("mt76: add mac80211 driver for MT7915 PCIe-based chipsets")
+Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
+---
+ mt7915/main.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/mt7915/main.c b/mt7915/main.c
+index 9eeca39..6674c27 100644
+--- a/mt7915/main.c
++++ b/mt7915/main.c
+@@ -564,8 +564,7 @@ static void mt7915_configure_filter(struct ieee80211_hw *hw,
+ 
+ 	MT76_FILTER(CONTROL, MT_WF_RFCR_DROP_CTS |
+ 			     MT_WF_RFCR_DROP_RTS |
+-			     MT_WF_RFCR_DROP_CTL_RSV |
+-			     MT_WF_RFCR_DROP_NDPA);
++			     MT_WF_RFCR_DROP_CTL_RSV);
+ 
+ 	*total_flags = flags;
+ 	rxfilter = phy->rxfilter;
+-- 
+2.18.0
+
diff --git a/recipes-wifi/linux-mt76/files/patches/1043-wifi-mt76-mt7915-Add-support-for-lpi-and-duplicate-m.patch b/recipes-wifi/linux-mt76/files/patches/1043-wifi-mt76-mt7915-Add-support-for-lpi-and-duplicate-m.patch
index 82b5848..c91ad44 100644
--- a/recipes-wifi/linux-mt76/files/patches/1043-wifi-mt76-mt7915-Add-support-for-lpi-and-duplicate-m.patch
+++ b/recipes-wifi/linux-mt76/files/patches/1043-wifi-mt76-mt7915-Add-support-for-lpi-and-duplicate-m.patch
@@ -1,8 +1,7 @@
-From 7b2e5eede2267e4135d683ee71bd52dcdcfdea4c Mon Sep 17 00:00:00 2001
+From 771d717a6bce6c6a7f7bb06599b42fa3994b560e Mon Sep 17 00:00:00 2001
 From: Allen Ye <allen.ye@mediatek.com>
 Date: Fri, 15 Dec 2023 14:03:11 +0800
-Subject: [PATCH 1043/1053] wifi: mt76: mt7915: Add support for lpi and
- duplicate mode
+Subject: [PATCH] wifi: mt76: mt7915: Add support for lpi and duplicate mode
 
 Add support lpi and duplicate mode.
 1. lpi_enable: lpi fw cmd and set psd flag to fw by the country setting.
@@ -118,10 +117,10 @@
  mt76_find_channel_node(struct device_node *np, struct ieee80211_channel *chan);
  
 diff --git a/mt76_connac2_mac.h b/mt76_connac2_mac.h
-index 5f13211..c49a330 100644
+index eb47653..49ba39f 100644
 --- a/mt76_connac2_mac.h
 +++ b/mt76_connac2_mac.h
-@@ -355,4 +355,11 @@ enum tx_port_idx {
+@@ -355,6 +355,13 @@ enum tx_port_idx {
  	MT_TX_PORT_IDX_MCU
  };
  
@@ -132,12 +131,14 @@
 +	MT_TX_BW_IDX_160,
 +};
 +
- #endif /* __MT76_CONNAC2_MAC_H */
+ enum tx_frag_idx {
+ 	MT_TX_FRAG_NONE,
+ 	MT_TX_FRAG_FIRST,
 diff --git a/mt76_connac_mac.c b/mt76_connac_mac.c
-index d036047..d41f004 100644
+index 5ba0255..5f705bb 100644
 --- a/mt76_connac_mac.c
 +++ b/mt76_connac_mac.c
-@@ -564,7 +564,8 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
+@@ -572,7 +572,8 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
  		u16 rate = mt76_connac2_mac_tx_rate_val(mphy, vif, beacon,
  							multicast);
  		u32 val = MT_TXD6_FIXED_BW;
@@ -147,7 +148,7 @@
  		/* hardware won't add HTC for mgmt/ctrl frame */
  		txwi[2] |= cpu_to_le32(MT_TXD2_HTC_VLD);
  
-@@ -577,7 +578,9 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
+@@ -585,7 +586,9 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
  
  			if (!spe_idx)
  				spe_idx = 24 + phy_idx;
@@ -365,7 +366,7 @@
  int mt7915_mcu_set_edcca(struct mt7915_phy *phy, int mode, u8 *value, s8 compensation);
  int mt7915_mcu_get_edcca(struct mt7915_phy *phy, u8 mode, s8 *value);
 diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
-index 2d6e166..d3d3b17 100644
+index 53294c1..352b8e9 100644
 --- a/mt7915/mtk_debugfs.c
 +++ b/mt7915/mtk_debugfs.c
 @@ -3945,6 +3945,7 @@ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
diff --git a/recipes-wifi/linux-mt76/files/patches/patches.inc b/recipes-wifi/linux-mt76/files/patches/patches.inc
index 4b4927e..4dacca4 100644
--- a/recipes-wifi/linux-mt76/files/patches/patches.inc
+++ b/recipes-wifi/linux-mt76/files/patches/patches.inc
@@ -14,6 +14,8 @@
     file://0012-wifi-mt76-add-sanity-check-to-prevent-kernel-crash.patch \
     file://0013-wifi-mt76-mt7915-limit-per-band-token-count.patch \
     file://0014-wifi-mt76-mt7915-update-power-on-sequence.patch \
+    file://0015-wifi-mt76-mt7915-add-support-for-IEEE-802.11-fragmen.patch \
+    file://0016-wifi-mt76-mt7915-fix-rx-filter-setting-for-bfee-func.patch \
     file://0999-wifi-mt76-mt7915-build-pass-for-Linux-Kernel-5.4-fix.patch \
     file://1000-wifi-mt76-mt7915-add-mtk-internal-debug-tools-for-mt.patch \
     file://1001-wifi-mt76-mt7915-csi-implement-csi-support.patch \
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_rom_patch.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_rom_patch.bin
index 2c7f811..87ad985 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_rom_patch.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_rom_patch.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wa.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wa.bin
index 9326ae9..16af788 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wa.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wa.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wm.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wm.bin
index cb2092a..a2c95da 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wm.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7915_wm.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_rom_patch.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_rom_patch.bin
index 9a02a41..a145348 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_rom_patch.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_rom_patch.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wa.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wa.bin
index bfa4c64..fe19921 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wa.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wa.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wm.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wm.bin
index beea4f0..6c0ecdb 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wm.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7916_wm.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_rom_patch.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_rom_patch.bin
index eece22b..0f956b4 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_rom_patch.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_rom_patch.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wa.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wa.bin
index 476a906..75dba3c 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wa.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wa.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wm.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wm.bin
index fb09617..a526bdd 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wm.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wm.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wo_0.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wo_0.bin
index 1bbc364..799ad67 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wo_0.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7981_wo_0.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch.bin
index 8757758..d0f1844 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch_mt7975.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch_mt7975.bin
index b65c33b..b40b936 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch_mt7975.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_rom_patch_mt7975.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wa.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wa.bin
index 292189d..ae937a8 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wa.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wa.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm.bin
index 9453fa2..da731ad 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm_mt7975.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm_mt7975.bin
index 7731c82..5664006 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm_mt7975.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wm_mt7975.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_0.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_0.bin
index 43d23eb..91d591f 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_0.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_0.bin
Binary files differ
diff --git a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_1.bin b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_1.bin
index a7f8b8d..508e6a4 100644
--- a/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_1.bin
+++ b/recipes-wifi/linux-mt76/files/src/firmware/mt7986_wo_1.bin
Binary files differ