]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: disable EHT if the device doesn't allow it
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 19 Oct 2025 08:45:13 +0000 (11:45 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 28 Oct 2025 14:17:27 +0000 (16:17 +0200)
We have a few devices that don't allow EHT. Make sure we reflect this
towards mac80211 so that we won't try to enable it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20251019114304.71121f4e5557.I49e2329d4121f9e52d0889156d0c3e8778e27d88@changeid
drivers/net/wireless/intel/iwlwifi/cfg/rf-fm.c
drivers/net/wireless/intel/iwlwifi/cfg/rf-wh.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 456a666c8dfdf6ea33b101fe572c7eac366097f5..fd82050e33a3c9ca5524141395790d207f4894a7 100644 (file)
@@ -19,6 +19,7 @@
        .non_shared_ant = ANT_B,                                        \
        .vht_mu_mimo_supported = true,                                  \
        .uhb_supported = true,                                          \
+       .eht_supported = true,                                          \
        .num_rbds = IWL_NUM_RBDS_EHT,                                   \
        .nvm_ver = IWL_FM_NVM_VERSION,                                  \
        .nvm_type = IWL_NVM_EXT
index b8c6b06e70991fecd61a5c03f4d965e44d5ea693..b5803ea1eb782b26a8f78ccdbd61e093da838248 100644 (file)
@@ -4,8 +4,31 @@
  */
 #include "iwl-config.h"
 
+/* NVM versions */
+#define IWL_WH_NVM_VERSION             0x0a1d
+
+#define IWL_DEVICE_WH                                                  \
+       .ht_params = {                                                  \
+               .stbc = true,                                           \
+               .ldpc = true,                                           \
+               .ht40_bands = BIT(NL80211_BAND_2GHZ) |                  \
+                             BIT(NL80211_BAND_5GHZ),                   \
+       },                                                              \
+       .led_mode = IWL_LED_RF_STATE,                                   \
+       .non_shared_ant = ANT_B,                                        \
+       .vht_mu_mimo_supported = true,                                  \
+       .uhb_supported = true,                                          \
+       .num_rbds = IWL_NUM_RBDS_EHT,                                   \
+       .nvm_ver = IWL_WH_NVM_VERSION,                                  \
+       .nvm_type = IWL_NVM_EXT
+
 /* currently iwl_rf_wh/iwl_rf_wh_160mhz are just defines for the FM ones */
 
+const struct iwl_rf_cfg iwl_rf_wh_non_eht = {
+       IWL_DEVICE_WH,
+       .eht_supported = false,
+};
+
 const char iwl_killer_be1775s_name[] =
        "Killer(R) Wi-Fi 7 BE1775s 320MHz Wireless Network Adapter (BE211D2W)";
 const char iwl_killer_be1775i_name[] =
index e44936204068f99275e2663a3e987e0f7d9250bd..0a5a683325efa84444e6a26b28cfef9594ceb489 100644 (file)
@@ -416,6 +416,7 @@ struct iwl_mac_cfg {
  * @vht_mu_mimo_supported: VHT MU-MIMO support
  * @nvm_type: see &enum iwl_nvm_type
  * @uhb_supported: ultra high band channels supported
+ * @eht_supported: EHT supported
  * @num_rbds: number of receive buffer descriptors to use
  *     (only used for multi-queue capable devices)
  *
@@ -448,7 +449,8 @@ struct iwl_rf_cfg {
            host_interrupt_operation_mode:1,
            lp_xtal_workaround:1,
            vht_mu_mimo_supported:1,
-           uhb_supported:1;
+           uhb_supported:1,
+           eht_supported:1;
        u8 valid_tx_ant;
        u8 valid_rx_ant;
        u8 non_shared_ant;
@@ -742,6 +744,7 @@ extern const struct iwl_rf_cfg iwl_rf_fm;
 extern const struct iwl_rf_cfg iwl_rf_fm_160mhz;
 #define iwl_rf_wh iwl_rf_fm
 #define iwl_rf_wh_160mhz iwl_rf_fm_160mhz
+extern const struct iwl_rf_cfg iwl_rf_wh_non_eht;
 #define iwl_rf_pe iwl_rf_fm
 #endif /* CONFIG_IWLMLD */
 
index 23465e4c4b399870ed58495c63996b95e04d341d..e021fc57d85d22a82e3bba19122386a09aff9813 100644 (file)
@@ -2080,7 +2080,7 @@ struct iwl_nvm_data *iwl_get_nvm(struct iwl_trans *trans,
                !!(mac_flags & NVM_MAC_SKU_FLAGS_BAND_5_2_ENABLED);
        nvm->sku_cap_mimo_disabled =
                !!(mac_flags & NVM_MAC_SKU_FLAGS_MIMO_DISABLED);
-       if (CSR_HW_RFID_TYPE(trans->info.hw_rf_id) >= IWL_CFG_RF_TYPE_FM)
+       if (trans->cfg->eht_supported)
                nvm->sku_cap_11be_enable = true;
 
        /* Initialize PHY sku data */
index de04a84def0d8ee5e83b8149153fe1ae57c85731..73001cdce13aad4df3ec9b53b184d1f36afaa49f 100644 (file)
@@ -1061,8 +1061,10 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = {
 
 /* WH RF */
        IWL_DEV_INFO(iwl_rf_wh, iwl_be211_name, RF_TYPE(WH)),
-       IWL_DEV_INFO(iwl_rf_wh, iwl_ax221_name, RF_TYPE(WH), SUBDEV(0x0514)),
-       IWL_DEV_INFO(iwl_rf_wh, iwl_ax221_name, RF_TYPE(WH), SUBDEV(0x4514)),
+       IWL_DEV_INFO(iwl_rf_wh_non_eht, iwl_ax221_name, RF_TYPE(WH),
+                    SUBDEV(0x0514)),
+       IWL_DEV_INFO(iwl_rf_wh_non_eht, iwl_ax221_name, RF_TYPE(WH),
+                    SUBDEV(0x4514)),
        IWL_DEV_INFO(iwl_rf_wh_160mhz, iwl_be213_name, RF_TYPE(WH), BW_LIMITED),
 
 /* PE RF */