rtw89: fix HE PHY bandwidth capability
authorJohannes Berg <johannes.berg@intel.com>
Tue, 1 Mar 2022 00:43:31 +0000 (08:43 +0800)
committerKalle Valo <kvalo@kernel.org>
Wed, 9 Mar 2022 11:39:23 +0000 (13:39 +0200)
Bit 2 and 3 are reserved on 5/6 GHz and bit 1 is reserved on 2.4 GHz,
so the driver should only set the non-reserved bits according
to band.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220301004331.6621-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c

index 3adb52f3dc4579a1e44c7bc711b354b65e926cbd..f9ebf34f9a6e1db0424a74bc231d6f49d4ef7739 100644 (file)
@@ -2379,10 +2379,15 @@ static void rtw89_init_he_cap(struct rtw89_dev *rtwdev,
                                  IEEE80211_HE_MAC_CAP4_AMSDU_IN_AMPDU;
                if (i == NL80211_IFTYPE_STATION)
                        mac_cap_info[5] = IEEE80211_HE_MAC_CAP5_HT_VHT_TRIG_FRAME_RX;
-               phy_cap_info[0] = IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G |
-                                 IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G;
-               if (chip->support_bw160)
-                       phy_cap_info[0] |= IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
+               if (band == NL80211_BAND_2GHZ) {
+                       phy_cap_info[0] =
+                               IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G;
+               } else {
+                       phy_cap_info[0] =
+                               IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G;
+                       if (chip->support_bw160)
+                               phy_cap_info[0] |= IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
+               }
                phy_cap_info[1] = IEEE80211_HE_PHY_CAP1_DEVICE_CLASS_A |
                                  IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD |
                                  IEEE80211_HE_PHY_CAP1_HE_LTF_AND_GI_FOR_HE_PPDUS_0_8US;