wifi: mt76: mt7996: fix beamformee ss subfield in EHT PHY cap
authorHoward Hsu <howard-yh.hsu@mediatek.com>
Thu, 17 Aug 2023 08:01:48 +0000 (16:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:58:58 +0000 (11:58 +0100)
[ Upstream commit e19028104b2de5510b43282f632c4b6453568c41 ]

According to P802.11be_D3.2 Table 9-404m, the minimum value of
Beamformee SS field shall be 3. Fix the values to follow the spec.

Fixes: 348533eb968d ("wifi: mt76: mt7996: add EHT capability init")
Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7996/init.c

index 26e03b2..66d8cc0 100644 (file)
@@ -733,16 +733,17 @@ mt7996_init_eht_caps(struct mt7996_phy *phy, enum nl80211_band band,
                IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMER |
                IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMEE;
 
+       val = max_t(u8, sts - 1, 3);
        eht_cap_elem->phy_cap_info[0] |=
-               u8_encode_bits(u8_get_bits(sts - 1, BIT(0)),
+               u8_encode_bits(u8_get_bits(val, BIT(0)),
                               IEEE80211_EHT_PHY_CAP0_BEAMFORMEE_SS_80MHZ_MASK);
 
        eht_cap_elem->phy_cap_info[1] =
-               u8_encode_bits(u8_get_bits(sts - 1, GENMASK(2, 1)),
+               u8_encode_bits(u8_get_bits(val, GENMASK(2, 1)),
                               IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_80MHZ_MASK) |
-               u8_encode_bits(sts - 1,
+               u8_encode_bits(val,
                               IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_160MHZ_MASK) |
-               u8_encode_bits(sts - 1,
+               u8_encode_bits(val,
                               IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_320MHZ_MASK);
 
        eht_cap_elem->phy_cap_info[2] =