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

[Description]
ac60b1ff [MAC80211][misc][Add Filogic 880/860/830/820/630 Release Information]
7eb946a0 [MAC80211][WiFi7][hostapd][sync hostapd patches]
91638fc9 [MAC80211][WiFi7][mac80211][sync backports code]
8e45746b [MAC80211][WiFi7][mt76][sync mt76 patches]
1c564afa [MAC80211][WiFi7][mt76][Add Eagle BE19000 ifem default bin]

[Release-log]

Change-Id: I1d4218d3b1211700acb5937fe310cbd0bf219968
diff --git a/recipes-wifi/linux-mt76/files/patches-3.x/0099-wifi-mt76-connac-rework-connac-helpers.patch b/recipes-wifi/linux-mt76/files/patches-3.x/0099-wifi-mt76-connac-rework-connac-helpers.patch
new file mode 100644
index 0000000..78704e7
--- /dev/null
+++ b/recipes-wifi/linux-mt76/files/patches-3.x/0099-wifi-mt76-connac-rework-connac-helpers.patch
@@ -0,0 +1,174 @@
+From 458a75e252d6d8a7969108695b8b9c7cceb079e3 Mon Sep 17 00:00:00 2001
+From: Shayne Chen <shayne.chen@mediatek.com>
+Date: Mon, 11 Dec 2023 18:45:00 +0800
+Subject: [PATCH 099/116] wifi: mt76: connac: rework connac helpers
+
+Rework connac helpers related to rate and phymode.
+This is a preliminary patch to add MLO support for mt7996 chipsets.
+
+Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com>
+Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com>
+Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
+---
+ mt76_connac.h     |  2 +-
+ mt76_connac_mac.c | 17 ++++++++---------
+ mt76_connac_mcu.c |  6 +++---
+ mt76_connac_mcu.h |  2 +-
+ mt7925/main.c     |  2 +-
+ mt7996/main.c     |  2 +-
+ mt7996/mcu.c      |  2 +-
+ 7 files changed, 16 insertions(+), 17 deletions(-)
+
+diff --git a/mt76_connac.h b/mt76_connac.h
+index 91987bdf2..0025add80 100644
+--- a/mt76_connac.h
++++ b/mt76_connac.h
+@@ -427,7 +427,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
+ 				 struct ieee80211_key_conf *key, int pid,
+ 				 enum mt76_txq_id qid, u32 changed);
+ u16 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy,
+-				 struct ieee80211_vif *vif,
++				 struct ieee80211_bss_conf *conf,
+ 				 bool beacon, bool mcast);
+ bool mt76_connac2_mac_fill_txs(struct mt76_dev *dev, struct mt76_wcid *wcid,
+ 			       __le32 *txs_data);
+diff --git a/mt76_connac_mac.c b/mt76_connac_mac.c
+index b841bf628..c1e9ba0fc 100644
+--- a/mt76_connac_mac.c
++++ b/mt76_connac_mac.c
+@@ -291,12 +291,11 @@ EXPORT_SYMBOL_GPL(mt76_connac_init_tx_queues);
+ })
+ 
+ u16 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy,
+-				 struct ieee80211_vif *vif,
++				 struct ieee80211_bss_conf *conf,
+ 				 bool beacon, bool mcast)
+ {
+-	struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;
+-	struct cfg80211_chan_def *chandef = mvif->ctx ?
+-					    &mvif->ctx->def : &mphy->chandef;
++	struct ieee80211_vif *vif = conf->vif;
++	struct cfg80211_chan_def *chandef = &mphy->chandef;
+ 	u8 nss = 0, mode = 0, band = chandef->chan->band;
+ 	int rateidx = 0, mcast_rate;
+ 
+@@ -304,14 +303,14 @@ u16 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy,
+ 		goto legacy;
+ 
+ 	if (is_mt7921(mphy->dev)) {
+-		rateidx = ffs(vif->bss_conf.basic_rates) - 1;
++		rateidx = ffs(conf->basic_rates) - 1;
+ 		goto legacy;
+ 	}
+ 
+ 	if (beacon) {
+ 		struct cfg80211_bitrate_mask *mask;
+ 
+-		mask = &vif->bss_conf.beacon_tx_rate;
++		mask = &conf->beacon_tx_rate;
+ 
+ 		__bitrate_mask_check(he_mcs, HE_SU);
+ 		__bitrate_mask_check(vht_mcs, VHT);
+@@ -323,11 +322,11 @@ u16 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy,
+ 		}
+ 	}
+ 
+-	mcast_rate = vif->bss_conf.mcast_rate[band];
++	mcast_rate = conf->mcast_rate[band];
+ 	if (mcast && mcast_rate > 0)
+ 		rateidx = mcast_rate - 1;
+ 	else
+-		rateidx = ffs(vif->bss_conf.basic_rates) - 1;
++		rateidx = ffs(conf->basic_rates) - 1;
+ 
+ legacy:
+ 	rateidx = mt76_calculate_default_rate(mphy, vif, rateidx);
+@@ -561,7 +560,7 @@ void mt76_connac2_mac_write_txwi(struct mt76_dev *dev, __le32 *txwi,
+ 		struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+ 		bool multicast = ieee80211_is_data(hdr->frame_control) &&
+ 				 is_multicast_ether_addr(hdr->addr1);
+-		u16 rate = mt76_connac2_mac_tx_rate_val(mphy, vif, beacon,
++		u16 rate = mt76_connac2_mac_tx_rate_val(mphy, &vif->bss_conf, beacon,
+ 							multicast);
+ 		u32 val = MT_TXD6_FIXED_BW;
+ 
+diff --git a/mt76_connac_mcu.c b/mt76_connac_mcu.c
+index 9ea74719a..71f3d301c 100644
+--- a/mt76_connac_mcu.c
++++ b/mt76_connac_mcu.c
+@@ -1361,7 +1361,7 @@ u8 mt76_connac_get_phy_mode(struct mt76_phy *phy, struct ieee80211_vif *vif,
+ }
+ EXPORT_SYMBOL_GPL(mt76_connac_get_phy_mode);
+ 
+-u8 mt76_connac_get_phy_mode_ext(struct mt76_phy *phy, struct ieee80211_vif *vif,
++u8 mt76_connac_get_phy_mode_ext(struct mt76_phy *phy, struct ieee80211_bss_conf *conf,
+ 				enum nl80211_band band)
+ {
+ 	const struct ieee80211_sta_eht_cap *eht_cap;
+@@ -1372,9 +1372,9 @@ u8 mt76_connac_get_phy_mode_ext(struct mt76_phy *phy, struct ieee80211_vif *vif,
+ 		mode |= PHY_MODE_AX_6G;
+ 
+ 	sband = phy->hw->wiphy->bands[band];
+-	eht_cap = ieee80211_get_eht_iftype_cap(sband, vif->type);
++	eht_cap = ieee80211_get_eht_iftype_cap(sband, conf->vif->type);
+ 
+-	if (!eht_cap || !eht_cap->has_eht || !vif->bss_conf.eht_support)
++	if (!eht_cap || !eht_cap->has_eht || !conf->eht_support)
+ 		return mode;
+ 
+ 	switch (band) {
+diff --git a/mt76_connac_mcu.h b/mt76_connac_mcu.h
+index 7f1562b8e..41e26b8a4 100644
+--- a/mt76_connac_mcu.h
++++ b/mt76_connac_mcu.h
+@@ -2016,7 +2016,7 @@ mt76_connac_get_eht_phy_cap(struct mt76_phy *phy, struct ieee80211_vif *vif);
+ u8 mt76_connac_get_phy_mode(struct mt76_phy *phy, struct ieee80211_vif *vif,
+ 			    enum nl80211_band band,
+ 			    struct ieee80211_link_sta *link_sta);
+-u8 mt76_connac_get_phy_mode_ext(struct mt76_phy *phy, struct ieee80211_vif *vif,
++u8 mt76_connac_get_phy_mode_ext(struct mt76_phy *phy, struct ieee80211_bss_conf *conf,
+ 				enum nl80211_band band);
+ 
+ int mt76_connac_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif,
+diff --git a/mt7925/main.c b/mt7925/main.c
+index 1f07ec5a2..6d7ec7708 100644
+--- a/mt7925/main.c
++++ b/mt7925/main.c
+@@ -675,7 +675,7 @@ mt7925_get_rates_table(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+ 	u16 rate;
+ 	u8 i, idx, ht;
+ 
+-	rate = mt76_connac2_mac_tx_rate_val(mphy, vif, beacon, mcast);
++	rate = mt76_connac2_mac_tx_rate_val(mphy, &vif->bss_conf, beacon, mcast);
+ 	ht = FIELD_GET(MT_TX_RATE_MODE, rate) > MT_PHY_TYPE_OFDM;
+ 
+ 	if (beacon && ht) {
+diff --git a/mt7996/main.c b/mt7996/main.c
+index aceb77ab2..bf3ae65e4 100644
+--- a/mt7996/main.c
++++ b/mt7996/main.c
+@@ -804,7 +804,7 @@ mt7996_get_rates_table(struct ieee80211_hw *hw, struct ieee80211_bss_conf *conf,
+ 	u16 rate;
+ 	u8 i, idx;
+ 
+-	rate = mt76_connac2_mac_tx_rate_val(mphy, conf->vif, beacon, mcast);
++	rate = mt76_connac2_mac_tx_rate_val(mphy, conf, beacon, mcast);
+ 
+ 	if (beacon) {
+ 		struct mt7996_phy *phy = mphy->priv;
+diff --git a/mt7996/mcu.c b/mt7996/mcu.c
+index 4bdb1fcbc..35e0578b5 100644
+--- a/mt7996/mcu.c
++++ b/mt7996/mcu.c
+@@ -1219,7 +1219,7 @@ mt7996_mcu_bss_basic_tlv(struct sk_buff *skb, struct ieee80211_bss_conf *conf,
+ 	bss->dtim_period = conf->dtim_period;
+ 	bss->phymode = mt76_connac_get_phy_mode(phy, vif,
+ 						chandef->chan->band, NULL);
+-	bss->phymode_ext = mt76_connac_get_phy_mode_ext(phy, vif,
++	bss->phymode_ext = mt76_connac_get_phy_mode_ext(phy, conf,
+ 							chandef->chan->band);
+ 
+ 	return 0;
+-- 
+2.39.2
+