iwlwifi: iwl-nvm-parse: set STBC flags for HE phy capabilities
authorMordechay Goodstein <mordechay.goodstein@intel.com>
Mon, 2 Aug 2021 14:09:33 +0000 (17:09 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 26 Aug 2021 20:32:18 +0000 (23:32 +0300)
Our HW supersets STBC for HE but never set it in assoc IE, fix it by
setting it and enable using it.

Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210802170640.0108f3e322b6.Ib25a91b5c48ff1fb2185b86a9e4bf5eec637df90@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

index 850648e..2ce4aa2 100644 (file)
@@ -568,7 +568,8 @@ static const struct ieee80211_sband_iftype_data iwl_he_capa[] = {
                                        IEEE80211_HE_PHY_CAP1_DEVICE_CLASS_A |
                                        IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD,
                                .phy_cap_info[2] =
-                                       IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US,
+                                       IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US |
+                                       IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ,
                                .phy_cap_info[3] =
                                        IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_NO_DCM |
                                        IEEE80211_HE_PHY_CAP3_DCM_MAX_TX_NSS_1 |
@@ -634,6 +635,7 @@ static const struct ieee80211_sband_iftype_data iwl_he_capa[] = {
                                .phy_cap_info[1] =
                                        IEEE80211_HE_PHY_CAP1_LDPC_CODING_IN_PAYLOAD,
                                .phy_cap_info[2] =
+                                       IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ |
                                        IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US,
                                .phy_cap_info[3] =
                                        IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_NO_DCM |
@@ -742,6 +744,8 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans,
                        IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
 
        if ((tx_chains & rx_chains) == ANT_AB) {
+               iftype_data->he_cap.he_cap_elem.phy_cap_info[2] |=
+                       IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ;
                iftype_data->he_cap.he_cap_elem.phy_cap_info[5] |=
                        IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_UNDER_80MHZ_2 |
                        IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_ABOVE_80MHZ_2;