[][MAC80211][WiFi7][misc][fix mt7988-mt7996-mac980211 release build fail]
[Description]
Fix mt7988-mt7996-mac980211 release build fail
[Release-log]
N/A
Change-Id: I4e247202ad308ed70e7ed59f8a21d62fddfbac9f
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8041650
diff --git a/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/0012-wifi-mt76-mt7996-fix-mcu-command-format-to-align-fir.patch b/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/0012-wifi-mt76-mt7996-fix-mcu-command-format-to-align-fir.patch
new file mode 100644
index 0000000..26f923e
--- /dev/null
+++ b/autobuild_mac80211_release/mt7988_mt7996_mac80211/package/kernel/mt76/patches/0012-wifi-mt76-mt7996-fix-mcu-command-format-to-align-fir.patch
@@ -0,0 +1,154 @@
+From d1cc4c8da42cf8e3feef5a75611eefd8bf693823 Mon Sep 17 00:00:00 2001
+From: Peter Chiu <chui-hao.chiu@mediatek.com>
+Date: Fri, 7 Jul 2023 10:35:05 +0800
+Subject: [PATCH 12/22] wifi: mt76: mt7996: fix mcu command format to align
+ firmware
+
+Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
+---
+ mt7996/mcu.c | 12 ++++-----
+ mt7996/mcu.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 75 insertions(+), 8 deletions(-)
+
+diff --git a/mt7996/mcu.c b/mt7996/mcu.c
+index a5cfd40f9..9dfee8292 100644
+--- a/mt7996/mcu.c
++++ b/mt7996/mcu.c
+@@ -1685,8 +1685,8 @@ int mt7996_mcu_set_fixed_field(struct mt7996_dev *dev, struct ieee80211_vif *vif
+ {
+ struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
+ struct mt7996_sta *msta = (struct mt7996_sta *)sta->drv_priv;
+- struct sta_phy *phy = data;
+- struct sta_rec_ra_fixed *ra;
++ struct sta_phy_uni *phy = data;
++ struct sta_rec_ra_fixed_uni *ra;
+ struct sk_buff *skb;
+ struct tlv *tlv;
+
+@@ -1697,7 +1697,7 @@ int mt7996_mcu_set_fixed_field(struct mt7996_dev *dev, struct ieee80211_vif *vif
+ return PTR_ERR(skb);
+
+ tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA_UPDATE, sizeof(*ra));
+- ra = (struct sta_rec_ra_fixed *)tlv;
++ ra = (struct sta_rec_ra_fixed_uni *)tlv;
+
+ switch (field) {
+ case RATE_PARAM_AUTO:
+@@ -1729,7 +1729,7 @@ mt7996_mcu_add_rate_ctrl_fixed(struct mt7996_dev *dev, struct ieee80211_vif *vif
+ struct cfg80211_chan_def *chandef = &mvif->phy->mt76->chandef;
+ struct cfg80211_bitrate_mask *mask = &mvif->bitrate_mask;
+ enum nl80211_band band = chandef->chan->band;
+- struct sta_phy phy = {};
++ struct sta_phy_uni phy = {};
+ int ret, nrates = 0;
+
+ #define __sta_phy_bitrate_mask_check(_mcs, _gi, _ht, _he) \
+@@ -1817,13 +1817,13 @@ mt7996_mcu_sta_rate_ctrl_tlv(struct sk_buff *skb, struct mt7996_dev *dev,
+ struct cfg80211_chan_def *chandef = &mphy->chandef;
+ struct cfg80211_bitrate_mask *mask = &mvif->bitrate_mask;
+ enum nl80211_band band = chandef->chan->band;
+- struct sta_rec_ra *ra;
++ struct sta_rec_ra_uni *ra;
+ struct tlv *tlv;
+ u32 supp_rate = sta->deflink.supp_rates[band];
+ u32 cap = sta->wme ? STA_CAP_WMM : 0;
+
+ tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA, sizeof(*ra));
+- ra = (struct sta_rec_ra *)tlv;
++ ra = (struct sta_rec_ra_uni *)tlv;
+
+ ra->valid = true;
+ ra->auto_rate = true;
+diff --git a/mt7996/mcu.h b/mt7996/mcu.h
+index 78ecd757e..05785cb9f 100644
+--- a/mt7996/mcu.h
++++ b/mt7996/mcu.h
+@@ -433,6 +433,73 @@ struct sta_rec_sec_uni {
+ struct sec_key_uni key[2];
+ } __packed;
+
++struct sta_phy_uni {
++ u8 type;
++ u8 flag;
++ u8 stbc;
++ u8 sgi;
++ u8 bw;
++ u8 ldpc;
++ u8 mcs;
++ u8 nss;
++ u8 he_ltf;
++ u8 rsv[3];
++};
++
++struct sta_rec_ra_uni {
++ __le16 tag;
++ __le16 len;
++
++ u8 valid;
++ u8 auto_rate;
++ u8 phy_mode;
++ u8 channel;
++ u8 bw;
++ u8 disable_cck;
++ u8 ht_mcs32;
++ u8 ht_gf;
++ u8 ht_mcs[4];
++ u8 mmps_mode;
++ u8 gband_256;
++ u8 af;
++ u8 auth_wapi_mode;
++ u8 rate_len;
++
++ u8 supp_mode;
++ u8 supp_cck_rate;
++ u8 supp_ofdm_rate;
++ __le32 supp_ht_mcs;
++ __le16 supp_vht_mcs[4];
++
++ u8 op_mode;
++ u8 op_vht_chan_width;
++ u8 op_vht_rx_nss;
++ u8 op_vht_rx_nss_type;
++
++ __le32 sta_cap;
++
++ struct sta_phy_uni phy;
++ u8 rx_rcpi[4];
++} __packed;
++
++struct sta_rec_ra_fixed_uni {
++ __le16 tag;
++ __le16 len;
++
++ __le32 field;
++ u8 op_mode;
++ u8 op_vht_chan_width;
++ u8 op_vht_rx_nss;
++ u8 op_vht_rx_nss_type;
++
++ struct sta_phy_uni phy;
++
++ u8 spe_idx;
++ u8 short_preamble;
++ u8 is_5g;
++ u8 mmps_mode;
++} __packed;
++
+ struct sta_rec_hdrt {
+ __le16 tag;
+ __le16 len;
+@@ -616,9 +683,9 @@ enum {
+ sizeof(struct sta_rec_amsdu) + \
+ sizeof(struct sta_rec_bfee) + \
+ sizeof(struct sta_rec_phy) + \
+- sizeof(struct sta_rec_ra) + \
++ sizeof(struct sta_rec_ra_uni) + \
+ sizeof(struct sta_rec_sec) + \
+- sizeof(struct sta_rec_ra_fixed) + \
++ sizeof(struct sta_rec_ra_fixed_uni) + \
+ sizeof(struct sta_rec_he_6g_capa) + \
+ sizeof(struct sta_rec_eht) + \
+ sizeof(struct sta_rec_hdrt) + \
+--
+2.39.2
+