mt76: enable the VHT extended NSS BW feature
authorDeren Wu <deren.wu@mediatek.com>
Tue, 7 Jun 2022 05:00:46 +0000 (13:00 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2022 11:40:01 +0000 (13:40 +0200)
According IEEE Std 802.11-2020, its definition is:
Indicates whether the STA is capable of interpreting the Extended NSS BW
Support subfield of the VHT Capabilities Information field.

Some APs, such as Xiaomi AX6000, would check this one for BW settings.
mt76 driver can get max BW capability only if the this field is confgured
properly.

Reviewed-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt7615/init.c
drivers/net/wireless/mediatek/mt76/mt7915/init.c
drivers/net/wireless/mediatek/mt76/mt7921/init.c

index 4d301a131a9d52b3ce4ed214d40648a6665e9a2f..60da9995357ea7a5b5ee4ece5a61129ab687adb8 100644 (file)
@@ -266,6 +266,8 @@ static void mt76_init_stream_cap(struct mt76_phy *phy,
        }
        vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
        vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
+       vht_cap->vht_mcs.tx_highest |=
+                               cpu_to_le16(IEEE80211_VHT_EXT_NSS_BW_CAPABLE);
 }
 
 void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
index a06dcbb8c67361b61759818f3daa205d80a4731c..3e076092714e7359606c5fb5a9c757d30188e812 100644 (file)
@@ -401,6 +401,7 @@ mt7615_init_wiphy(struct ieee80211_hw *hw)
        ieee80211_hw_set(hw, TX_STATUS_NO_AMPDU_LEN);
        ieee80211_hw_set(hw, WANT_MONITOR_VIF);
        ieee80211_hw_set(hw, SUPPORTS_RX_DECAP_OFFLOAD);
+       ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW);
 
        if (is_mt7615(&phy->dev->mt76))
                hw->max_tx_fragments = MT_TXP_MAX_BUF_NUM;
index 01169853355e9a4d5e0b1afcd377a6c2ed2bf8b5..2764c22179fb40b2331b8a2cbbd63e526a6081b7 100644 (file)
@@ -365,6 +365,7 @@ mt7915_init_wiphy(struct ieee80211_hw *hw)
        ieee80211_hw_set(hw, SUPPORTS_RX_DECAP_OFFLOAD);
        ieee80211_hw_set(hw, SUPPORTS_MULTI_BSSID);
        ieee80211_hw_set(hw, WANT_MONITOR_VIF);
+       ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW);
 
        hw->max_tx_fragments = 4;
 
index 48a10aaecc6241d4ef9f76e9f448d5cbcd5dc9f1..920fb3a42740a42b6f4a61cf58937388eb0c1387 100644 (file)
@@ -96,6 +96,7 @@ mt7921_init_wiphy(struct ieee80211_hw *hw)
        ieee80211_hw_set(hw, WANT_MONITOR_VIF);
        ieee80211_hw_set(hw, SUPPORTS_PS);
        ieee80211_hw_set(hw, SUPPORTS_DYNAMIC_PS);
+       ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW);
 
        if (dev->pm.enable)
                ieee80211_hw_set(hw, CONNECTION_MONITOR);