| From 8c79e229decdc24af9e95e6396699b3723f7efc4 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 13/98] 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 18c3f34..ee1915c 100644 |
| --- a/mt7996/mcu.c |
| +++ b/mt7996/mcu.c |
| @@ -1684,8 +1684,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; |
| |
| @@ -1696,7 +1696,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: |
| @@ -1728,7 +1728,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) \ |
| @@ -1816,13 +1816,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 78ecd75..05785cb 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.18.0 |
| |