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 4d301a1..60da999 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 a06dcbb..3e07609 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 0116985..2764c22 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 48a10aa..920fb3a 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);