]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: add support for BE213
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sat, 8 Mar 2025 21:19:12 +0000 (23:19 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Mar 2025 09:54:00 +0000 (10:54 +0100)
Add the BE213 device. This is just like BE211 but with a limitation on
the bandwidth.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250308231426.f02f4d7fc73b.Idaf000dd311358e3b50a511f4efc1cc720abd58b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/cfg/sc.c
drivers/net/wireless/intel/iwlwifi/iwl-config.h
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
drivers/net/wireless/intel/iwlwifi/pcie/drv.c

index eb56af9a8411b0c35c6510dc6ee5b7d9f4629463..05cbb80ab575cd17635944962833a3373045b452 100644 (file)
@@ -142,6 +142,8 @@ const struct iwl_cfg_trans_params iwl_sc_trans_cfg = {
        .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US,
 };
 
+const char iwl_sp_name[] = "Intel(R) Wi-Fi 7 BE213 160MHz";
+
 const struct iwl_cfg iwl_cfg_sc = {
        .fw_name_mac = "sc",
        IWL_DEVICE_SC,
index 7e4864c00780b2d73a76055723d6e9d46c521a3e..b9bd89bfdd7480728e3d598243041976a11d6df0 100644 (file)
@@ -550,6 +550,7 @@ extern const char iwl_ax231_name[];
 extern const char iwl_ax411_name[];
 extern const char iwl_fm_name[];
 extern const char iwl_wh_name[];
+extern const char iwl_sp_name[];
 extern const char iwl_gl_name[];
 extern const char iwl_mtp_name[];
 extern const char iwl_dr_name[];
index 08269168b2fab3c2d2c4941b4347da6445877c0b..cd1b0048bb6daf4de9a3338a1e68279f2af8c65b 100644 (file)
@@ -944,7 +944,8 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans,
                                       IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK);
                break;
        case NL80211_BAND_6GHZ:
-               if (!trans->reduced_cap_sku) {
+               if (!trans->reduced_cap_sku &&
+                   trans->bw_limit >= 320) {
                        iftype_data->eht_cap.eht_cap_elem.phy_cap_info[0] |=
                                IEEE80211_EHT_PHY_CAP0_320MHZ_IN_6GHZ;
                        iftype_data->eht_cap.eht_cap_elem.phy_cap_info[1] |=
@@ -1098,15 +1099,18 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans,
                iftype_data->he_cap.he_cap_elem.phy_cap_info[0] &=
                        ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G;
 
-       if (trans->reduced_cap_sku) {
+       if (trans->bw_limit < 320 || trans->reduced_cap_sku) {
                memset(&iftype_data->eht_cap.eht_mcs_nss_supp.bw._320, 0,
                       sizeof(iftype_data->eht_cap.eht_mcs_nss_supp.bw._320));
+               iftype_data->eht_cap.eht_cap_elem.phy_cap_info[2] &=
+                       ~IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_320MHZ_MASK;
+       }
+
+       if (trans->reduced_cap_sku) {
                iftype_data->eht_cap.eht_mcs_nss_supp.bw._80.rx_tx_mcs13_max_nss = 0;
                iftype_data->eht_cap.eht_mcs_nss_supp.bw._160.rx_tx_mcs13_max_nss = 0;
                iftype_data->eht_cap.eht_cap_elem.phy_cap_info[8] &=
                        ~IEEE80211_EHT_PHY_CAP8_RX_4096QAM_WIDER_BW_DL_OFDMA;
-               iftype_data->eht_cap.eht_cap_elem.phy_cap_info[2] &=
-                       ~IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_320MHZ_MASK;
        }
 }
 
index 03f7eb46bbc78c0358d7a9c5e5b4f1820239bdc9..93446c37400814e2c27ddd2fe93136862fcf4eee 100644 (file)
@@ -1187,8 +1187,13 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = {
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
                      IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY,
                      IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
-                     IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY,
                      iwl_cfg_sc, iwl_wh_name),
+       _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_MAC_TYPE_SC, IWL_CFG_ANY,
+                     IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
+                     160, IWL_CFG_ANY, IWL_CFG_ANY,
+                     iwl_cfg_sc, iwl_sp_name),
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
                      IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY,
                      IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY,
@@ -1202,8 +1207,13 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = {
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
                      IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY,
                      IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
-                     IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY,
                      iwl_cfg_sc2, iwl_wh_name),
+       _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_MAC_TYPE_SC2, IWL_CFG_ANY,
+                     IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
+                     160, IWL_CFG_ANY, IWL_CFG_ANY,
+                     iwl_cfg_sc2, iwl_sp_name),
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
                      IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY,
                      IWL_CFG_RF_TYPE_GF, IWL_CFG_ANY, IWL_CFG_ANY,
@@ -1217,8 +1227,13 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = {
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
                      IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY,
                      IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
-                     IWL_CFG_BW_ANY, IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_BW_NO_LIM, IWL_CFG_ANY, IWL_CFG_ANY,
                      iwl_cfg_sc2f, iwl_wh_name),
+       _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,
+                     IWL_CFG_MAC_TYPE_SC2F, IWL_CFG_ANY,
+                     IWL_CFG_RF_TYPE_WH, IWL_CFG_ANY, IWL_CFG_ANY,
+                     160, IWL_CFG_ANY, IWL_CFG_ANY,
+                     iwl_cfg_sc2f, iwl_sp_name),
 
 /* Dr */
        _IWL_DEV_INFO(IWL_CFG_ANY, IWL_CFG_ANY,