]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: iwlmld is always used for wifi7 devices
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Mon, 15 Sep 2025 08:34:26 +0000 (11:34 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 28 Oct 2025 14:05:18 +0000 (16:05 +0200)
iwlmld is used since API 97 and for wifi7 devices.
Since APIs < 97 are no longer supported on such devices,
we can remove the API check and always load iwlmld for the wifi7
devices.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250915113137.45ab33fcdc00.Ia3a40b687b75c872cf7e7a19331a014bccf5f2d6@changeid
drivers/net/wireless/intel/iwlwifi/iwl-drv.c

index 607fcea6f4efc45e8c32db743c507ea0e3dbe471..7d58e294618d601f8568ee135e9f077d21d17592 100644 (file)
@@ -179,7 +179,8 @@ static inline char iwl_drv_get_step(int step)
 
 static bool iwl_drv_is_wifi7_supported(struct iwl_trans *trans)
 {
-       return CSR_HW_RFID_TYPE(trans->info.hw_rf_id) >= IWL_CFG_RF_TYPE_FM;
+       return trans->mac_cfg->device_family >= IWL_DEVICE_FAMILY_BZ &&
+              CSR_HW_RFID_TYPE(trans->info.hw_rf_id) >= IWL_CFG_RF_TYPE_FM;
 }
 
 const char *iwl_drv_get_fwname_pre(struct iwl_trans *trans, char *buf)
@@ -427,7 +428,6 @@ struct iwl_firmware_pieces {
        size_t dbg_trigger_tlv_len[FW_DBG_TRIGGER_MAX];
        struct iwl_fw_dbg_mem_seg_tlv *dbg_mem_tlv;
        size_t n_mem_tlv;
-       u32 major;
 };
 
 static void alloc_sec_data(struct iwl_firmware_pieces *pieces,
@@ -1069,19 +1069,19 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
                        break;
                case IWL_UCODE_TLV_FW_VERSION: {
                        const __le32 *ptr = (const void *)tlv_data;
-                       u32 minor;
+                       u32 major, minor;
                        u8 local_comp;
 
                        if (tlv_len != sizeof(u32) * 3)
                                goto invalid_tlv_len;
 
-                       pieces->major = le32_to_cpup(ptr++);
+                       major = le32_to_cpup(ptr++);
                        minor = le32_to_cpup(ptr++);
                        local_comp = le32_to_cpup(ptr);
 
                        snprintf(drv->fw.fw_version,
                                 sizeof(drv->fw.fw_version),
-                                "%u.%08x.%u %s", pieces->major, minor,
+                                "%u.%08x.%u %s", major, minor,
                                 local_comp, iwl_reduced_fw_name(drv));
                        break;
                        }
@@ -1589,8 +1589,6 @@ static void _iwl_op_mode_stop(struct iwl_drv *drv)
        }
 }
 
-#define IWL_MLD_SUPPORTED_FW_VERSION 97
-
 /*
  * iwl_req_fw_callback - callback when firmware was loaded
  *
@@ -1859,12 +1857,10 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
        }
 
 #if IS_ENABLED(CONFIG_IWLMLD)
-       if (pieces->major >= IWL_MLD_SUPPORTED_FW_VERSION &&
-           iwl_drv_is_wifi7_supported(drv->trans))
+       if (iwl_drv_is_wifi7_supported(drv->trans))
                op = &iwlwifi_opmode_table[MLD_OP_MODE];
 #else
-       if (pieces->major >= IWL_MLD_SUPPORTED_FW_VERSION &&
-           iwl_drv_is_wifi7_supported(drv->trans)) {
+       if (iwl_drv_is_wifi7_supported(drv->trans)) {
                IWL_ERR(drv,
                        "IWLMLD needs to be compiled to support this firmware\n");
                mutex_unlock(&iwlwifi_opmode_table_mtx);