OSDN Git Service

mt76: connac: add 6GHz support to mt76_connac_mcu_sta_tlv
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 24 Aug 2021 10:22:23 +0000 (12:22 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 20 Oct 2021 08:36:46 +0000 (10:36 +0200)
Introduce sta_rec_he_6g_capa tlv in order configure the mcu with 6GHz
capabilities. This is a preliminary patch to enable 6GHz band for
mt7921 devices.

Tested-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h

index 8e1475a..ab44e61 100644 (file)
@@ -770,8 +770,18 @@ void mt76_connac_mcu_sta_tlv(struct mt76_phy *mphy, struct sk_buff *skb,
                mt76_connac_mcu_sta_amsdu_tlv(skb, sta, vif);
 
        /* starec he */
-       if (sta->he_cap.has_he)
+       if (sta->he_cap.has_he) {
                mt76_connac_mcu_sta_he_tlv(skb, sta);
+               if (band == NL80211_BAND_6GHZ &&
+                   sta_state == MT76_STA_INFO_STATE_ASSOC) {
+                       struct sta_rec_he_6g_capa *he_6g_capa;
+
+                       tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_HE_6G,
+                                                     sizeof(*he_6g_capa));
+                       he_6g_capa = (struct sta_rec_he_6g_capa *)tlv;
+                       he_6g_capa->capa = sta->he_6ghz_capa.capa;
+               }
+       }
 
        tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_PHY, sizeof(*phy));
        phy = (struct sta_rec_phy *)tlv;
index 0f11574..5ab5e18 100644 (file)
@@ -145,6 +145,13 @@ struct sta_rec_phy {
        u8 rsv[2];
 } __packed;
 
+struct sta_rec_he_6g_capa {
+       __le16 tag;
+       __le16 len;
+       __le16 capa;
+       u8 rsv[2];
+} __packed;
+
 /* wtbl_rec */
 
 struct wtbl_req_hdr {
@@ -303,6 +310,7 @@ struct wtbl_raw {
                                         sizeof(struct sta_rec_vht) +   \
                                         sizeof(struct sta_rec_uapsd) + \
                                         sizeof(struct sta_rec_amsdu) + \
+                                        sizeof(struct sta_rec_he_6g_capa) + \
                                         sizeof(struct tlv) +           \
                                         MT76_CONNAC_WTBL_UPDATE_MAX_SIZE)
 
@@ -329,6 +337,7 @@ enum {
        STA_REC_MUEDCA,
        STA_REC_BFEE,
        STA_REC_PHY = 0x15,
+       STA_REC_HE_6G = 0x17,
        STA_REC_MAX_NUM
 };