From cccb5b266bbe7583ca99967e499940d5d3b32382 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:18 +0300 Subject: [PATCH 01/16] wifi: iwlwifi: tests: check configs are not duplicated Add a kunit test to check that all (used) config structs are not duplicated, ignoring the name since that can be handled differently via the dev-info list. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.0cfd9fb8322e.I9567b839405be8d1e4be0bfca7a17b5d222b0158@changeid --- .../wireless/intel/iwlwifi/tests/devinfo.c | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index a64880fd3398..0de3a01001d7 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -58,6 +58,52 @@ static void devinfo_names(struct kunit *test) } } +static void devinfo_no_cfg_dups(struct kunit *test) +{ + /* allocate iwl_dev_info_table_size as upper bound */ + const struct iwl_cfg **cfgs = kunit_kcalloc(test, + iwl_dev_info_table_size, + sizeof(*cfgs), GFP_KERNEL); + int p = 0; + + KUNIT_ASSERT_NOT_NULL(test, cfgs); + + /* build a list of unique (by pointer) configs first */ + for (int i = 0; i < iwl_dev_info_table_size; i++) { + bool found = false; + + for (int j = 0; j < p; j++) { + if (cfgs[j] == iwl_dev_info_table[i].cfg) { + found = true; + break; + } + } + if (!found) { + cfgs[p] = iwl_dev_info_table[i].cfg; + p++; + } + } + + /* check that they're really all different */ + for (int i = 0; i < p; i++) { + struct iwl_cfg cfg_i = *cfgs[i]; + + /* null out the names since we can handle them differently */ + cfg_i.name = NULL; + + for (int j = 0; j < i; j++) { + struct iwl_cfg cfg_j = *cfgs[j]; + + cfg_j.name = NULL; + + KUNIT_EXPECT_NE_MSG(test, memcmp(&cfg_i, &cfg_j, + sizeof(cfg_i)), 0, + "identical configs: %ps and %ps\n", + cfgs[i], cfgs[j]); + } + } +} + static void devinfo_pci_ids(struct kunit *test) { struct pci_dev *dev; @@ -83,6 +129,7 @@ static void devinfo_pci_ids(struct kunit *test) static struct kunit_case devinfo_test_cases[] = { KUNIT_CASE(devinfo_table_order), KUNIT_CASE(devinfo_names), + KUNIT_CASE(devinfo_no_cfg_dups), KUNIT_CASE(devinfo_pci_ids), {} }; -- 2.51.0 From 337faf17c973ce1f799ac163bbe105c322302c3b Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:19 +0300 Subject: [PATCH 02/16] wifi: iwlwifi: tests: check transport configs are not duplicated Add a kunit test to check that all (used) transport config structs are not duplicated, since there's no value in having the same info in two places in memory. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.a151af19aaba.Id57f099a899e09318c6218ed1859151f00232b41@changeid --- .../net/wireless/intel/iwlwifi/iwl-config.h | 2 + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 1 - .../wireless/intel/iwlwifi/tests/devinfo.c | 48 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index 1ecd873911bc..a9d70b58e134 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -305,6 +305,8 @@ struct iwl_fw_mon_regs { struct iwl_fw_mon_reg cur_frag; }; +#define TRANS_CFG_MARKER BIT(0) + /** * struct iwl_cfg * @trans: the trans-specific configuration part diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index b96b85e7d5d8..83d368ef623a 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -17,7 +17,6 @@ #include "iwl-prph.h" #include "internal.h" -#define TRANS_CFG_MARKER BIT(0) #define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg), \ struct _struct) extern int _invalid_type; diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index 0de3a01001d7..de6e3eaca8cd 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -126,11 +126,59 @@ static void devinfo_pci_ids(struct kunit *test) } } +static void devinfo_no_trans_cfg_dups(struct kunit *test) +{ + /* allocate iwl_dev_info_table_size as upper bound */ + const struct iwl_cfg_trans_params **cfgs; + int count = 0; + int p = 0; + + for (int i = 0; iwl_hw_card_ids[i].vendor; i++) + count++; + + cfgs = kunit_kcalloc(test, count, sizeof(*cfgs), GFP_KERNEL); + KUNIT_ASSERT_NOT_NULL(test, cfgs); + + /* build a list of unique (by pointer) configs first */ + for (int i = 0; iwl_hw_card_ids[i].vendor; i++) { + struct iwl_cfg_trans_params *cfg; + bool found = false; + + if (!(iwl_hw_card_ids[i].driver_data & TRANS_CFG_MARKER)) + continue; + + cfg = (void *)(iwl_hw_card_ids[i].driver_data & + ~TRANS_CFG_MARKER); + + for (int j = 0; j < p; j++) { + if (cfgs[j] == cfg) { + found = true; + break; + } + } + if (!found) { + cfgs[p] = cfg; + p++; + } + } + + /* check that they're really all different */ + for (int i = 0; i < p; i++) { + for (int j = 0; j < i; j++) { + KUNIT_EXPECT_NE_MSG(test, memcmp(cfgs[i], cfgs[j], + sizeof(*cfgs[i])), 0, + "identical configs: %ps and %ps\n", + cfgs[i], cfgs[j]); + } + } +} + static struct kunit_case devinfo_test_cases[] = { KUNIT_CASE(devinfo_table_order), KUNIT_CASE(devinfo_names), KUNIT_CASE(devinfo_no_cfg_dups), KUNIT_CASE(devinfo_pci_ids), + KUNIT_CASE(devinfo_no_trans_cfg_dups), {} }; -- 2.51.0 From ac1ee8130a2297593ddee0466f8bfc0e679f8f1b Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:20 +0300 Subject: [PATCH 03/16] wifi: iwlwifi: cfg: clean up BW limit and subdev matching The BW limit, cores and RF ID are matched in the subdevice ID, so it doesn't really make sense to have both SUBDEV() match and a match on any of those three. In particular, for Killer devices the subdevice ID doesn't even follow the layout, so no matching should be on those three values at all, only with SUBDEV(). Change the logic around the BW limit to have it more like all the other things: only a bw_limit match in the dev_info, and put the actual bandwidth into struct iwl_cfg. This duplicates a number of those values, but that way the logic is clearer. Add a test that checks that the three matches mentioned above are not used in conjunction with SUBDEV(), and check that if the bw_limit is matched, a BW limit is provided in the config. Also check that the "Killer" devices have a SUBDEV() match. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.a185eac2736c.I87ee87300c92518a1d3296d3eda9fd4163e9085e@changeid --- .../net/wireless/intel/iwlwifi/cfg/22000.c | 19 + drivers/net/wireless/intel/iwlwifi/cfg/9000.c | 14 +- .../net/wireless/intel/iwlwifi/cfg/ax210.c | 14 + drivers/net/wireless/intel/iwlwifi/cfg/bz.c | 8 + drivers/net/wireless/intel/iwlwifi/cfg/sc.c | 5 + .../net/wireless/intel/iwlwifi/iwl-config.h | 16 +- .../wireless/intel/iwlwifi/iwl-nvm-parse.c | 7 +- .../net/wireless/intel/iwlwifi/iwl-trans.h | 2 - drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 450 +++++++++--------- .../wireless/intel/iwlwifi/tests/devinfo.c | 35 +- 10 files changed, 327 insertions(+), 243 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c index 172ca18d888b..59d0fa2193f5 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c @@ -175,12 +175,25 @@ const struct iwl_cfg iwl9560_qu_jf_cfg = { .num_rbds = IWL_NUM_RBDS_NON_HE, }; +const struct iwl_cfg iwl9560_qu_jf_cfg_80mhz = { + IWL_DEVICE_22500, + .num_rbds = IWL_NUM_RBDS_NON_HE, + .bw_limit = 80, +}; + const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = { .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, IWL_DEVICE_22500, .num_rbds = IWL_NUM_RBDS_NON_HE, }; +const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg_80mhz = { + .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, + IWL_DEVICE_22500, + .num_rbds = IWL_NUM_RBDS_NON_HE, + .bw_limit = 80, +}; + const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = { .device_family = IWL_DEVICE_FAMILY_22000, .base_params = &iwl_22000_base_params, @@ -215,6 +228,12 @@ const struct iwl_cfg iwl_qu_hr = { .num_rbds = IWL_NUM_RBDS_22000_HE, }; +const struct iwl_cfg iwl_qu_hr_80mhz = { + IWL_DEVICE_22500, + .num_rbds = IWL_NUM_RBDS_22000_HE, + .bw_limit = 80, +}; + const struct iwl_cfg iwl_ax200_cfg_cc = { .fw_name_pre = IWL_CC_A_FW_PRE, IWL_DEVICE_22500, diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c index 0130d9a9b78b..16bf25051dbf 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (C) 2015-2017 Intel Deutschland GmbH - * Copyright (C) 2018-2021, 2023 Intel Corporation + * Copyright (C) 2018-2021, 2023, 2025 Intel Corporation */ #include #include @@ -183,10 +183,22 @@ const struct iwl_cfg iwl9260_2ac_cfg = { IWL_DEVICE_9000, }; +const struct iwl_cfg iwl9260_2ac_cfg_80mhz = { + .fw_name_pre = IWL9260_FW_PRE, + IWL_DEVICE_9000, + .bw_limit = 80, +}; + const struct iwl_cfg iwl9560_2ac_cfg_soc = { .fw_name_pre = IWL9000_FW_PRE, IWL_DEVICE_9000, }; +const struct iwl_cfg iwl9560_2ac_cfg_soc_80mhz = { + .fw_name_pre = IWL9000_FW_PRE, + IWL_DEVICE_9000, + .bw_limit = 80, +}; + MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL9260_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c index 309d59d28c73..40244bdcad6f 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c @@ -203,6 +203,13 @@ const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0 = { .num_rbds = IWL_NUM_RBDS_NON_HE, }; +const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0_80mhz = { + .fw_name_pre = IWL_SO_A_JF_B_FW_PRE, + IWL_DEVICE_AX210, + .num_rbds = IWL_NUM_RBDS_NON_HE, + .bw_limit = 80, +}; + const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { .name = iwl_ax211_name, .fw_name_pre = IWL_SO_A_GF_A_FW_PRE, @@ -259,6 +266,13 @@ const struct iwl_cfg iwl_cfg_so_a0_hr_a0 = { .num_rbds = IWL_NUM_RBDS_AX210_HE, }; +const struct iwl_cfg iwl_cfg_so_a0_hr_a0_80mhz = { + .fw_name_pre = IWL_SO_A_HR_B_FW_PRE, + IWL_DEVICE_AX210, + .num_rbds = IWL_NUM_RBDS_AX210_HE, + .bw_limit = 80, +}; + MODULE_FIRMWARE(IWL_SO_A_JF_B_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX)); MODULE_FIRMWARE(IWL_SO_A_HR_B_MODULE_FIRMWARE(IWL_AX210_UCODE_API_MAX)); IWL_FW_AND_PNVM(IWL_SO_A_GF_A_FW_PRE, IWL_AX210_UCODE_API_MAX); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/bz.c b/drivers/net/wireless/intel/iwlwifi/cfg/bz.c index f3f2dc66bfb5..abd4bfd2a812 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/bz.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/bz.c @@ -169,6 +169,14 @@ const struct iwl_cfg iwl_cfg_bz = { .num_rbds = IWL_NUM_RBDS_BZ_EHT, }; +const struct iwl_cfg iwl_cfg_bz_160mhz = { + .uhb_supported = true, + IWL_DEVICE_BZ, + .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, + .num_rbds = IWL_NUM_RBDS_BZ_EHT, + .bw_limit = 160, +}; + MODULE_FIRMWARE(IWL_BZ_A_HR_B_MODULE_FIRMWARE(IWL_BZ_UCODE_API_MAX)); IWL_FW_AND_PNVM(IWL_BZ_A_GF_A_FW_PRE, IWL_BZ_UCODE_API_MAX); IWL_FW_AND_PNVM(IWL_BZ_A_GF4_A_FW_PRE, IWL_BZ_UCODE_API_MAX); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c index 405c282e019c..800b6ffec4af 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c @@ -149,6 +149,11 @@ const struct iwl_cfg iwl_cfg_sc = { IWL_DEVICE_SC, }; +const struct iwl_cfg iwl_cfg_sc_160mhz = { + IWL_DEVICE_SC, + .bw_limit = 160, +}; + IWL_FW_AND_PNVM(IWL_SC_A_FM_B_FW_PRE, IWL_SC_UCODE_API_MAX); IWL_FW_AND_PNVM(IWL_SC_A_FM_C_FW_PRE, IWL_SC_UCODE_API_MAX); MODULE_FIRMWARE(IWL_SC_A_HR_A_FW_MODULE_FIRMWARE(IWL_SC_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index a9d70b58e134..f8044af3b0f2 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -324,6 +324,7 @@ struct iwl_fw_mon_regs { * @non_shared_ant: the antenna that is for WiFi only * @nvm_ver: NVM version * @nvm_calib_ver: NVM calibration version + * @bw_limit: bandwidth limit for this device, if non-zero * @ht_params: point to ht parameters * @led_mode: 0=blinking, 1=On(RF On)/Off(RF Off) * @rx_with_siso_diversity: 1x1 device with rx antenna diversity @@ -382,6 +383,7 @@ struct iwl_cfg { u32 smem_len; u16 nvm_ver; u16 nvm_calib_ver; + u16 bw_limit; u32 rx_with_siso_diversity:1, tx_with_siso_diversity:1, internal_wimax_coex:1, @@ -447,9 +449,6 @@ struct iwl_cfg { #define IWL_CFG_RF_ID_HR 0x7 #define IWL_CFG_RF_ID_HR1 0x4 -#define IWL_CFG_BW_NO_LIM (U16_MAX - 1) -#define IWL_CFG_BW_ANY U16_MAX - #define IWL_CFG_CORES_BT 0x0 #define IWL_CFG_CORES_BT_GNSS 0x5 @@ -468,7 +467,7 @@ struct iwl_dev_info { u16 subdevice; u16 mac_type; u16 rf_type; - u16 bw_limit; + u8 bw_limit; u8 mac_step; u8 rf_step; u8 rf_id; @@ -619,13 +618,19 @@ extern const struct iwl_cfg iwl8265_2ac_cfg; extern const struct iwl_cfg iwl8275_2ac_cfg; extern const struct iwl_cfg iwl4165_2ac_cfg; extern const struct iwl_cfg iwl9260_2ac_cfg; +extern const struct iwl_cfg iwl9260_2ac_cfg_80mhz; extern const struct iwl_cfg iwl9560_qu_jf_cfg; +extern const struct iwl_cfg iwl9560_qu_jf_cfg_80mhz; extern const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg; +extern const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg_80mhz; extern const struct iwl_cfg iwl9560_2ac_cfg_soc; +extern const struct iwl_cfg iwl9560_2ac_cfg_soc_80mhz; extern const struct iwl_cfg iwl_qu_hr1; extern const struct iwl_cfg iwl_qu_hr; +extern const struct iwl_cfg iwl_qu_hr_80mhz; extern const struct iwl_cfg iwl_ax200_cfg_cc; extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0; +extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0_80mhz; extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0; extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0_long; extern const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0; @@ -635,14 +640,17 @@ extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0_long; extern const struct iwl_cfg iwl_cfg_ma; extern const struct iwl_cfg iwl_cfg_so_a0_hr_a0; +extern const struct iwl_cfg iwl_cfg_so_a0_hr_a0_80mhz; #endif /* CONFIG_IWLMVM */ #if IS_ENABLED(CONFIG_IWLMLD) extern const struct iwl_ht_params iwl_bz_ht_params; extern const struct iwl_cfg iwl_cfg_bz; +extern const struct iwl_cfg iwl_cfg_bz_160mhz; extern const struct iwl_cfg iwl_cfg_sc; +extern const struct iwl_cfg iwl_cfg_sc_160mhz; extern const struct iwl_cfg iwl_cfg_dr; #endif /* CONFIG_IWLMLD */ diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c index 018752b8c4d8..b0b42e024766 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c @@ -949,7 +949,7 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans, break; case NL80211_BAND_6GHZ: if (!trans->reduced_cap_sku && - trans->bw_limit >= 320) { + (!trans->cfg->bw_limit || trans->cfg->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] |= @@ -1099,11 +1099,12 @@ iwl_nvm_fixup_sband_iftd(struct iwl_trans *trans, iftype_data->eht_cap.eht_mcs_nss_supp.bw._320.rx_tx_mcs13_max_nss = 0; } - if (trans->bw_limit < 160) + if (trans->cfg->bw_limit && trans->cfg->bw_limit < 160) iftype_data->he_cap.he_cap_elem.phy_cap_info[0] &= ~IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G; - if (trans->bw_limit < 320 || trans->reduced_cap_sku) { + if ((trans->cfg->bw_limit && trans->cfg->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] &= diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h index 6eeafe6f96cc..b3d8b2ba5bfc 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -880,7 +880,6 @@ struct iwl_txq { * only valid for discrete (not integrated) NICs * @invalid_tx_cmd: invalid TX command buffer * @reduced_cap_sku: reduced capability supported SKU - * @bw_limit: the max bandwidth * @step_urm: STEP is in URM, no support for MCS>9 in 320 MHz * @restart: restart worker data * @restart.wk: restart worker @@ -919,7 +918,6 @@ struct iwl_trans { char hw_id_str[52]; u32 sku_id[3]; bool reduced_cap_sku; - u16 bw_limit; bool step_urm; u8 dsbr_urm_fw_dependent:1, diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 83d368ef623a..69191ec5d3e7 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -559,7 +559,7 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); .mac_step = IWL_CFG_ANY, \ .rf_type = IWL_CFG_ANY, \ .rf_step = IWL_CFG_ANY, \ - .bw_limit = IWL_CFG_BW_ANY, \ + .bw_limit = IWL_CFG_ANY, \ .jacket = IWL_CFG_ANY, \ .cores = IWL_CFG_ANY, \ .rf_id = IWL_CFG_ANY, \ @@ -579,453 +579,447 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); #define RF_ID(n) .rf_id = IWL_CFG_RF_ID_##n #define NO_CDB .cdb = IWL_CFG_NO_CDB #define CDB .cdb = IWL_CFG_CDB -#define BW_NO_LIMIT .bw_limit = IWL_CFG_BW_NO_LIM -#define BW_LIMIT(n) .bw_limit = (n) +#define BW_NO_LIMIT .bw_limit = 0 +#define BW_LIMITED .bw_limit = 1 VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { #if IS_ENABLED(CONFIG_IWLMVM) /* 9000 */ IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_killer_1550_name, - DEVICE(0x2526), SUBDEV(0x1550), BW_NO_LIMIT), + DEVICE(0x2526), SUBDEV(0x1550)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, - DEVICE(0x2526), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x2526), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, - DEVICE(0x2526), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x2526), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, - DEVICE(0x30DC), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x30DC), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, - DEVICE(0x30DC), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x30DC), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, - DEVICE(0x31DC), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x31DC), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, - DEVICE(0x31DC), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x31DC), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name, - DEVICE(0xA370), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0xA370), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, - DEVICE(0xA370), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0xA370), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, - DEVICE(0x54F0), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name, - DEVICE(0x54F0), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, - DEVICE(0x51F0), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, - DEVICE(0x51F0), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1551)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, - DEVICE(0x51F0), SUBDEV(0x1691), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1691)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, - DEVICE(0x51F0), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1692)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, - DEVICE(0x51F1), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x51F1), SUBDEV(0x1692)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, - DEVICE(0x54F0), SUBDEV(0x1691), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1691)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, - DEVICE(0x54F0), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1692)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, - DEVICE(0x7A70), SUBDEV(0x1691), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1691)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, - DEVICE(0x7A70), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1692)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690s_name, - DEVICE(0x7AF0), SUBDEV(0x1691), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1691)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_killer_1690i_name, - DEVICE(0x7AF0), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1692)), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_1_name, - DEVICE(0x271C), SUBDEV(0x0214), BW_NO_LIMIT), + DEVICE(0x271C), SUBDEV(0x0214)), IWL_DEV_INFO(iwl_cfg_ma, iwl_ax411_killer_1690s_name, - DEVICE(0x7E40), SUBDEV(0x1691), BW_NO_LIMIT), + DEVICE(0x7E40), SUBDEV(0x1691)), IWL_DEV_INFO(iwl_cfg_ma, iwl_ax411_killer_1690i_name, - DEVICE(0x7E40), SUBDEV(0x1692), BW_NO_LIMIT), + DEVICE(0x7E40), SUBDEV(0x1692)), /* AX200 */ IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_name, - DEVICE(0x2723), BW_NO_LIMIT), + DEVICE(0x2723)), IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_killer_1650w_name, - DEVICE(0x2723), SUBDEV(0x1653), BW_NO_LIMIT), + DEVICE(0x2723), SUBDEV(0x1653)), IWL_DEV_INFO(iwl_ax200_cfg_cc, iwl_ax200_killer_1650x_name, - DEVICE(0x2723), SUBDEV(0x1654), BW_NO_LIMIT), + DEVICE(0x2723), SUBDEV(0x1654)), /* Qu with Hr */ IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x43F0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x43F0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x43F0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x43F0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x0A10), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x0A10)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0xA0F0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0xA0F0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0xA0F0), SUBDEV(0x6074), BW_NO_LIMIT), + DEVICE(0xA0F0), SUBDEV(0x6074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x6074), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x6074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x0310)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x02F0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x02F0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x02F0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x02F0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x0310)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x06F0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x06F0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x06F0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x06F0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x0310)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x34F0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x34F0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x34F0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x34F0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x0310)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x3DF0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x3DF0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x3DF0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x3DF0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x0070), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x0070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x0074), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x0074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x0078), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x0078)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x007C), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x007C)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x0310)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650s_name, - DEVICE(0x4DF0), SUBDEV(0x1651), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x1651)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_killer_1650i_name, - DEVICE(0x4DF0), SUBDEV(0x1652), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x1652)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x2074), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x2074)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x4070), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x4070)), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, - DEVICE(0x4DF0), SUBDEV(0x6074), BW_NO_LIMIT), + DEVICE(0x4DF0), SUBDEV(0x6074)), /* So with HR */ IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0090), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0090)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0020), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0020)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x2020), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x2020)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0024), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0024)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0310)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0510), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0510)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x0A10), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x0A10)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0xE020), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0xE020)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0xE024), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0xE024)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x4020), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x4020)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x6020), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x6020)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, - DEVICE(0x2725), SUBDEV(0x6024), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x6024)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name, - DEVICE(0x2725), SUBDEV(0x1673), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x1673)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name, - DEVICE(0x2725), SUBDEV(0x1674), BW_NO_LIMIT), + DEVICE(0x2725), SUBDEV(0x1674)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x0090), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x0090)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x0098), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x0098)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x00B0), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x00B0)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x0310)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x0510), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x0510)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, - DEVICE(0x7A70), SUBDEV(0x0A10), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x0A10)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x0090), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x0090)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x0098), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x0098)), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x00B0), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x00B0)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x0310), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x0310)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x0510), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x0510)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, - DEVICE(0x7AF0), SUBDEV(0x0A10), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x0A10)), /* So with JF */ IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, - DEVICE(0x7A70), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, - DEVICE(0x7A70), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1552)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_160_name, - DEVICE(0x7AF0), SUBDEV(0x1551), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1551)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_160_name, - DEVICE(0x7AF0), SUBDEV(0x1552), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1552)), /* SO with GF2 */ IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x2726), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x2726), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x2726), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x2726), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x51F0), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x51F0), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x51F0), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x51F1), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x51F1), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x51F1), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x51F1), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x54F0), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x54F0), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x54F0), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x7A70), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x7A70), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x7A70), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x7AF0), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x7AF0), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x7AF0), SUBDEV(0x1672)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675s_name, - DEVICE(0x7F70), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x7F70), SUBDEV(0x1671)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_killer_1675i_name, - DEVICE(0x7F70), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x7F70), SUBDEV(0x1672)), /* MA with GF2 */ IWL_DEV_INFO(iwl_cfg_ma, iwl_ax211_killer_1675s_name, - DEVICE(0x7E40), SUBDEV(0x1671), BW_NO_LIMIT), + DEVICE(0x7E40), SUBDEV(0x1671)), IWL_DEV_INFO(iwl_cfg_ma, iwl_ax211_killer_1675i_name, - DEVICE(0x7E40), SUBDEV(0x1672), BW_NO_LIMIT), + DEVICE(0x7E40), SUBDEV(0x1672)), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9461_160_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9461_name, MAC_TYPE(PU), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9461_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9462_160_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9462_name, MAC_TYPE(PU), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9462_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_160_name, MAC_TYPE(PU), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_name, MAC_TYPE(PU), + IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9560_name, MAC_TYPE(PU), RF_TYPE(JF2), RF_ID(JF), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9270_160_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), BW_NO_LIMIT, CORES(BT_GNSS), NO_CDB), - IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9270_name, DEVICE(0x2526), + IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9270_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), - BW_LIMIT(80), CORES(BT_GNSS), NO_CDB), + BW_LIMITED, CORES(BT_GNSS), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9162_160_name, DEVICE(0x271B), MAC_TYPE(TH), RF_TYPE(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9162_name, DEVICE(0x271B), + IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9162_name, DEVICE(0x271B), MAC_TYPE(TH), RF_TYPE(JF1), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_160_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_name, DEVICE(0x2526), + IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9260_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), /* Qu with Jf */ /* Qu B step */ IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_name, + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9461_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_name, + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9462_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_name, + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), RF_ID(JF), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_killer_1550s_name, - SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), - RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_killer_1550i_name, - SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), - RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_killer_1550s_name, + SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2)), + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2)), /* Qu C step */ IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_160_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_name, + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9461_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_160_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_name, + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9462_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_LIMIT(80), CORES(BT), NO_CDB), + BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_160_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_name, MAC_TYPE(QU), - MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_name, MAC_TYPE(QU), + MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_killer_1550s_name, - SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), - RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_killer_1550i_name, - SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), - RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + SUBDEV(0x1551), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2)), + IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2)), /* QuZ */ IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name, MAC_TYPE(QUZ), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9461_name, MAC_TYPE(QUZ), - RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9461_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name, MAC_TYPE(QUZ), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9462_name, MAC_TYPE(QUZ), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9462_name, MAC_TYPE(QUZ), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name, MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_name, MAC_TYPE(QUZ), - RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9560_name, MAC_TYPE(QUZ), + RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550s_name, - SUBDEV(0x1551), MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), - BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_killer_1550i_name, - SUBDEV(0x1552), MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), - BW_LIMIT(80), CORES(BT), NO_CDB), + SUBDEV(0x1551), MAC_TYPE(QUZ), RF_TYPE(JF2)), + IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9560_killer_1550i_name, + SUBDEV(0x1552), MAC_TYPE(QUZ), RF_TYPE(JF2)), /* Qu with Hr */ /* Qu B step */ IWL_DEV_INFO(iwl_qu_hr1, iwl_ax101_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(HR1), NO_CDB), - IWL_DEV_INFO(iwl_qu_hr, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(B), - RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_qu_hr_80mhz, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(B), + RF_TYPE(HR2), BW_LIMITED, NO_CDB), /* Qu C step */ IWL_DEV_INFO(iwl_qu_hr1, iwl_ax101_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(HR1), NO_CDB), - IWL_DEV_INFO(iwl_qu_hr, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(C), - RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_qu_hr_80mhz, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(C), + RF_TYPE(HR2), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), /* QuZ */ IWL_DEV_INFO(iwl_qu_hr1, iwl_ax101_name, MAC_TYPE(QUZ), RF_TYPE(HR1), NO_CDB), - IWL_DEV_INFO(iwl_qu_hr, iwl_ax203_name, MAC_TYPE(QUZ), - MAC_STEP(B), RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_qu_hr_80mhz, iwl_ax203_name, MAC_TYPE(QUZ), + MAC_STEP(B), RF_TYPE(HR2), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, MAC_TYPE(QUZ), MAC_STEP(B), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), @@ -1037,10 +1031,10 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { NO_CDB), /* So with Hr */ - IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax203_name, MAC_TYPE(SO), - RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), - IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax101_name, MAC_TYPE(SO), - RF_TYPE(HR1), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax203_name, MAC_TYPE(SO), + RF_TYPE(HR2), BW_LIMITED, NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax101_name, MAC_TYPE(SO), + RF_TYPE(HR1), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SO), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_killer_1650i_name, @@ -1048,10 +1042,10 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { MAC_TYPE(SO), RF_TYPE(HR2)), /* So-F with Hr */ - IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax203_name, MAC_TYPE(SOF), - RF_TYPE(HR2), BW_LIMIT(80), NO_CDB), - IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax101_name, MAC_TYPE(SOF), - RF_TYPE(HR1), BW_LIMIT(80), NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax203_name, MAC_TYPE(SOF), + RF_TYPE(HR2), BW_LIMITED, NO_CDB), + IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax101_name, MAC_TYPE(SOF), + RF_TYPE(HR1), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SOF), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), @@ -1064,18 +1058,18 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* SoF with JF2 */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SOF), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_name, MAC_TYPE(SOF), - RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9560_name, MAC_TYPE(SOF), + RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), /* SoF with JF */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SOF), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SOF), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_name, MAC_TYPE(SOF), - RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_name, MAC_TYPE(SOF), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9461_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9462_name, MAC_TYPE(SOF), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), /* So with GF */ IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, MAC_TYPE(SO), @@ -1086,18 +1080,18 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* So with JF2 */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SO), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_name, MAC_TYPE(SO), - RF_TYPE(JF2), RF_ID(JF), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9560_name, MAC_TYPE(SO), + RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), /* So with JF */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SO), RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SO), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_name, MAC_TYPE(SO), - RF_TYPE(JF1), RF_ID(JF1), BW_LIMIT(80), CORES(BT), NO_CDB), - IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_name, MAC_TYPE(SO), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMIT(80), CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9461_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), + IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9462_name, MAC_TYPE(SO), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), #endif /* CONFIG_IWLMVM */ #if IS_ENABLED(CONFIG_IWLMLD) @@ -1121,30 +1115,30 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* Ga (Gl) */ IWL_DEV_INFO(iwl_cfg_bz, iwl_gl_name, MAC_TYPE(GL), RF_TYPE(FM), BW_NO_LIMIT, NO_CDB), - IWL_DEV_INFO(iwl_cfg_bz, iwl_mtp_name, MAC_TYPE(GL), RF_TYPE(FM), - BW_LIMIT(160), NO_CDB), + IWL_DEV_INFO(iwl_cfg_bz_160mhz, iwl_mtp_name, MAC_TYPE(GL), RF_TYPE(FM), + BW_LIMITED, NO_CDB), /* Sc */ IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC), RF_TYPE(WH), BW_NO_LIMIT), - IWL_DEV_INFO(iwl_cfg_sc, iwl_sp_name, MAC_TYPE(SC), RF_TYPE(WH), - BW_LIMIT(160)), + IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC), RF_TYPE(WH), + BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC), RF_TYPE(PE)), IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC2), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC2), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC2), RF_TYPE(WH), BW_NO_LIMIT), - IWL_DEV_INFO(iwl_cfg_sc, iwl_sp_name, MAC_TYPE(SC2), RF_TYPE(WH), - BW_LIMIT(160)), + IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC2), RF_TYPE(WH), + BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC2), RF_TYPE(PE)), IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC2F), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC2F), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC2F), RF_TYPE(WH), BW_NO_LIMIT), - IWL_DEV_INFO(iwl_cfg_sc, iwl_sp_name, MAC_TYPE(SC2F), RF_TYPE(WH), - BW_LIMIT(160)), + IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC2F), RF_TYPE(WH), + BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC2F), RF_TYPE(PE)), /* Dr */ @@ -1345,15 +1339,8 @@ iwl_pci_find_dev_info(u16 device, u16 subsystem_device, dev_info->rf_id != rf_id) continue; - /* - * Check that bw_limit have the same "boolean" value since - * IWL_SUBDEVICE_BW_LIM can only return a boolean value and - * dev_info->bw_limit encodes a non-boolean value. - * dev_info->bw_limit == IWL_CFG_BW_NO_LIM must be equal to - * !bw_limit to have a match. - */ - if (dev_info->bw_limit != IWL_CFG_BW_ANY && - (dev_info->bw_limit == IWL_CFG_BW_NO_LIM) == !!bw_limit) + if (dev_info->bw_limit != (u8)IWL_CFG_ANY && + dev_info->bw_limit != bw_limit) continue; if (dev_info->cores != (u8)IWL_CFG_ANY && @@ -1497,7 +1484,6 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (dev_info) { iwl_trans->cfg = dev_info->cfg; iwl_trans->name = dev_info->name; - iwl_trans->bw_limit = dev_info->bw_limit; } #if IS_ENABLED(CONFIG_IWLMVM) diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index de6e3eaca8cd..0da5e255b063 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -31,7 +31,7 @@ static void devinfo_table_order(struct kunit *test) di->mac_type, di->mac_step, di->rf_type, di->cdb, di->jacket, di->rf_id, - di->bw_limit != IWL_CFG_BW_NO_LIM, + di->bw_limit, di->cores, di->rf_step); if (!ret) { iwl_pci_print_dev_info("No entry found for: ", di); @@ -104,6 +104,37 @@ static void devinfo_no_cfg_dups(struct kunit *test) } } +static void devinfo_check_subdev_match(struct kunit *test) +{ + for (int i = 0; i < iwl_dev_info_table_size; i++) { + const struct iwl_dev_info *di = &iwl_dev_info_table[i]; + + /* if BW limit bit is matched then must have a limit */ + if (di->bw_limit == 1) + KUNIT_EXPECT_NE(test, di->cfg->bw_limit, 0); + + if (di->subdevice == (u16)IWL_CFG_ANY) + continue; + + KUNIT_EXPECT_EQ(test, di->rf_id, (u8)IWL_CFG_ANY); + KUNIT_EXPECT_EQ(test, di->bw_limit, (u8)IWL_CFG_ANY); + KUNIT_EXPECT_EQ(test, di->cores, (u8)IWL_CFG_ANY); + } +} + +static void devinfo_check_killer_subdev(struct kunit *test) +{ + for (int i = 0; i < iwl_dev_info_table_size; i++) { + const struct iwl_dev_info *di = &iwl_dev_info_table[i]; + const char *name = di->name ?: di->cfg->name; + + if (!strstr(name, "Killer")) + continue; + + KUNIT_EXPECT_NE(test, di->subdevice, (u16)IWL_CFG_ANY); + } +} + static void devinfo_pci_ids(struct kunit *test) { struct pci_dev *dev; @@ -177,6 +208,8 @@ static struct kunit_case devinfo_test_cases[] = { KUNIT_CASE(devinfo_table_order), KUNIT_CASE(devinfo_names), KUNIT_CASE(devinfo_no_cfg_dups), + KUNIT_CASE(devinfo_check_subdev_match), + KUNIT_CASE(devinfo_check_killer_subdev), KUNIT_CASE(devinfo_pci_ids), KUNIT_CASE(devinfo_no_trans_cfg_dups), {} -- 2.51.0 From d4bdea6931d345f8b740531e274352516d14c083 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:21 +0300 Subject: [PATCH 04/16] wifi: iwlwifi: cfg: rename BW_NO_LIMIT to BW_NOT_LIMITED It's not clear that it makes sense to have any matches for IWL_CFG_ANY for this bit, but let's assume for now that this makes sense. Then, it's clearer to call this BW_NOT_LIMITED rather than BW_NO_LIMIT, since the last change. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.9b39693b505c.Ib47aa6a072a0e61bbba28383ce54764cd859f19c@changeid --- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 69191ec5d3e7..618b6b9fefa7 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -579,7 +579,7 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); #define RF_ID(n) .rf_id = IWL_CFG_RF_ID_##n #define NO_CDB .cdb = IWL_CFG_NO_CDB #define CDB .cdb = IWL_CFG_CDB -#define BW_NO_LIMIT .bw_limit = 0 +#define BW_NOT_LIMITED .bw_limit = 0 #define BW_LIMITED .bw_limit = 1 VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { @@ -881,41 +881,41 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9461_160_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9461_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9462_160_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9462_name, MAC_TYPE(PU), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc, iwl9560_160_name, MAC_TYPE(PU), RF_TYPE(JF2), RF_ID(JF), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_2ac_cfg_soc_80mhz, iwl9560_name, MAC_TYPE(PU), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9270_160_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), - BW_NO_LIMIT, CORES(BT_GNSS), NO_CDB), + BW_NOT_LIMITED, CORES(BT_GNSS), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9270_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), BW_LIMITED, CORES(BT_GNSS), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9162_160_name, DEVICE(0x271B), MAC_TYPE(TH), RF_TYPE(JF1), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9162_name, DEVICE(0x271B), MAC_TYPE(TH), RF_TYPE(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_160_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9260_2ac_cfg_80mhz, iwl9260_name, DEVICE(0x2526), MAC_TYPE(TH), RF_TYPE(JF2), BW_LIMITED, CORES(BT), NO_CDB), @@ -924,14 +924,14 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* Qu B step */ IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9461_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9462_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF1), RF_ID(JF1_DIV), @@ -940,7 +940,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_160_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), RF_ID(JF), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_name, MAC_TYPE(QU), MAC_STEP(B), RF_TYPE(JF2), RF_ID(JF), @@ -955,7 +955,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9461_160_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9461_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1), @@ -963,14 +963,14 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9462_160_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1_DIV), - BW_NO_LIMIT, CORES(BT), NO_CDB), + BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9462_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg, iwl9560_160_name, MAC_TYPE(QU), - MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_qu_jf_cfg_80mhz, iwl9560_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), @@ -982,16 +982,16 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* QuZ */ IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9461_160_name, MAC_TYPE(QUZ), - RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9461_name, MAC_TYPE(QUZ), RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9462_160_name, MAC_TYPE(QUZ), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9462_name, MAC_TYPE(QUZ), RF_TYPE(JF1), RF_ID(JF1_DIV), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg, iwl9560_160_name, MAC_TYPE(QUZ), - RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF2), RF_ID(JF), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwl9560_quz_a0_jf_b0_cfg_80mhz, iwl9560_name, MAC_TYPE(QUZ), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), @@ -1013,7 +1013,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl_qu_hr_80mhz, iwl_ax203_name, MAC_TYPE(QU), MAC_STEP(C), RF_TYPE(HR2), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, MAC_TYPE(QU), MAC_STEP(C), - RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), + RF_TYPE(HR2), BW_NOT_LIMITED, NO_CDB), /* QuZ */ IWL_DEV_INFO(iwl_qu_hr1, iwl_ax101_name, MAC_TYPE(QUZ), @@ -1021,7 +1021,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl_qu_hr_80mhz, iwl_ax203_name, MAC_TYPE(QUZ), MAC_STEP(B), RF_TYPE(HR2), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_qu_hr, iwl_ax201_name, MAC_TYPE(QUZ), - MAC_STEP(B), RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), + MAC_STEP(B), RF_TYPE(HR2), BW_NOT_LIMITED, NO_CDB), /* Ma */ IWL_DEV_INFO(iwl_cfg_ma, iwl_ax201_name, MAC_TYPE(MA), RF_TYPE(HR2), @@ -1036,7 +1036,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax101_name, MAC_TYPE(SO), RF_TYPE(HR1), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SO), - RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), + RF_TYPE(HR2), BW_NOT_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_killer_1650i_name, DEVICE(0x51f0), SUBDEV(0x1652), MAC_TYPE(SO), RF_TYPE(HR2)), @@ -1047,25 +1047,25 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0_80mhz, iwl_ax101_name, MAC_TYPE(SOF), RF_TYPE(HR1), BW_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_so_a0_hr_a0, iwl_ax201_name, MAC_TYPE(SOF), - RF_TYPE(HR2), BW_NO_LIMIT, NO_CDB), + RF_TYPE(HR2), BW_NOT_LIMITED, NO_CDB), /* So-F with Gf */ IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, MAC_TYPE(SOF), - RF_TYPE(GF), BW_NO_LIMIT, NO_CDB), + RF_TYPE(GF), BW_NOT_LIMITED, NO_CDB), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, MAC_TYPE(SOF), - RF_TYPE(GF), BW_NO_LIMIT, CDB), + RF_TYPE(GF), BW_NOT_LIMITED, CDB), /* SoF with JF2 */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SOF), - RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF2), RF_ID(JF), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9560_name, MAC_TYPE(SOF), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), /* SoF with JF */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SOF), - RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SOF), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9461_name, MAC_TYPE(SOF), RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9462_name, MAC_TYPE(SOF), @@ -1073,21 +1073,21 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* So with GF */ IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, MAC_TYPE(SO), - RF_TYPE(GF), BW_NO_LIMIT, NO_CDB), + RF_TYPE(GF), BW_NOT_LIMITED, NO_CDB), IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, MAC_TYPE(SO), - RF_TYPE(GF), BW_NO_LIMIT, CDB), + RF_TYPE(GF), BW_NOT_LIMITED, CDB), /* So with JF2 */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9560_160_name, MAC_TYPE(SO), - RF_TYPE(JF2), RF_ID(JF), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF2), RF_ID(JF), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9560_name, MAC_TYPE(SO), RF_TYPE(JF2), RF_ID(JF), BW_LIMITED, CORES(BT), NO_CDB), /* So with JF */ IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9461_160_name, MAC_TYPE(SO), - RF_TYPE(JF1), RF_ID(JF1), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0, iwl9462_160_name, MAC_TYPE(SO), - RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NO_LIMIT, CORES(BT), NO_CDB), + RF_TYPE(JF1), RF_ID(JF1_DIV), BW_NOT_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9461_name, MAC_TYPE(SO), RF_TYPE(JF1), RF_ID(JF1), BW_LIMITED, CORES(BT), NO_CDB), IWL_DEV_INFO(iwlax210_2ax_cfg_so_jf_b0_80mhz, iwl9462_name, MAC_TYPE(SO), @@ -1114,7 +1114,7 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* Ga (Gl) */ IWL_DEV_INFO(iwl_cfg_bz, iwl_gl_name, MAC_TYPE(GL), RF_TYPE(FM), - BW_NO_LIMIT, NO_CDB), + BW_NOT_LIMITED, NO_CDB), IWL_DEV_INFO(iwl_cfg_bz_160mhz, iwl_mtp_name, MAC_TYPE(GL), RF_TYPE(FM), BW_LIMITED, NO_CDB), @@ -1122,21 +1122,21 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC), RF_TYPE(WH), - BW_NO_LIMIT), + BW_NOT_LIMITED), IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC), RF_TYPE(WH), BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC), RF_TYPE(PE)), IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC2), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC2), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC2), RF_TYPE(WH), - BW_NO_LIMIT), + BW_NOT_LIMITED), IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC2), RF_TYPE(WH), BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC2), RF_TYPE(PE)), IWL_DEV_INFO(iwl_cfg_sc, iwl_ax211_name, MAC_TYPE(SC2F), RF_TYPE(GF)), IWL_DEV_INFO(iwl_cfg_sc, iwl_fm_name, MAC_TYPE(SC2F), RF_TYPE(FM)), IWL_DEV_INFO(iwl_cfg_sc, iwl_wh_name, MAC_TYPE(SC2F), RF_TYPE(WH), - BW_NO_LIMIT), + BW_NOT_LIMITED), IWL_DEV_INFO(iwl_cfg_sc_160mhz, iwl_sp_name, MAC_TYPE(SC2F), RF_TYPE(WH), BW_LIMITED), IWL_DEV_INFO(iwl_cfg_sc, iwl_pe_name, MAC_TYPE(SC2F), RF_TYPE(PE)), -- 2.51.0 From 70e15105050f9c32d9bda578c323d29fe45bbd21 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:22 +0300 Subject: [PATCH 05/16] wifi: iwlwifi: pcie: remove 'ent' argument from alloc The alloc function iwl_trans_pcie_alloc() doesn't use the 'ent' argument, so remove it. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.0351805072bc.Id309b38817edc116bf9a921608a93b7734f21b05@changeid --- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 2 +- drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 1 - drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 618b6b9fefa7..4c2786655f7d 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -1422,7 +1422,7 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) /* make sure trans is the first element in iwl_cfg */ BUILD_BUG_ON(offsetof(struct iwl_cfg, trans)); - iwl_trans = iwl_trans_pcie_alloc(pdev, ent, trans); + iwl_trans = iwl_trans_pcie_alloc(pdev, trans); if (IS_ERR(iwl_trans)) return PTR_ERR(iwl_trans); diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h index 390e447b452c..c0a670994ce7 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h +++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h @@ -553,7 +553,6 @@ iwl_trans_pcie_get_trans(struct iwl_trans_pcie *trans_pcie) */ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, - const struct pci_device_id *ent, const struct iwl_cfg_trans_params *cfg_trans); void iwl_trans_pcie_free(struct iwl_trans *trans); void iwl_trans_pcie_free_pnvm_dram_regions(struct iwl_dram_regions *dram_regions, diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c index 75e87b8c4a2d..a6187922c06f 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -3796,9 +3796,9 @@ void iwl_trans_pcie_sync_nmi(struct iwl_trans *trans) iwl_trans_sync_nmi_with_addr(trans, inta_addr, sw_err_bit); } -struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, - const struct pci_device_id *ent, - const struct iwl_cfg_trans_params *cfg_trans) +struct iwl_trans * +iwl_trans_pcie_alloc(struct pci_dev *pdev, + const struct iwl_cfg_trans_params *cfg_trans) { struct iwl_trans_pcie *trans_pcie, **priv; struct iwl_trans *trans; -- 2.51.0 From 3bf7c3980b0a2dafbe9dffa4f3e81a579de15461 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:23 +0300 Subject: [PATCH 06/16] wifi: iwlwifi: cfg: minor fixes for Sc Remove the erroneously named IWL_DEVICE_BZ_COMMON macro from the Sc file and fix some indentation. Also bump the minimum FW version since it's not released yet anyway, right now this is mostly to make the config different from iwl_bz_cfg which would otherwise be the same with the upcoming transport config cleanups. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.b313d54b8809.Ia975b6d5460996f2a2761dd3d0fef4a56f1f3e24@changeid --- drivers/net/wireless/intel/iwlwifi/cfg/sc.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c index 800b6ffec4af..99955fc9331d 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c @@ -13,7 +13,7 @@ #define IWL_SC_UCODE_API_MAX 98 /* Lowest firmware API version supported */ -#define IWL_SC_UCODE_API_MIN 93 +#define IWL_SC_UCODE_API_MIN 98 /* NVM versions */ #define IWL_SC_NVM_VERSION 0x0a1d @@ -55,23 +55,23 @@ static const struct iwl_base_params iwl_sc_base_params = { .pcie_l1_allowed = true, }; -#define IWL_DEVICE_BZ_COMMON \ - .ucode_api_max = IWL_SC_UCODE_API_MAX, \ - .ucode_api_min = IWL_SC_UCODE_API_MIN, \ +#define IWL_DEVICE_SC \ + .ucode_api_max = IWL_SC_UCODE_API_MAX, \ + .ucode_api_min = IWL_SC_UCODE_API_MIN, \ .led_mode = IWL_LED_RF_STATE, \ .nvm_hw_section_num = 10, \ .non_shared_ant = ANT_B, \ .dccm_offset = IWL_SC_DCCM_OFFSET, \ .dccm_len = IWL_SC_DCCM_LEN, \ .dccm2_offset = IWL_SC_DCCM2_OFFSET, \ - .dccm2_len = IWL_SC_DCCM2_LEN, \ + .dccm2_len = IWL_SC_DCCM2_LEN, \ .smem_offset = IWL_SC_SMEM_OFFSET, \ .smem_len = IWL_SC_SMEM_LEN, \ .apmg_not_supported = true, \ .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x30, \ - .nvm_ver = IWL_SC_NVM_VERSION, \ + .nvm_ver = IWL_SC_NVM_VERSION, \ .trans.rf_id = true, \ .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ @@ -114,10 +114,7 @@ static const struct iwl_base_params iwl_sc_base_params = { .addr = DBGI_SRAM_FIFO_POINTERS, \ .mask = DBGI_SRAM_FIFO_POINTERS_WR_PTR_MSK, \ }, \ - } - -#define IWL_DEVICE_SC \ - IWL_DEVICE_BZ_COMMON, \ + }, \ .uhb_supported = true, \ .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ .num_rbds = IWL_NUM_RBDS_SC_EHT, \ -- 2.51.0 From 35ac275ebe0c4ad274072df8e0cf8d1fb9713116 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:24 +0300 Subject: [PATCH 07/16] wifi: iwlwifi: cfg: finish config split A long time ago, when transport vs. device configs were introduced, we wanted to eventually have a list of PCI IDs and a separate list of devices, but for simplicity embedded the transport config in the whole config, and it all got confusing. Finish splitting that out. Doing so requires having more IWL_DEV_INFO() entries, but the whole trans/cfg aliasing goes away and the code becomes a lot simpler. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.e03f65c0f693.I076a997f800db455b575008f9488b151738ad7ec@changeid --- drivers/net/wireless/intel/iwlwifi/cfg/1000.c | 23 +- drivers/net/wireless/intel/iwlwifi/cfg/2000.c | 48 +- .../net/wireless/intel/iwlwifi/cfg/22000.c | 5 - drivers/net/wireless/intel/iwlwifi/cfg/5000.c | 45 +- drivers/net/wireless/intel/iwlwifi/cfg/6000.c | 153 +- drivers/net/wireless/intel/iwlwifi/cfg/7000.c | 123 +- drivers/net/wireless/intel/iwlwifi/cfg/8000.c | 48 +- .../net/wireless/intel/iwlwifi/cfg/ax210.c | 26 - drivers/net/wireless/intel/iwlwifi/cfg/bz.c | 6 - drivers/net/wireless/intel/iwlwifi/cfg/dr.c | 6 - drivers/net/wireless/intel/iwlwifi/cfg/sc.c | 6 - .../net/wireless/intel/iwlwifi/iwl-config.h | 136 +- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 1634 ++++++++++++----- .../wireless/intel/iwlwifi/tests/devinfo.c | 6 +- 14 files changed, 1471 insertions(+), 794 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/1000.c b/drivers/net/wireless/intel/iwlwifi/cfg/1000.c index f172ffd2a841..20daa503d643 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/1000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/1000.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved. - * Copyright(c) 2018 - 2020, 2023 Intel Corporation + * Copyright(c) 2018 - 2020, 2023, 2025 Intel Corporation *****************************************************************************/ #include @@ -60,54 +60,59 @@ static const struct iwl_eeprom_params iwl1000_eeprom_params = { } }; +const struct iwl_cfg_trans_params iwl1000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_1000, + .base_params = &iwl1000_base_params, +}; + #define IWL_DEVICE_1000 \ .fw_name_pre = IWL1000_FW_PRE, \ .ucode_api_max = IWL1000_UCODE_API_MAX, \ .ucode_api_min = IWL1000_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_1000, \ .max_inst_size = IWLAGN_RTC_INST_SIZE, \ .max_data_size = IWLAGN_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_1000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_1000_TX_POWER_VERSION, \ - .trans.base_params = &iwl1000_base_params, \ .eeprom_params = &iwl1000_eeprom_params, \ .led_mode = IWL_LED_BLINK const struct iwl_cfg iwl1000_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 1000 BGN", IWL_DEVICE_1000, .ht_params = &iwl1000_ht_params, }; +const char iwl1000_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 1000 BGN"; + const struct iwl_cfg iwl1000_bg_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 1000 BG", IWL_DEVICE_1000, }; +const char iwl1000_bg_name[] = "Intel(R) Centrino(R) Wireless-N 1000 BG"; + #define IWL_DEVICE_100 \ .fw_name_pre = IWL100_FW_PRE, \ .ucode_api_max = IWL100_UCODE_API_MAX, \ .ucode_api_min = IWL100_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_100, \ .max_inst_size = IWLAGN_RTC_INST_SIZE, \ .max_data_size = IWLAGN_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_1000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_1000_TX_POWER_VERSION, \ - .trans.base_params = &iwl1000_base_params, \ .eeprom_params = &iwl1000_eeprom_params, \ .led_mode = IWL_LED_RF_STATE, \ .rx_with_siso_diversity = true const struct iwl_cfg iwl100_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 100 BGN", IWL_DEVICE_100, .ht_params = &iwl1000_ht_params, }; +const char iwl100_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 100 BGN"; + const struct iwl_cfg iwl100_bg_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 100 BG", IWL_DEVICE_100, }; +const char iwl100_bg_name[] = "Intel(R) Centrino(R) Wireless-N 100 BG"; + MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL100_MODULE_FIRMWARE(IWL100_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/2000.c b/drivers/net/wireless/intel/iwlwifi/cfg/2000.c index 6f3f26da0ad5..22656d6ca8ee 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/2000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/2000.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved. - * Copyright(c) 2018 - 2020, 2023 Intel Corporation + * Copyright(c) 2018 - 2020, 2023, 2025 Intel Corporation *****************************************************************************/ #include @@ -86,97 +86,103 @@ static const struct iwl_eeprom_params iwl20x0_eeprom_params = { .enhanced_txpower = true, }; +const struct iwl_cfg_trans_params iwl2000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_2000, + .base_params = &iwl2000_base_params, +}; + #define IWL_DEVICE_2000 \ .fw_name_pre = IWL2000_FW_PRE, \ .ucode_api_max = IWL2000_UCODE_API_MAX, \ .ucode_api_min = IWL2000_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_2000, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_2000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ - .trans.base_params = &iwl2000_base_params, \ .eeprom_params = &iwl20x0_eeprom_params, \ .led_mode = IWL_LED_RF_STATE const struct iwl_cfg iwl2000_2bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 2200 BGN", IWL_DEVICE_2000, .ht_params = &iwl2000_ht_params, }; -const struct iwl_cfg iwl2000_2bgn_d_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 2200D BGN", - IWL_DEVICE_2000, - .ht_params = &iwl2000_ht_params, +const char iwl2000_2bgn_name[] = "Intel(R) Centrino(R) Wireless-N 2200 BGN"; +const char iwl2000_2bgn_d_name[] = "Intel(R) Centrino(R) Wireless-N 2200D BGN"; + +const struct iwl_cfg_trans_params iwl2030_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_2030, + .base_params = &iwl2030_base_params, }; #define IWL_DEVICE_2030 \ .fw_name_pre = IWL2030_FW_PRE, \ .ucode_api_max = IWL2030_UCODE_API_MAX, \ .ucode_api_min = IWL2030_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_2030, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_2000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ - .trans.base_params = &iwl2030_base_params, \ .eeprom_params = &iwl20x0_eeprom_params, \ .led_mode = IWL_LED_RF_STATE const struct iwl_cfg iwl2030_2bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 2230 BGN", IWL_DEVICE_2030, .ht_params = &iwl2000_ht_params, }; +const char iwl2030_2bgn_name[] = "Intel(R) Centrino(R) Wireless-N 2230 BGN"; + +const struct iwl_cfg_trans_params iwl105_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_105, + .base_params = &iwl2000_base_params, +}; + #define IWL_DEVICE_105 \ .fw_name_pre = IWL105_FW_PRE, \ .ucode_api_max = IWL105_UCODE_API_MAX, \ .ucode_api_min = IWL105_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_105, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_2000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ - .trans.base_params = &iwl2000_base_params, \ .eeprom_params = &iwl20x0_eeprom_params, \ .led_mode = IWL_LED_RF_STATE, \ .rx_with_siso_diversity = true const struct iwl_cfg iwl105_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 105 BGN", IWL_DEVICE_105, .ht_params = &iwl2000_ht_params, }; -const struct iwl_cfg iwl105_bgn_d_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 105D BGN", - IWL_DEVICE_105, - .ht_params = &iwl2000_ht_params, +const char iwl105_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 105 BGN"; +const char iwl105_bgn_d_name[] = "Intel(R) Centrino(R) Wireless-N 105D BGN"; + +const struct iwl_cfg_trans_params iwl135_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_135, + .base_params = &iwl2030_base_params, }; #define IWL_DEVICE_135 \ .fw_name_pre = IWL135_FW_PRE, \ .ucode_api_max = IWL135_UCODE_API_MAX, \ .ucode_api_min = IWL135_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_135, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_2000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ - .trans.base_params = &iwl2030_base_params, \ .eeprom_params = &iwl20x0_eeprom_params, \ .led_mode = IWL_LED_RF_STATE, \ .rx_with_siso_diversity = true const struct iwl_cfg iwl135_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 135 BGN", IWL_DEVICE_135, .ht_params = &iwl2000_ht_params, }; +const char iwl135_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 135 BGN"; + MODULE_FIRMWARE(IWL2000_MODULE_FIRMWARE(IWL2000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL2030_MODULE_FIRMWARE(IWL2030_UCODE_API_MAX)); MODULE_FIRMWARE(IWL105_MODULE_FIRMWARE(IWL105_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c index 59d0fa2193f5..21d5a02933a6 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/22000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/22000.c @@ -81,13 +81,10 @@ const struct iwl_ht_params iwl_22000_ht_params = { .smem_len = IWL_22000_SMEM_LEN, \ .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x380, \ .ht_params = &iwl_22000_ht_params, \ .nvm_ver = IWL_22000_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ .dbgc_supported = true, \ .min_umac_error_event_table = 0x400000, \ @@ -107,8 +104,6 @@ const struct iwl_ht_params iwl_22000_ht_params = { #define IWL_DEVICE_22500 \ IWL_DEVICE_22000_COMMON, \ .ucode_api_max = IWL_22000_UCODE_API_MAX, \ - .trans.device_family = IWL_DEVICE_FAMILY_22000, \ - .trans.base_params = &iwl_22000_base_params, \ .gp2_reg_addr = 0xa02c68, \ .mon_dram_regs = { \ .write_ptr = { \ diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/5000.c b/drivers/net/wireless/intel/iwlwifi/cfg/5000.c index de7ede59a994..36909f6323db 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/5000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/5000.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2014 Intel Corporation. All rights reserved. - * Copyright(c) 2018 - 2020, 2023 Intel Corporation + * Copyright(c) 2018 - 2020, 2023, 2025 Intel Corporation *****************************************************************************/ #include @@ -58,21 +58,23 @@ static const struct iwl_eeprom_params iwl5000_eeprom_params = { }, }; +const struct iwl_cfg_trans_params iwl5000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_5000, + .base_params = &iwl5000_base_params, +}; + #define IWL_DEVICE_5000 \ .fw_name_pre = IWL5000_FW_PRE, \ .ucode_api_max = IWL5000_UCODE_API_MAX, \ .ucode_api_min = IWL5000_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_5000, \ .max_inst_size = IWLAGN_RTC_INST_SIZE, \ .max_data_size = IWLAGN_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_5000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_5000_TX_POWER_VERSION, \ - .trans.base_params = &iwl5000_base_params, \ .eeprom_params = &iwl5000_eeprom_params, \ .led_mode = IWL_LED_BLINK const struct iwl_cfg iwl5300_agn_cfg = { - .name = "Intel(R) Ultimate N WiFi Link 5300 AGN", IWL_DEVICE_5000, /* at least EEPROM 0x11A has wrong info */ .valid_tx_ant = ANT_ABC, /* .cfg overwrite */ @@ -80,71 +82,72 @@ const struct iwl_cfg iwl5300_agn_cfg = { .ht_params = &iwl5000_ht_params, }; -const struct iwl_cfg iwl5100_bgn_cfg = { - .name = "Intel(R) WiFi Link 5100 BGN", +const char iwl5300_agn_name[] = "Intel(R) Ultimate N WiFi Link 5300 AGN"; + +const struct iwl_cfg iwl5100_n_cfg = { IWL_DEVICE_5000, .valid_tx_ant = ANT_B, /* .cfg overwrite */ .valid_rx_ant = ANT_AB, /* .cfg overwrite */ .ht_params = &iwl5000_ht_params, }; +const char iwl5100_bgn_name[] = "Intel(R) WiFi Link 5100 BGN"; + const struct iwl_cfg iwl5100_abg_cfg = { - .name = "Intel(R) WiFi Link 5100 ABG", IWL_DEVICE_5000, .valid_tx_ant = ANT_B, /* .cfg overwrite */ .valid_rx_ant = ANT_AB, /* .cfg overwrite */ }; -const struct iwl_cfg iwl5100_agn_cfg = { - .name = "Intel(R) WiFi Link 5100 AGN", - IWL_DEVICE_5000, - .valid_tx_ant = ANT_B, /* .cfg overwrite */ - .valid_rx_ant = ANT_AB, /* .cfg overwrite */ - .ht_params = &iwl5000_ht_params, -}; +const char iwl5100_abg_name[] = "Intel(R) WiFi Link 5100 ABG"; +const char iwl5100_agn_name[] = "Intel(R) WiFi Link 5100 AGN"; const struct iwl_cfg iwl5350_agn_cfg = { - .name = "Intel(R) WiMAX/WiFi Link 5350 AGN", .fw_name_pre = IWL5000_FW_PRE, .ucode_api_max = IWL5000_UCODE_API_MAX, .ucode_api_min = IWL5000_UCODE_API_MIN, - .trans.device_family = IWL_DEVICE_FAMILY_5000, .max_inst_size = IWLAGN_RTC_INST_SIZE, .max_data_size = IWLAGN_RTC_DATA_SIZE, .nvm_ver = EEPROM_5050_EEPROM_VERSION, .nvm_calib_ver = EEPROM_5050_TX_POWER_VERSION, - .trans.base_params = &iwl5000_base_params, .eeprom_params = &iwl5000_eeprom_params, .ht_params = &iwl5000_ht_params, .led_mode = IWL_LED_BLINK, .internal_wimax_coex = true, }; +const char iwl5350_agn_name[] = "Intel(R) WiMAX/WiFi Link 5350 AGN"; + +const struct iwl_cfg_trans_params iwl5150_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_5150, + .base_params = &iwl5000_base_params, +}; + #define IWL_DEVICE_5150 \ .fw_name_pre = IWL5150_FW_PRE, \ .ucode_api_max = IWL5150_UCODE_API_MAX, \ .ucode_api_min = IWL5150_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_5150, \ .max_inst_size = IWLAGN_RTC_INST_SIZE, \ .max_data_size = IWLAGN_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_5050_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_5050_TX_POWER_VERSION, \ - .trans.base_params = &iwl5000_base_params, \ .eeprom_params = &iwl5000_eeprom_params, \ .led_mode = IWL_LED_BLINK, \ .internal_wimax_coex = true const struct iwl_cfg iwl5150_agn_cfg = { - .name = "Intel(R) WiMAX/WiFi Link 5150 AGN", IWL_DEVICE_5150, .ht_params = &iwl5000_ht_params, }; +const char iwl5150_agn_name[] = "Intel(R) WiMAX/WiFi Link 5150 AGN"; + const struct iwl_cfg iwl5150_abg_cfg = { - .name = "Intel(R) WiMAX/WiFi Link 5150 ABG", IWL_DEVICE_5150, }; +const char iwl5150_abg_name[] = "Intel(R) WiMAX/WiFi Link 5150 ABG"; + MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL5150_MODULE_FIRMWARE(IWL5150_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/6000.c b/drivers/net/wireless/intel/iwlwifi/cfg/6000.c index f013cf420569..09a68712114f 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/6000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/6000.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved. - * Copyright(c) 2018 - 2020, 2023 Intel Corporation + * Copyright(c) 2018 - 2020, 2023, 2025 Intel Corporation *****************************************************************************/ #include @@ -107,143 +107,112 @@ static const struct iwl_eeprom_params iwl6000_eeprom_params = { .enhanced_txpower = true, }; +const struct iwl_cfg_trans_params iwl6005_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6005, + .base_params = &iwl6000_g2_base_params, +}; + #define IWL_DEVICE_6005 \ .fw_name_pre = IWL6005_FW_PRE, \ .ucode_api_max = IWL6000G2_UCODE_API_MAX, \ .ucode_api_min = IWL6000G2_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6005, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_6005_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6005_TX_POWER_VERSION, \ - .trans.base_params = &iwl6000_g2_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_RF_STATE -const struct iwl_cfg iwl6005_2agn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6205 AGN", +const struct iwl_cfg iwl6005_n_cfg = { IWL_DEVICE_6005, .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl6005_2abg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6205 ABG", - IWL_DEVICE_6005, -}; - -const struct iwl_cfg iwl6005_2bg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6205 BG", - IWL_DEVICE_6005, -}; - -const struct iwl_cfg iwl6005_2agn_sff_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6205S AGN", - IWL_DEVICE_6005, - .ht_params = &iwl6000_ht_params, -}; +const char iwl6005_2agn_name[] = "Intel(R) Centrino(R) Advanced-N 6205 AGN"; +const char iwl6005_2agn_sff_name[] = "Intel(R) Centrino(R) Advanced-N 6205S AGN"; +const char iwl6005_2agn_d_name[] = "Intel(R) Centrino(R) Advanced-N 6205D AGN"; +const char iwl6005_2agn_mow1_name[] = "Intel(R) Centrino(R) Advanced-N 6206 AGN"; +const char iwl6005_2agn_mow2_name[] = "Intel(R) Centrino(R) Advanced-N 6207 AGN"; -const struct iwl_cfg iwl6005_2agn_d_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6205D AGN", +const struct iwl_cfg iwl6005_non_n_cfg = { IWL_DEVICE_6005, - .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl6005_2agn_mow1_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6206 AGN", - IWL_DEVICE_6005, - .ht_params = &iwl6000_ht_params, -}; +const char iwl6005_2abg_name[] = "Intel(R) Centrino(R) Advanced-N 6205 ABG"; +const char iwl6005_2bg_name[] = "Intel(R) Centrino(R) Advanced-N 6205 BG"; -const struct iwl_cfg iwl6005_2agn_mow2_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6207 AGN", - IWL_DEVICE_6005, - .ht_params = &iwl6000_ht_params, +const struct iwl_cfg_trans_params iwl6030_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6030, + .base_params = &iwl6000_g2_base_params, }; #define IWL_DEVICE_6030 \ .fw_name_pre = IWL6030_FW_PRE, \ .ucode_api_max = IWL6000G2_UCODE_API_MAX, \ .ucode_api_min = IWL6000G2_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6030, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_6030_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ - .trans.base_params = &iwl6000_g2_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_RF_STATE -const struct iwl_cfg iwl6030_2agn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6230 AGN", +const struct iwl_cfg iwl6030_n_cfg = { IWL_DEVICE_6030, .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl6030_2abg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6230 ABG", - IWL_DEVICE_6030, -}; +const char iwl6030_2agn_name[] = "Intel(R) Centrino(R) Advanced-N 6230 AGN"; +const char iwl6030_2bgn_name[] = "Intel(R) Centrino(R) Advanced-N 6230 BGN"; +const char iwl1030_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 1030 BGN"; +const char iwl1030_bg_name[] = "Intel(R) Centrino(R) Wireless-N 1030 BG"; -const struct iwl_cfg iwl6030_2bgn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6230 BGN", +const struct iwl_cfg iwl6030_non_n_cfg = { IWL_DEVICE_6030, - .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl6030_2bg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6230 BG", - IWL_DEVICE_6030, -}; +const char iwl6030_2abg_name[] = "Intel(R) Centrino(R) Advanced-N 6230 ABG"; +const char iwl6030_2bg_name[] = "Intel(R) Centrino(R) Advanced-N 6230 BG"; #define IWL_DEVICE_6035 \ .fw_name_pre = IWL6030_FW_PRE, \ .ucode_api_max = IWL6035_UCODE_API_MAX, \ .ucode_api_min = IWL6035_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6030, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_6030_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ - .trans.base_params = &iwl6000_g2_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_RF_STATE const struct iwl_cfg iwl6035_2agn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6235 AGN", - IWL_DEVICE_6035, - .ht_params = &iwl6000_ht_params, -}; - -const struct iwl_cfg iwl6035_2agn_sff_cfg = { - .name = "Intel(R) Centrino(R) Ultimate-N 6235 AGN", IWL_DEVICE_6035, .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl1030_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 1030 BGN", - IWL_DEVICE_6030, - .ht_params = &iwl6000_ht_params, -}; - -const struct iwl_cfg iwl1030_bg_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 1030 BG", - IWL_DEVICE_6030, -}; +const char iwl6035_2agn_name[] = "Intel(R) Centrino(R) Advanced-N 6235 AGN"; +const char iwl6035_2agn_sff_name[] = "Intel(R) Centrino(R) Ultimate-N 6235 AGN"; const struct iwl_cfg iwl130_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 130 BGN", IWL_DEVICE_6030, .ht_params = &iwl6000_ht_params, .rx_with_siso_diversity = true, }; +const char iwl130_bgn_name[] = "Intel(R) Centrino(R) Wireless-N 130 BGN"; + const struct iwl_cfg iwl130_bg_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N 130 BG", IWL_DEVICE_6030, .rx_with_siso_diversity = true, }; +const char iwl130_bg_name[] = "Intel(R) Centrino(R) Wireless-N 130 BG"; + +const struct iwl_cfg_trans_params iwl6000i_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6000i, + .base_params = &iwl6000_base_params, +}; + /* * "i": Internal configuration, use internal Power Amplifier */ @@ -251,101 +220,111 @@ const struct iwl_cfg iwl130_bg_cfg = { .fw_name_pre = IWL6000_FW_PRE, \ .ucode_api_max = IWL6000_UCODE_API_MAX, \ .ucode_api_min = IWL6000_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6000i, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .valid_tx_ant = ANT_BC, /* .cfg overwrite */ \ .valid_rx_ant = ANT_BC, /* .cfg overwrite */ \ .nvm_ver = EEPROM_6000_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, \ - .trans.base_params = &iwl6000_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_BLINK const struct iwl_cfg iwl6000i_2agn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6200 AGN", IWL_DEVICE_6000i, .ht_params = &iwl6000_ht_params, }; -const struct iwl_cfg iwl6000i_2abg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6200 ABG", +const char iwl6000i_2agn_name[] = "Intel(R) Centrino(R) Advanced-N 6200 AGN"; + +const struct iwl_cfg iwl6000i_non_n_cfg = { IWL_DEVICE_6000i, }; -const struct iwl_cfg iwl6000i_2bg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N 6200 BG", - IWL_DEVICE_6000i, +const char iwl6000i_2abg_name[] = "Intel(R) Centrino(R) Advanced-N 6200 ABG"; +const char iwl6000i_2bg_name[] = "Intel(R) Centrino(R) Advanced-N 6200 BG"; + +const struct iwl_cfg_trans_params iwl6050_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6050, + .base_params = &iwl6050_base_params, }; #define IWL_DEVICE_6050 \ .fw_name_pre = IWL6050_FW_PRE, \ .ucode_api_max = IWL6050_UCODE_API_MAX, \ .ucode_api_min = IWL6050_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6050, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .valid_tx_ant = ANT_AB, /* .cfg overwrite */ \ .valid_rx_ant = ANT_AB, /* .cfg overwrite */ \ .nvm_ver = EEPROM_6050_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6050_TX_POWER_VERSION, \ - .trans.base_params = &iwl6050_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_BLINK, \ .internal_wimax_coex = true const struct iwl_cfg iwl6050_2agn_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 AGN", IWL_DEVICE_6050, .ht_params = &iwl6000_ht_params, }; +const char iwl6050_2agn_name[] = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 AGN"; + const struct iwl_cfg iwl6050_2abg_cfg = { - .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 ABG", IWL_DEVICE_6050, }; +const char iwl6050_2abg_name[] = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 ABG"; + +const struct iwl_cfg_trans_params iwl6150_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6150, + .base_params = &iwl6050_base_params, +}; + #define IWL_DEVICE_6150 \ .fw_name_pre = IWL6050_FW_PRE, \ .ucode_api_max = IWL6050_UCODE_API_MAX, \ .ucode_api_min = IWL6050_UCODE_API_MIN, \ - .trans.device_family = IWL_DEVICE_FAMILY_6150, \ .max_inst_size = IWL60_RTC_INST_SIZE, \ .max_data_size = IWL60_RTC_DATA_SIZE, \ .nvm_ver = EEPROM_6150_EEPROM_VERSION, \ .nvm_calib_ver = EEPROM_6150_TX_POWER_VERSION, \ - .trans.base_params = &iwl6050_base_params, \ .eeprom_params = &iwl6000_eeprom_params, \ .led_mode = IWL_LED_BLINK, \ .internal_wimax_coex = true const struct iwl_cfg iwl6150_bgn_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN", IWL_DEVICE_6150, .ht_params = &iwl6000_ht_params, }; +const char iwl6150_bgn_name[] = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN"; + const struct iwl_cfg iwl6150_bg_cfg = { - .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BG", IWL_DEVICE_6150, }; +const char iwl6150_bg_name[] = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BG"; + +const struct iwl_cfg_trans_params iwl6000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_6000, + .base_params = &iwl6000_base_params, +}; + const struct iwl_cfg iwl6000_3agn_cfg = { - .name = "Intel(R) Centrino(R) Ultimate-N 6300 AGN", .fw_name_pre = IWL6000_FW_PRE, .ucode_api_max = IWL6000_UCODE_API_MAX, .ucode_api_min = IWL6000_UCODE_API_MIN, - .trans.device_family = IWL_DEVICE_FAMILY_6000, .max_inst_size = IWL60_RTC_INST_SIZE, .max_data_size = IWL60_RTC_DATA_SIZE, .nvm_ver = EEPROM_6000_EEPROM_VERSION, .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, - .trans.base_params = &iwl6000_base_params, .eeprom_params = &iwl6000_eeprom_params, .ht_params = &iwl6000_ht_params, .led_mode = IWL_LED_BLINK, }; +const char iwl6000_3agn_name[] = "Intel(R) Centrino(R) Ultimate-N 6300 AGN"; + MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX)); MODULE_FIRMWARE(IWL6005_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c index 4e2afdedf4c6..f81036e241b5 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/7000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/7000.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2012-2014, 2018-2020, 2023 Intel Corporation + * Copyright (C) 2012-2014, 2018-2020, 2023, 2025 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2015 Intel Deutschland GmbH */ @@ -89,9 +89,12 @@ static const struct iwl_ht_params iwl7000_ht_params = { .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ), }; +const struct iwl_cfg_trans_params iwl7000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_7000, + .base_params = &iwl7000_base_params, +}; + #define IWL_DEVICE_7000_COMMON \ - .trans.device_family = IWL_DEVICE_FAMILY_7000, \ - .trans.base_params = &iwl7000_base_params, \ .led_mode = IWL_LED_RF_STATE, \ .nvm_hw_section_num = 0, \ .non_shared_ant = ANT_A, \ @@ -117,8 +120,22 @@ static const struct iwl_ht_params iwl7000_ht_params = { .ucode_api_max = IWL7265D_UCODE_API_MAX, \ .ucode_api_min = IWL7265D_UCODE_API_MIN -const struct iwl_cfg iwl7260_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7260", +const char iwl7260_2ac_name[] = "Intel(R) Dual Band Wireless AC 7260"; +const char iwl7260_2n_name[] = "Intel(R) Dual Band Wireless N 7260"; +const char iwl7260_n_name[] = "Intel(R) Wireless N 7260"; +const char iwl3160_2ac_name[] = "Intel(R) Dual Band Wireless AC 3160"; +const char iwl3160_2n_name[] = "Intel(R) Dual Band Wireless N 3160"; +const char iwl3160_n_name[] = "Intel(R) Wireless N 3160"; +const char iwl3165_2ac_name[] = "Intel(R) Dual Band Wireless AC 3165"; +const char iwl3168_2ac_name[] = "Intel(R) Dual Band Wireless AC 3168"; +const char iwl7265_2ac_name[] = "Intel(R) Dual Band Wireless AC 7265"; +const char iwl7265_2n_name[] = "Intel(R) Dual Band Wireless N 7265"; +const char iwl7265_n_name[] = "Intel(R) Wireless N 7265"; +const char iwl7265d_2ac_name[] = "Intel(R) Dual Band Wireless AC 7265"; +const char iwl7265d_2n_name[] = "Intel(R) Dual Band Wireless N 7265"; +const char iwl7265d_n_name[] = "Intel(R) Wireless N 7265"; + +const struct iwl_cfg iwl7260_cfg = { .fw_name_pre = IWL7260_FW_PRE, IWL_DEVICE_7000, .ht_params = &iwl7000_ht_params, @@ -128,8 +145,7 @@ const struct iwl_cfg iwl7260_2ac_cfg = { .dccm_len = IWL7260_DCCM_LEN, }; -const struct iwl_cfg iwl7260_2ac_cfg_high_temp = { - .name = "Intel(R) Dual Band Wireless AC 7260", +const struct iwl_cfg iwl7260_high_temp_cfg = { .fw_name_pre = IWL7260_FW_PRE, IWL_DEVICE_7000, .ht_params = &iwl7000_ht_params, @@ -141,50 +157,7 @@ const struct iwl_cfg iwl7260_2ac_cfg_high_temp = { .thermal_params = &iwl7000_high_temp_tt_params, }; -const struct iwl_cfg iwl7260_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7260", - .fw_name_pre = IWL7260_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL7260_NVM_VERSION, - .host_interrupt_operation_mode = true, - .lp_xtal_workaround = true, - .dccm_len = IWL7260_DCCM_LEN, -}; - -const struct iwl_cfg iwl7260_n_cfg = { - .name = "Intel(R) Wireless N 7260", - .fw_name_pre = IWL7260_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL7260_NVM_VERSION, - .host_interrupt_operation_mode = true, - .lp_xtal_workaround = true, - .dccm_len = IWL7260_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3160", - .fw_name_pre = IWL3160_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL3160_NVM_VERSION, - .host_interrupt_operation_mode = true, - .dccm_len = IWL3160_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 3160", - .fw_name_pre = IWL3160_FW_PRE, - IWL_DEVICE_7000, - .ht_params = &iwl7000_ht_params, - .nvm_ver = IWL3160_NVM_VERSION, - .host_interrupt_operation_mode = true, - .dccm_len = IWL3160_DCCM_LEN, -}; - -const struct iwl_cfg iwl3160_n_cfg = { - .name = "Intel(R) Wireless N 3160", +const struct iwl_cfg iwl3160_cfg = { .fw_name_pre = IWL3160_FW_PRE, IWL_DEVICE_7000, .ht_params = &iwl7000_ht_params, @@ -211,7 +184,6 @@ static const struct iwl_ht_params iwl7265_ht_params = { }; const struct iwl_cfg iwl3165_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3165", .fw_name_pre = IWL7265D_FW_PRE, IWL_DEVICE_7005D, .ht_params = &iwl7000_ht_params, @@ -221,7 +193,6 @@ const struct iwl_cfg iwl3165_2ac_cfg = { }; const struct iwl_cfg iwl3168_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 3168", .fw_name_pre = IWL3168_FW_PRE, IWL_DEVICE_3008, .ht_params = &iwl7000_ht_params, @@ -231,28 +202,7 @@ const struct iwl_cfg iwl3168_2ac_cfg = { .nvm_type = IWL_NVM_SDP, }; -const struct iwl_cfg iwl7265_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7265", - .fw_name_pre = IWL7265_FW_PRE, - IWL_DEVICE_7005, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7265", - .fw_name_pre = IWL7265_FW_PRE, - IWL_DEVICE_7005, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265_n_cfg = { - .name = "Intel(R) Wireless N 7265", +const struct iwl_cfg iwl7265_cfg = { .fw_name_pre = IWL7265_FW_PRE, IWL_DEVICE_7005, .ht_params = &iwl7265_ht_params, @@ -261,28 +211,7 @@ const struct iwl_cfg iwl7265_n_cfg = { .dccm_len = IWL7265_DCCM_LEN, }; -const struct iwl_cfg iwl7265d_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 7265", - .fw_name_pre = IWL7265D_FW_PRE, - IWL_DEVICE_7005D, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265D_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265d_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 7265", - .fw_name_pre = IWL7265D_FW_PRE, - IWL_DEVICE_7005D, - .ht_params = &iwl7265_ht_params, - .nvm_ver = IWL7265D_NVM_VERSION, - .pwr_tx_backoffs = iwl7265_pwr_tx_backoffs, - .dccm_len = IWL7265_DCCM_LEN, -}; - -const struct iwl_cfg iwl7265d_n_cfg = { - .name = "Intel(R) Wireless N 7265", +const struct iwl_cfg iwl7265d_cfg = { .fw_name_pre = IWL7265D_FW_PRE, IWL_DEVICE_7005D, .ht_params = &iwl7265_ht_params, diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c index d09cf8d7dc01..7f6f6a9ea615 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2014, 2018-2020, 2023 Intel Corporation + * Copyright (C) 2014, 2018-2020, 2023, 2025 Intel Corporation * Copyright (C) 2014-2015 Intel Mobile Communications GmbH * Copyright (C) 2016 Intel Deutschland GmbH */ @@ -76,9 +76,12 @@ static const struct iwl_tt_params iwl8000_tt_params = { .support_tx_backoff = true, }; +const struct iwl_cfg_trans_params iwl8000_trans_cfg = { + .device_family = IWL_DEVICE_FAMILY_8000, + .base_params = &iwl8000_base_params, +}; + #define IWL_DEVICE_8000_COMMON \ - .trans.device_family = IWL_DEVICE_FAMILY_8000, \ - .trans.base_params = &iwl8000_base_params, \ .led_mode = IWL_LED_RF_STATE, \ .nvm_hw_section_num = 10, \ .features = NETIF_F_RXCSUM, \ @@ -96,11 +99,6 @@ static const struct iwl_tt_params iwl8000_tt_params = { .dbgc_supported = true, \ .min_umac_error_event_table = 0x800000 -#define IWL_DEVICE_8000 \ - IWL_DEVICE_8000_COMMON, \ - .ucode_api_max = IWL8000_UCODE_API_MAX, \ - .ucode_api_min = IWL8000_UCODE_API_MIN \ - #define IWL_DEVICE_8260 \ IWL_DEVICE_8000_COMMON, \ .ucode_api_max = IWL8000_UCODE_API_MAX, \ @@ -111,23 +109,20 @@ static const struct iwl_tt_params iwl8000_tt_params = { .ucode_api_max = IWL8265_UCODE_API_MAX, \ .ucode_api_min = IWL8265_UCODE_API_MIN \ -const struct iwl_cfg iwl8260_2n_cfg = { - .name = "Intel(R) Dual Band Wireless N 8260", - .fw_name_pre = IWL8000_FW_PRE, - IWL_DEVICE_8260, - .ht_params = &iwl8000_ht_params, - .nvm_ver = IWL8000_NVM_VERSION, -}; +const char iwl8260_2n_name[] = "Intel(R) Dual Band Wireless N 8260"; +const char iwl8260_2ac_name[] = "Intel(R) Dual Band Wireless AC 8260"; +const char iwl8265_2ac_name[] = "Intel(R) Dual Band Wireless AC 8265"; +const char iwl8275_2ac_name[] = "Intel(R) Dual Band Wireless AC 8275"; +const char iwl4165_2ac_name[] = "Intel(R) Dual Band Wireless AC 4165"; -const struct iwl_cfg iwl8260_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 8260", +const struct iwl_cfg iwl8260_cfg = { .fw_name_pre = IWL8000_FW_PRE, IWL_DEVICE_8260, .ht_params = &iwl8000_ht_params, .nvm_ver = IWL8000_NVM_VERSION, }; -const struct iwl_cfg iwl8265_2ac_cfg = { +const struct iwl_cfg iwl8265_cfg = { .name = "Intel(R) Dual Band Wireless AC 8265", .fw_name_pre = IWL8265_FW_PRE, IWL_DEVICE_8265, @@ -136,22 +131,5 @@ const struct iwl_cfg iwl8265_2ac_cfg = { .vht_mu_mimo_supported = true, }; -const struct iwl_cfg iwl8275_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 8275", - .fw_name_pre = IWL8265_FW_PRE, - IWL_DEVICE_8265, - .ht_params = &iwl8000_ht_params, - .nvm_ver = IWL8000_NVM_VERSION, - .vht_mu_mimo_supported = true, -}; - -const struct iwl_cfg iwl4165_2ac_cfg = { - .name = "Intel(R) Dual Band Wireless AC 4165", - .fw_name_pre = IWL8000_FW_PRE, - IWL_DEVICE_8000, - .ht_params = &iwl8000_ht_params, - .nvm_ver = IWL8000_NVM_VERSION, -}; - MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL8265_MODULE_FIRMWARE(IWL8265_UCODE_API_MAX)); diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c index 40244bdcad6f..610dbbaee26f 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c @@ -72,13 +72,10 @@ static const struct iwl_base_params iwl_ax210_base_params = { .smem_len = IWL_AX210_SMEM_LEN, \ .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x380, \ .ht_params = &iwl_22000_ht_params, \ .nvm_ver = IWL_AX210_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ .dbgc_supported = true, \ .min_umac_error_event_table = 0x400000, \ @@ -98,9 +95,6 @@ static const struct iwl_base_params iwl_ax210_base_params = { #define IWL_DEVICE_AX210 \ IWL_DEVICE_AX210_COMMON, \ .ucode_api_max = IWL_AX210_UCODE_API_MAX, \ - .trans.umac_prph_offset = 0x300000, \ - .trans.device_family = IWL_DEVICE_FAMILY_AX210, \ - .trans.base_params = &iwl_ax210_base_params, \ .min_txq_size = 128, \ .gp2_reg_addr = 0xd02c68, \ .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_HE, \ @@ -218,16 +212,6 @@ const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { .num_rbds = IWL_NUM_RBDS_AX210_HE, }; -const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0_long = { - .name = iwl_ax211_name, - .fw_name_pre = IWL_SO_A_GF_A_FW_PRE, - .uhb_supported = true, - IWL_DEVICE_AX210, - .num_rbds = IWL_NUM_RBDS_AX210_HE, - .trans.xtal_latency = 12000, - .trans.low_latency_xtal = true, -}; - const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { .name = "Intel(R) Wi-Fi 6 AX210 160MHz", .fw_name_pre = IWL_TY_A_GF_A_FW_PRE, @@ -244,16 +228,6 @@ const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0 = { .num_rbds = IWL_NUM_RBDS_AX210_HE, }; -const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0_long = { - .name = iwl_ax411_name, - .fw_name_pre = IWL_SO_A_GF4_A_FW_PRE, - .uhb_supported = true, - IWL_DEVICE_AX210, - .num_rbds = IWL_NUM_RBDS_AX210_HE, - .trans.xtal_latency = 12000, - .trans.low_latency_xtal = true, -}; - const struct iwl_cfg iwl_cfg_ma = { .uhb_supported = true, IWL_DEVICE_AX210, diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/bz.c b/drivers/net/wireless/intel/iwlwifi/cfg/bz.c index abd4bfd2a812..cc405a4b21a9 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/bz.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/bz.c @@ -75,12 +75,9 @@ const struct iwl_ht_params iwl_bz_ht_params = { .smem_offset = IWL_BZ_SMEM_OFFSET, \ .smem_len = IWL_BZ_SMEM_LEN, \ .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x30, \ .nvm_ver = IWL_BZ_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ .dbgc_supported = true, \ .min_umac_error_event_table = 0xD0000, \ @@ -96,9 +93,6 @@ const struct iwl_ht_params iwl_bz_ht_params = { .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, \ }, \ }, \ - .trans.umac_prph_offset = 0x300000, \ - .trans.device_family = IWL_DEVICE_FAMILY_BZ, \ - .trans.base_params = &iwl_bz_base_params, \ .min_txq_size = 128, \ .gp2_reg_addr = 0xd02c68, \ .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_EHT, \ diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/dr.c b/drivers/net/wireless/intel/iwlwifi/cfg/dr.c index 8bbeb2a1f691..7211c6376b99 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/dr.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/dr.c @@ -61,12 +61,9 @@ static const struct iwl_base_params iwl_dr_base_params = { .smem_offset = IWL_DR_SMEM_OFFSET, \ .smem_len = IWL_DR_SMEM_LEN, \ .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x30, \ .nvm_ver = IWL_DR_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ .dbgc_supported = true, \ .min_umac_error_event_table = 0xD0000, \ @@ -82,9 +79,6 @@ static const struct iwl_base_params iwl_dr_base_params = { .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, \ }, \ }, \ - .trans.umac_prph_offset = 0x300000, \ - .trans.device_family = IWL_DEVICE_FAMILY_DR, \ - .trans.base_params = &iwl_dr_base_params, \ .min_txq_size = 128, \ .gp2_reg_addr = 0xd02c68, \ .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_EHT, \ diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c index 99955fc9331d..033cbf4d1a0d 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/sc.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/sc.c @@ -68,12 +68,9 @@ static const struct iwl_base_params iwl_sc_base_params = { .smem_offset = IWL_SC_SMEM_OFFSET, \ .smem_len = IWL_SC_SMEM_LEN, \ .apmg_not_supported = true, \ - .trans.mq_rx_supported = true, \ .vht_mu_mimo_supported = true, \ .mac_addr_from_csr = 0x30, \ .nvm_ver = IWL_SC_NVM_VERSION, \ - .trans.rf_id = true, \ - .trans.gen2 = true, \ .nvm_type = IWL_NVM_EXT, \ .dbgc_supported = true, \ .min_umac_error_event_table = 0xD0000, \ @@ -89,9 +86,6 @@ static const struct iwl_base_params iwl_sc_base_params = { .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, \ }, \ }, \ - .trans.umac_prph_offset = 0x300000, \ - .trans.device_family = IWL_DEVICE_FAMILY_SC, \ - .trans.base_params = &iwl_sc_base_params, \ .min_txq_size = 128, \ .gp2_reg_addr = 0xd02c68, \ .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_EHT, \ diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index f8044af3b0f2..e8fc51fae61d 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -305,11 +305,8 @@ struct iwl_fw_mon_regs { struct iwl_fw_mon_reg cur_frag; }; -#define TRANS_CFG_MARKER BIT(0) - /** * struct iwl_cfg - * @trans: the trans-specific configuration part * @name: Official name of the device * @fw_name_pre: Firmware filename prefix. The api version and extension * (.ucode) will be added to filename before loading from disk. The @@ -360,7 +357,6 @@ struct iwl_fw_mon_regs { * and/or the uCode API version instead. */ struct iwl_cfg { - struct iwl_cfg_trans_params trans; /* params specific to an individual device within a device family */ const char *name; const char *fw_name_pre; @@ -491,6 +487,21 @@ extern const struct pci_device_id iwl_hw_card_ids[]; /* * This list declares the config structures for all devices. */ +extern const struct iwl_cfg_trans_params iwl1000_trans_cfg; +extern const struct iwl_cfg_trans_params iwl5000_trans_cfg; +extern const struct iwl_cfg_trans_params iwl2000_trans_cfg; +extern const struct iwl_cfg_trans_params iwl2030_trans_cfg; +extern const struct iwl_cfg_trans_params iwl105_trans_cfg; +extern const struct iwl_cfg_trans_params iwl135_trans_cfg; +extern const struct iwl_cfg_trans_params iwl5150_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6005_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6030_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6000i_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6050_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6150_trans_cfg; +extern const struct iwl_cfg_trans_params iwl6000_trans_cfg; +extern const struct iwl_cfg_trans_params iwl7000_trans_cfg; +extern const struct iwl_cfg_trans_params iwl8000_trans_cfg; extern const struct iwl_cfg_trans_params iwl9000_trans_cfg; extern const struct iwl_cfg_trans_params iwl9560_trans_cfg; extern const struct iwl_cfg_trans_params iwl9560_long_latency_trans_cfg; @@ -508,6 +519,68 @@ extern const struct iwl_cfg_trans_params iwl_gl_trans_cfg; extern const struct iwl_cfg_trans_params iwl_sc_trans_cfg; extern const struct iwl_cfg_trans_params iwl_dr_trans_cfg; extern const struct iwl_cfg_trans_params iwl_br_trans_cfg; + +extern const char iwl1000_bgn_name[]; +extern const char iwl1000_bg_name[]; +extern const char iwl100_bgn_name[]; +extern const char iwl100_bg_name[]; +extern const char iwl2000_2bgn_name[]; +extern const char iwl2000_2bgn_d_name[]; +extern const char iwl2030_2bgn_name[]; +extern const char iwl105_bgn_name[]; +extern const char iwl105_bgn_d_name[]; +extern const char iwl135_bgn_name[]; +extern const char iwl5300_agn_name[]; +extern const char iwl5100_bgn_name[]; +extern const char iwl5100_abg_name[]; +extern const char iwl5100_agn_name[]; +extern const char iwl5350_agn_name[]; +extern const char iwl5150_agn_name[]; +extern const char iwl5150_abg_name[]; +extern const char iwl6005_2agn_name[]; +extern const char iwl6005_2abg_name[]; +extern const char iwl6005_2bg_name[]; +extern const char iwl6005_2agn_sff_name[]; +extern const char iwl6005_2agn_d_name[]; +extern const char iwl6005_2agn_mow1_name[]; +extern const char iwl6005_2agn_mow2_name[]; +extern const char iwl6030_2agn_name[]; +extern const char iwl6030_2abg_name[]; +extern const char iwl6030_2bgn_name[]; +extern const char iwl6030_2bg_name[]; +extern const char iwl6035_2agn_name[]; +extern const char iwl6035_2agn_sff_name[]; +extern const char iwl1030_bgn_name[]; +extern const char iwl1030_bg_name[]; +extern const char iwl130_bgn_name[]; +extern const char iwl130_bg_name[]; +extern const char iwl6000i_2agn_name[]; +extern const char iwl6000i_2abg_name[]; +extern const char iwl6000i_2bg_name[]; +extern const char iwl6050_2agn_name[]; +extern const char iwl6050_2abg_name[]; +extern const char iwl6150_bgn_name[]; +extern const char iwl6150_bg_name[]; +extern const char iwl6000_3agn_name[]; +extern const char iwl7260_2ac_name[]; +extern const char iwl7260_2n_name[]; +extern const char iwl7260_n_name[]; +extern const char iwl3160_2ac_name[]; +extern const char iwl3160_2n_name[]; +extern const char iwl3160_n_name[]; +extern const char iwl3165_2ac_name[]; +extern const char iwl3168_2ac_name[]; +extern const char iwl7265_2ac_name[]; +extern const char iwl7265_2n_name[]; +extern const char iwl7265_n_name[]; +extern const char iwl7265d_2ac_name[]; +extern const char iwl7265d_2n_name[]; +extern const char iwl7265d_n_name[]; +extern const char iwl8260_2n_name[]; +extern const char iwl8260_2ac_name[]; +extern const char iwl8265_2ac_name[]; +extern const char iwl8275_2ac_name[]; +extern const char iwl4165_2ac_name[]; extern const char iwl9162_name[]; extern const char iwl9260_name[]; extern const char iwl9260_1_name[]; @@ -553,28 +626,18 @@ extern const char iwl_dr_name[]; extern const char iwl_br_name[]; #if IS_ENABLED(CONFIG_IWLDVM) extern const struct iwl_cfg iwl5300_agn_cfg; -extern const struct iwl_cfg iwl5100_agn_cfg; extern const struct iwl_cfg iwl5350_agn_cfg; -extern const struct iwl_cfg iwl5100_bgn_cfg; +extern const struct iwl_cfg iwl5100_n_cfg; extern const struct iwl_cfg iwl5100_abg_cfg; extern const struct iwl_cfg iwl5150_agn_cfg; extern const struct iwl_cfg iwl5150_abg_cfg; -extern const struct iwl_cfg iwl6005_2agn_cfg; -extern const struct iwl_cfg iwl6005_2abg_cfg; -extern const struct iwl_cfg iwl6005_2bg_cfg; -extern const struct iwl_cfg iwl6005_2agn_sff_cfg; -extern const struct iwl_cfg iwl6005_2agn_d_cfg; -extern const struct iwl_cfg iwl6005_2agn_mow1_cfg; -extern const struct iwl_cfg iwl6005_2agn_mow2_cfg; -extern const struct iwl_cfg iwl1030_bgn_cfg; -extern const struct iwl_cfg iwl1030_bg_cfg; -extern const struct iwl_cfg iwl6030_2agn_cfg; -extern const struct iwl_cfg iwl6030_2abg_cfg; -extern const struct iwl_cfg iwl6030_2bgn_cfg; -extern const struct iwl_cfg iwl6030_2bg_cfg; +extern const struct iwl_cfg iwl6005_non_n_cfg; +extern const struct iwl_cfg iwl6005_n_cfg; +extern const struct iwl_cfg iwl6030_n_cfg; +extern const struct iwl_cfg iwl6030_non_n_cfg; extern const struct iwl_cfg iwl6000i_2agn_cfg; -extern const struct iwl_cfg iwl6000i_2abg_cfg; -extern const struct iwl_cfg iwl6000i_2bg_cfg; +extern const struct iwl_cfg iwl6000i_non_n_cfg; +extern const struct iwl_cfg iwl6000i_non_n_cfg; extern const struct iwl_cfg iwl6000_3agn_cfg; extern const struct iwl_cfg iwl6050_2agn_cfg; extern const struct iwl_cfg iwl6050_2abg_cfg; @@ -587,36 +650,23 @@ extern const struct iwl_cfg iwl100_bg_cfg; extern const struct iwl_cfg iwl130_bgn_cfg; extern const struct iwl_cfg iwl130_bg_cfg; extern const struct iwl_cfg iwl2000_2bgn_cfg; -extern const struct iwl_cfg iwl2000_2bgn_d_cfg; extern const struct iwl_cfg iwl2030_2bgn_cfg; extern const struct iwl_cfg iwl6035_2agn_cfg; -extern const struct iwl_cfg iwl6035_2agn_sff_cfg; extern const struct iwl_cfg iwl105_bgn_cfg; -extern const struct iwl_cfg iwl105_bgn_d_cfg; extern const struct iwl_cfg iwl135_bgn_cfg; #endif /* CONFIG_IWLDVM */ #if IS_ENABLED(CONFIG_IWLMVM) extern const struct iwl_ht_params iwl_22000_ht_params; -extern const struct iwl_cfg iwl7260_2ac_cfg; -extern const struct iwl_cfg iwl7260_2ac_cfg_high_temp; -extern const struct iwl_cfg iwl7260_2n_cfg; -extern const struct iwl_cfg iwl7260_n_cfg; -extern const struct iwl_cfg iwl3160_2ac_cfg; -extern const struct iwl_cfg iwl3160_2n_cfg; -extern const struct iwl_cfg iwl3160_n_cfg; + +extern const struct iwl_cfg iwl7260_cfg; +extern const struct iwl_cfg iwl7260_high_temp_cfg; +extern const struct iwl_cfg iwl3160_cfg; extern const struct iwl_cfg iwl3165_2ac_cfg; extern const struct iwl_cfg iwl3168_2ac_cfg; -extern const struct iwl_cfg iwl7265_2ac_cfg; -extern const struct iwl_cfg iwl7265_2n_cfg; -extern const struct iwl_cfg iwl7265_n_cfg; -extern const struct iwl_cfg iwl7265d_2ac_cfg; -extern const struct iwl_cfg iwl7265d_2n_cfg; -extern const struct iwl_cfg iwl7265d_n_cfg; -extern const struct iwl_cfg iwl8260_2n_cfg; -extern const struct iwl_cfg iwl8260_2ac_cfg; -extern const struct iwl_cfg iwl8265_2ac_cfg; -extern const struct iwl_cfg iwl8275_2ac_cfg; -extern const struct iwl_cfg iwl4165_2ac_cfg; +extern const struct iwl_cfg iwl7265_cfg; +extern const struct iwl_cfg iwl7265d_cfg; +extern const struct iwl_cfg iwl8260_cfg; +extern const struct iwl_cfg iwl8265_cfg; extern const struct iwl_cfg iwl9260_2ac_cfg; extern const struct iwl_cfg iwl9260_2ac_cfg_80mhz; extern const struct iwl_cfg iwl9560_qu_jf_cfg; @@ -632,10 +682,8 @@ extern const struct iwl_cfg iwl_ax200_cfg_cc; extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0; extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0_80mhz; extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0; -extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0_long; extern const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0; extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0; -extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0_long; extern const struct iwl_cfg iwl_cfg_ma; diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 4c2786655f7d..55f07c68339c 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -20,11 +20,10 @@ #define _IS_A(cfg, _struct) __builtin_types_compatible_p(typeof(cfg), \ struct _struct) extern int _invalid_type; -#define _TRANS_CFG_MARKER(cfg) \ +#define _TRANS_CFG_CHECK(cfg) \ (__builtin_choose_expr(_IS_A(cfg, iwl_cfg_trans_params), \ - TRANS_CFG_MARKER, \ - __builtin_choose_expr(_IS_A(cfg, iwl_cfg), 0, _invalid_type))) -#define _ASSIGN_CFG(cfg) (_TRANS_CFG_MARKER(cfg) + (kernel_ulong_t)&(cfg)) + 0, _invalid_type)) +#define _ASSIGN_CFG(cfg) (_TRANS_CFG_CHECK(cfg) + (kernel_ulong_t)&(cfg)) #define IWL_PCI_DEVICE(dev, subdev, cfg) \ .vendor = PCI_VENDOR_ID_INTEL, .device = (dev), \ @@ -34,434 +33,434 @@ extern int _invalid_type; /* Hardware specific file defines the PCI IDs table for that hardware module */ VISIBLE_IF_IWLWIFI_KUNIT const struct pci_device_id iwl_hw_card_ids[] = { #if IS_ENABLED(CONFIG_IWLDVM) - {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bgn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bgn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5100_abg_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5100_abg_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5100_bgn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5100_bgn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5100_abg_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5100_abg_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5100_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5100_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5100_bgn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5100_bgn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5100_abg_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5100_abg_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1201, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1301, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1204, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1304, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1206, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1306, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1221, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1321, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1224, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1324, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1225, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1325, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1226, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4232, 0x1326, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1211, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1311, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1214, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1314, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1215, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1315, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1216, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4237, 0x1316, iwl5000_trans_cfg)}, /* Half Mini Card */ /* 5300 Series WiFi */ - {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5300_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5300_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5300_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5300_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5300_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5300_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5300_agn_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1021, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1121, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1024, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1124, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1001, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1101, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1004, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4235, 0x1104, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4236, 0x1011, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4236, 0x1111, iwl5000_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x4236, 0x1014, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x4236, 0x1114, iwl5000_trans_cfg)}, /* Half Mini Card */ /* 5350 Series WiFi/WiMax */ - {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5350_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5350_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5350_agn_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423A, 0x1001, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423A, 0x1021, iwl5000_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423B, 0x1011, iwl5000_trans_cfg)}, /* Mini Card */ /* 5150 Series Wifi/WiMax */ - {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_abg_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_abg_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_abg_cfg)}, /* Half Mini Card */ - - {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_agn_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_agn_cfg)}, /* Half Mini Card */ - {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_abg_cfg)}, /* Mini Card */ - {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_abg_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1201, iwl5150_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1301, iwl5150_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1206, iwl5150_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1306, iwl5150_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1221, iwl5150_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1321, iwl5150_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423C, 0x1326, iwl5150_trans_cfg)}, /* Half Mini Card */ + + {IWL_PCI_DEVICE(0x423D, 0x1211, iwl5150_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423D, 0x1311, iwl5150_trans_cfg)}, /* Half Mini Card */ + {IWL_PCI_DEVICE(0x423D, 0x1216, iwl5150_trans_cfg)}, /* Mini Card */ + {IWL_PCI_DEVICE(0x423D, 0x1316, iwl5150_trans_cfg)}, /* Half Mini Card */ /* 6x00 Series */ - {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_2agn_cfg)}, - {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_2abg_cfg)}, - {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_2bg_cfg)}, - {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_2agn_cfg)}, - {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_2abg_cfg)}, - {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_3agn_cfg)}, - {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_2agn_cfg)}, - {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_2abg_cfg)}, + {IWL_PCI_DEVICE(0x422B, 0x1101, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x422B, 0x1108, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x422B, 0x1121, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x422B, 0x1128, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x422C, 0x1301, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x422C, 0x1306, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x422C, 0x1307, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x422C, 0x1321, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x422C, 0x1326, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x4238, 0x1111, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x4238, 0x1118, iwl6000_trans_cfg)}, + {IWL_PCI_DEVICE(0x4239, 0x1311, iwl6000i_trans_cfg)}, + {IWL_PCI_DEVICE(0x4239, 0x1316, iwl6000i_trans_cfg)}, /* 6x05 Series */ - {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_2bg_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_2agn_d_cfg)}, - {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_2agn_mow1_cfg)},/* low 5GHz active */ - {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_2agn_mow2_cfg)},/* high 5GHz active */ + {IWL_PCI_DEVICE(0x0082, 0x1301, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1306, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1307, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1308, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1321, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1326, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1328, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0085, 0x1311, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0085, 0x1318, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0085, 0x1316, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0xC020, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0085, 0xC220, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0085, 0xC228, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x4820, iwl6005_trans_cfg)}, + {IWL_PCI_DEVICE(0x0082, 0x1304, iwl6005_trans_cfg)},/* low 5GHz active */ + {IWL_PCI_DEVICE(0x0082, 0x1305, iwl6005_trans_cfg)},/* high 5GHz active */ /* 6x30 Series */ - {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1030_bgn_cfg)}, - {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1030_bg_cfg)}, - {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1030_bgn_cfg)}, - {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1030_bg_cfg)}, - {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1030_bgn_cfg)}, - {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1030_bg_cfg)}, - {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_2bg_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_2abg_cfg)}, + {IWL_PCI_DEVICE(0x008A, 0x5305, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x008A, 0x5307, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x008A, 0x5325, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x008A, 0x5327, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x008B, 0x5315, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x008B, 0x5317, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0090, 0x5211, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0090, 0x5215, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0090, 0x5216, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5201, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5205, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5206, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5207, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5221, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5225, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0091, 0x5226, iwl6030_trans_cfg)}, /* 6x50 WiFi/WiMax Series */ - {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_2abg_cfg)}, - {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_2agn_cfg)}, - {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_2abg_cfg)}, + {IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_trans_cfg)}, + {IWL_PCI_DEVICE(0x0087, 0x1306, iwl6050_trans_cfg)}, + {IWL_PCI_DEVICE(0x0087, 0x1321, iwl6050_trans_cfg)}, + {IWL_PCI_DEVICE(0x0087, 0x1326, iwl6050_trans_cfg)}, + {IWL_PCI_DEVICE(0x0089, 0x1311, iwl6050_trans_cfg)}, + {IWL_PCI_DEVICE(0x0089, 0x1316, iwl6050_trans_cfg)}, /* 6150 WiFi/WiMax Series */ - {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_bg_cfg)}, - {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_bg_cfg)}, - {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_bg_cfg)}, + {IWL_PCI_DEVICE(0x0885, 0x1305, iwl6150_trans_cfg)}, + {IWL_PCI_DEVICE(0x0885, 0x1307, iwl6150_trans_cfg)}, + {IWL_PCI_DEVICE(0x0885, 0x1325, iwl6150_trans_cfg)}, + {IWL_PCI_DEVICE(0x0885, 0x1327, iwl6150_trans_cfg)}, + {IWL_PCI_DEVICE(0x0886, 0x1315, iwl6150_trans_cfg)}, + {IWL_PCI_DEVICE(0x0886, 0x1317, iwl6150_trans_cfg)}, /* 1000 Series WiFi */ - {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_bg_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_bg_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_bg_cfg)}, - {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_bg_cfg)}, - {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_bg_cfg)}, - {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_bg_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1205, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1305, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1225, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1325, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0084, 0x1215, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0084, 0x1315, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1206, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1306, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1226, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0083, 0x1326, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0084, 0x1216, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0084, 0x1316, iwl1000_trans_cfg)}, /* 100 Series WiFi */ - {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl100_bgn_cfg)}, - {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl100_bg_cfg)}, - {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl100_bgn_cfg)}, - {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl100_bg_cfg)}, - {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl100_bgn_cfg)}, - {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl100_bg_cfg)}, + {IWL_PCI_DEVICE(0x08AE, 0x1005, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08AE, 0x1007, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08AF, 0x1015, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08AF, 0x1017, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08AE, 0x1025, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08AE, 0x1027, iwl1000_trans_cfg)}, /* 130 Series WiFi */ - {IWL_PCI_DEVICE(0x0896, 0x5005, iwl130_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0896, 0x5007, iwl130_bg_cfg)}, - {IWL_PCI_DEVICE(0x0897, 0x5015, iwl130_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0897, 0x5017, iwl130_bg_cfg)}, - {IWL_PCI_DEVICE(0x0896, 0x5025, iwl130_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0896, 0x5027, iwl130_bg_cfg)}, + {IWL_PCI_DEVICE(0x0896, 0x5005, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0896, 0x5007, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0897, 0x5015, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0897, 0x5017, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0896, 0x5025, iwl1000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0896, 0x5027, iwl1000_trans_cfg)}, /* 2x00 Series */ - {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_2bgn_d_cfg)}, + {IWL_PCI_DEVICE(0x0890, 0x4022, iwl2000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0891, 0x4222, iwl2000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0890, 0x4422, iwl2000_trans_cfg)}, + {IWL_PCI_DEVICE(0x0890, 0x4822, iwl2000_trans_cfg)}, /* 2x30 Series */ - {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_2bgn_cfg)}, - {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_2bgn_cfg)}, + {IWL_PCI_DEVICE(0x0887, 0x4062, iwl2030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0888, 0x4262, iwl2030_trans_cfg)}, + {IWL_PCI_DEVICE(0x0887, 0x4462, iwl2030_trans_cfg)}, /* 6x35 Series */ - {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6035_2agn_cfg)}, - {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6035_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6035_2agn_cfg)}, - {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6035_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6035_2agn_cfg)}, - {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6035_2agn_sff_cfg)}, - {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6035_2agn_cfg)}, - {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6035_2agn_cfg)}, + {IWL_PCI_DEVICE(0x088E, 0x4060, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088E, 0x406A, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088F, 0x4260, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088F, 0x426A, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088E, 0x4460, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088E, 0x446A, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088E, 0x4860, iwl6030_trans_cfg)}, + {IWL_PCI_DEVICE(0x088F, 0x5260, iwl6030_trans_cfg)}, /* 105 Series */ - {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_bgn_d_cfg)}, + {IWL_PCI_DEVICE(0x0894, 0x0022, iwl105_trans_cfg)}, + {IWL_PCI_DEVICE(0x0895, 0x0222, iwl105_trans_cfg)}, + {IWL_PCI_DEVICE(0x0894, 0x0422, iwl105_trans_cfg)}, + {IWL_PCI_DEVICE(0x0894, 0x0822, iwl105_trans_cfg)}, /* 135 Series */ - {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_bgn_cfg)}, - {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_bgn_cfg)}, + {IWL_PCI_DEVICE(0x0892, 0x0062, iwl135_trans_cfg)}, + {IWL_PCI_DEVICE(0x0893, 0x0262, iwl135_trans_cfg)}, + {IWL_PCI_DEVICE(0x0892, 0x0462, iwl135_trans_cfg)}, #endif /* CONFIG_IWLDVM */ #if IS_ENABLED(CONFIG_IWLMVM) /* 7260 Series */ - {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7260_2ac_cfg_high_temp)}, - {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7260_2ac_cfg_high_temp)}, - {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7260_2ac_cfg_high_temp)}, - {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7260_n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7260_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7260_2n_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4072, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4170, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4C60, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4C70, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4060, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x406A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4160, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4062, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4162, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4270, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4272, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4260, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x426A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4262, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4470, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4472, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4460, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x446A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4462, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4870, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x486E, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4A70, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4A6E, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4A6C, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4570, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4560, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4370, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4360, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5072, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5170, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x5770, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4020, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x402A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0x4220, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0x4420, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC072, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC170, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC060, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC06A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC160, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC062, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC162, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC770, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC760, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC270, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xCC70, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xCC60, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC272, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC260, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC26A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC262, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC470, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC472, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC460, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC462, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC570, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC560, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC370, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC360, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC020, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC02A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B2, 0xC220, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B1, 0xC420, iwl7000_trans_cfg)}, /* 3160 Series */ - {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl3160_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl3160_n_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl3160_2n_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl3160_n_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl3160_2ac_cfg)}, - {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl3160_2ac_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0072, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0170, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0172, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0060, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0062, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x0270, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x0272, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0470, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x0472, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x0370, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8072, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8170, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8172, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8060, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8062, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x8270, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x8370, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B4, 0x8272, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8470, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x8570, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x1070, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x08B3, 0x1170, iwl7000_trans_cfg)}, /* 3165 Series */ - {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x4010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x4012, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3166, 0x4212, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x4410, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x4510, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x4110, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3166, 0x4310, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3166, 0x4210, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x8010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x3165, 0x8110, iwl7000_trans_cfg)}, /* 3168 Series */ - {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl3168_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl3168_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl3168_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl3168_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl3168_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24FB, 0x2010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FB, 0x2110, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FB, 0x2050, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FB, 0x2150, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FB, 0x0000, iwl7000_trans_cfg)}, /* 7265 Series */ - {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7265_n_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7265_n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7265_n_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7265_n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7265_2n_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5110, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5100, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5310, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5302, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5210, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5C10, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5012, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5412, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5410, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5510, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5400, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x1010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5000, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x500A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5200, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5002, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5102, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5202, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9010, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9012, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x900A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9110, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9112, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x9210, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x9200, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9510, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x9310, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9410, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5020, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x502A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5420, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5090, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5190, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7000_trans_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9E10, iwl7000_trans_cfg)}, /* 8000 Series */ - {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)}, - {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8275_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8275_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8275_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8275_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8265_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0000, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x4010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x10D0, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x9010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x8110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x8050, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x8010, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x1014, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x3E02, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x3E01, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x1012, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0012, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x0014, iwl8000_trans_cfg)}, + {IWL_PCI_DEVICE(0x24FD, 0x9074, iwl8000_trans_cfg)}, /* 9000 Series */ {IWL_PCI_DEVICE(0x2526, PCI_ANY_ID, iwl9000_trans_cfg)}, @@ -583,7 +582,816 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); #define BW_LIMITED .bw_limit = 1 VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { +#if IS_ENABLED(CONFIG_IWLDVM) + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1201)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1301)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1204)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1304)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4232), SUBDEV(0x1205)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4232), SUBDEV(0x1305)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4232), SUBDEV(0x1206)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4232), SUBDEV(0x1306)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1221)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1321)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1224)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4232), SUBDEV(0x1324)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4232), SUBDEV(0x1225)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4232), SUBDEV(0x1325)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4232), SUBDEV(0x1226)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4232), SUBDEV(0x1326)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4237), SUBDEV(0x1211)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4237), SUBDEV(0x1311)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4237), SUBDEV(0x1214)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, + DEVICE(0x4237), SUBDEV(0x1314)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4237), SUBDEV(0x1215)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, + DEVICE(0x4237), SUBDEV(0x1315)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4237), SUBDEV(0x1216)), /* Mini Card */ + IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, + DEVICE(0x4237), SUBDEV(0x1316)), /* Half Mini Card */ + +/* 5300 Series WiFi */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1021)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1121)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1024)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1124)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1001)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1101)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1004)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4235), SUBDEV(0x1104)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4236), SUBDEV(0x1011)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4236), SUBDEV(0x1111)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4236), SUBDEV(0x1014)), /* Mini Card */ + IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, + DEVICE(0x4236), SUBDEV(0x1114)), /* Half Mini Card */ + +/* 5350 Series WiFi/WiMax */ + IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, + DEVICE(0x423A), SUBDEV(0x1001)), /* Mini Card */ + IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, + DEVICE(0x423A), SUBDEV(0x1021)), /* Mini Card */ + IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, + DEVICE(0x423B), SUBDEV(0x1011)), /* Mini Card */ + +/* 5150 Series Wifi/WiMax */ + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423C), SUBDEV(0x1201)), /* Mini Card */ + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423C), SUBDEV(0x1301)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, + DEVICE(0x423C), SUBDEV(0x1206)), /* Mini Card */ + IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, + DEVICE(0x423C), SUBDEV(0x1306)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423C), SUBDEV(0x1221)), /* Mini Card */ + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423C), SUBDEV(0x1321)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, + DEVICE(0x423C), SUBDEV(0x1326)), /* Half Mini Card */ + + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423D), SUBDEV(0x1211)), /* Mini Card */ + IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, + DEVICE(0x423D), SUBDEV(0x1311)), /* Half Mini Card */ + IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, + DEVICE(0x423D), SUBDEV(0x1216)), /* Mini Card */ + IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, + DEVICE(0x423D), SUBDEV(0x1316)), /* Half Mini Card */ + +/* 6x00 Series */ + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x422B), SUBDEV(0x1101)), + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x422B), SUBDEV(0x1108)), + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x422B), SUBDEV(0x1121)), + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x422B), SUBDEV(0x1128)), + IWL_DEV_INFO(iwl6000i_2agn_cfg, iwl6000i_2agn_name, + DEVICE(0x422C), SUBDEV(0x1301)), + IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2abg_name, + DEVICE(0x422C), SUBDEV(0x1306)), + IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2bg_name, + DEVICE(0x422C), SUBDEV(0x1307)), + IWL_DEV_INFO(iwl6000i_2agn_cfg, iwl6000i_2agn_name, + DEVICE(0x422C), SUBDEV(0x1321)), + IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2abg_name, + DEVICE(0x422C), SUBDEV(0x1326)), + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x4238), SUBDEV(0x1111)), + IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, + DEVICE(0x4238), SUBDEV(0x1118)), + IWL_DEV_INFO(iwl6000i_2agn_cfg, iwl6000i_2agn_name, + DEVICE(0x4239), SUBDEV(0x1311)), + IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2abg_name, + DEVICE(0x4239), SUBDEV(0x1316)), + +/* 6x05 Series */ + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0082), SUBDEV(0x1301)), + IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, + DEVICE(0x0082), SUBDEV(0x1306)), + IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2bg_name, + DEVICE(0x0082), SUBDEV(0x1307)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0082), SUBDEV(0x1308)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0082), SUBDEV(0x1321)), + IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, + DEVICE(0x0082), SUBDEV(0x1326)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0082), SUBDEV(0x1328)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0085), SUBDEV(0x1311)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, + DEVICE(0x0085), SUBDEV(0x1318)), + IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, + DEVICE(0x0085), SUBDEV(0x1316)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, + DEVICE(0x0082), SUBDEV(0xC020)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, + DEVICE(0x0085), SUBDEV(0xC220)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, + DEVICE(0x0085), SUBDEV(0xC228)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_d_name, + DEVICE(0x0082), SUBDEV(0x4820)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_mow1_name, + DEVICE(0x0082), SUBDEV(0x1304)),/* low 5GHz active */ + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_mow2_name, + DEVICE(0x0082), SUBDEV(0x1305)),/* high 5GHz active */ + +/* 6x30 Series */ + IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, + DEVICE(0x008A), SUBDEV(0x5305)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, + DEVICE(0x008A), SUBDEV(0x5307)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, + DEVICE(0x008A), SUBDEV(0x5325)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, + DEVICE(0x008A), SUBDEV(0x5327)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, + DEVICE(0x008B), SUBDEV(0x5315)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, + DEVICE(0x008B), SUBDEV(0x5317)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2agn_name, + DEVICE(0x0090), SUBDEV(0x5211)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2bgn_name, + DEVICE(0x0090), SUBDEV(0x5215)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, + DEVICE(0x0090), SUBDEV(0x5216)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2agn_name, + DEVICE(0x0091), SUBDEV(0x5201)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2bgn_name, + DEVICE(0x0091), SUBDEV(0x5205)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, + DEVICE(0x0091), SUBDEV(0x5206)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2bg_name, + DEVICE(0x0091), SUBDEV(0x5207)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2agn_name, + DEVICE(0x0091), SUBDEV(0x5221)), + IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2bgn_name, + DEVICE(0x0091), SUBDEV(0x5225)), + IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, + DEVICE(0x0091), SUBDEV(0x5226)), + +/* 6x50 WiFi/WiMax Series */ + IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, + DEVICE(0x0087), SUBDEV(0x1301)), + IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, + DEVICE(0x0087), SUBDEV(0x1306)), + IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, + DEVICE(0x0087), SUBDEV(0x1321)), + IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, + DEVICE(0x0087), SUBDEV(0x1326)), + IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, + DEVICE(0x0089), SUBDEV(0x1311)), + IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, + DEVICE(0x0089), SUBDEV(0x1316)), + +/* 6150 WiFi/WiMax Series */ + IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, + DEVICE(0x0885), SUBDEV(0x1305)), + IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, + DEVICE(0x0885), SUBDEV(0x1307)), + IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, + DEVICE(0x0885), SUBDEV(0x1325)), + IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, + DEVICE(0x0885), SUBDEV(0x1327)), + IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, + DEVICE(0x0886), SUBDEV(0x1315)), + IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, + DEVICE(0x0886), SUBDEV(0x1317)), + +/* 1000 Series WiFi */ + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0083), SUBDEV(0x1205)), + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0083), SUBDEV(0x1305)), + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0083), SUBDEV(0x1225)), + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0083), SUBDEV(0x1325)), + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0084), SUBDEV(0x1215)), + IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, + DEVICE(0x0084), SUBDEV(0x1315)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0083), SUBDEV(0x1206)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0083), SUBDEV(0x1306)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0083), SUBDEV(0x1226)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0083), SUBDEV(0x1326)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0084), SUBDEV(0x1216)), + IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, + DEVICE(0x0084), SUBDEV(0x1316)), + +/* 100 Series WiFi */ + IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, + DEVICE(0x08AE), SUBDEV(0x1005)), + IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, + DEVICE(0x08AE), SUBDEV(0x1007)), + IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, + DEVICE(0x08AF), SUBDEV(0x1015)), + IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, + DEVICE(0x08AF), SUBDEV(0x1017)), + IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, + DEVICE(0x08AE), SUBDEV(0x1025)), + IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, + DEVICE(0x08AE), SUBDEV(0x1027)), + +/* 130 Series WiFi */ + IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, + DEVICE(0x0896), SUBDEV(0x5005)), + IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, + DEVICE(0x0896), SUBDEV(0x5007)), + IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, + DEVICE(0x0897), SUBDEV(0x5015)), + IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, + DEVICE(0x0897), SUBDEV(0x5017)), + IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, + DEVICE(0x0896), SUBDEV(0x5025)), + IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, + DEVICE(0x0896), SUBDEV(0x5027)), + +/* 2x00 Series */ + IWL_DEV_INFO(iwl2000_2bgn_cfg, iwl2000_2bgn_name, + DEVICE(0x0890), SUBDEV(0x4022)), + IWL_DEV_INFO(iwl2000_2bgn_cfg, iwl2000_2bgn_name, + DEVICE(0x0891), SUBDEV(0x4222)), + IWL_DEV_INFO(iwl2000_2bgn_cfg, iwl2000_2bgn_name, + DEVICE(0x0890), SUBDEV(0x4422)), + IWL_DEV_INFO(iwl2000_2bgn_cfg, iwl2000_2bgn_d_name, + DEVICE(0x0890), SUBDEV(0x4822)), + +/* 2x30 Series */ + IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, + DEVICE(0x0887), SUBDEV(0x4062)), + IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, + DEVICE(0x0888), SUBDEV(0x4262)), + IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, + DEVICE(0x0887), SUBDEV(0x4462)), + +/* 6x35 Series */ + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, + DEVICE(0x088E), SUBDEV(0x4060)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, + DEVICE(0x088E), SUBDEV(0x406A)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, + DEVICE(0x088F), SUBDEV(0x4260)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, + DEVICE(0x088F), SUBDEV(0x426A)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, + DEVICE(0x088E), SUBDEV(0x4460)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, + DEVICE(0x088E), SUBDEV(0x446A)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, + DEVICE(0x088E), SUBDEV(0x4860)), + IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, + DEVICE(0x088F), SUBDEV(0x5260)), + +/* 105 Series */ + IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, + DEVICE(0x0894), SUBDEV(0x0022)), + IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, + DEVICE(0x0895), SUBDEV(0x0222)), + IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, + DEVICE(0x0894), SUBDEV(0x0422)), + IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, + DEVICE(0x0894), SUBDEV(0x0822)), + +/* 135 Series */ + IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, + DEVICE(0x0892), SUBDEV(0x0062)), + IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, + DEVICE(0x0893), SUBDEV(0x0262)), + IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, + DEVICE(0x0892), SUBDEV(0x0462)), +#endif /* CONFIG_IWLDVM */ + #if IS_ENABLED(CONFIG_IWLMVM) +/* 7260 Series */ + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4070)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4072)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4170)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4C60)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4C70)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4060)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x406A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4160)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0x4062)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0x4162)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0x4270)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0x4272)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4260)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x426A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B2), SUBDEV(0x4262)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4470)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4472)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4460)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x446A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0x4462)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4870)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x486E)), + IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4A70)), + IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4A6E)), + IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4A6C)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x4570)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4560)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0x4370)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4360)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x5070)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x5072)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x5170)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0x5770)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4020)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x402A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4220)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0x4420)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC070)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC072)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC170)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC060)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC06A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC160)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0xC062)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0xC162)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC770)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC760)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0xC270)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xCC70)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xCC60)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0xC272)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0xC260)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B2), SUBDEV(0xC26A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B2), SUBDEV(0xC262)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC470)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC472)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC460)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0xC462)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B1), SUBDEV(0xC570)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC560)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0xC370)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC360)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC020)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC02A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0xC220)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC420)), + +/* 3160 Series */ + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0070)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0072)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0170)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0172)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2n_name, + DEVICE(0x08B3), SUBDEV(0x0060)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_n_name, + DEVICE(0x08B3), SUBDEV(0x0062)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x0270)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x0272)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0470)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x0472)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x0370)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8070)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8072)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8170)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8172)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2n_name, + DEVICE(0x08B3), SUBDEV(0x8060)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_n_name, + DEVICE(0x08B3), SUBDEV(0x8062)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x8270)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x8370)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B4), SUBDEV(0x8272)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8470)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x8570)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x1070)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, + DEVICE(0x08B3), SUBDEV(0x1170)), + +/* 3165 Series */ + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x4010)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x4012)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3166), SUBDEV(0x4212)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x4410)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x4510)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x4110)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3166), SUBDEV(0x4310)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3166), SUBDEV(0x4210)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x8010)), + IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, + DEVICE(0x3165), SUBDEV(0x8110)), + +/* 3168 Series */ + IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, + DEVICE(0x24FB), SUBDEV(0x2010)), + IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, + DEVICE(0x24FB), SUBDEV(0x2110)), + IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, + DEVICE(0x24FB), SUBDEV(0x2050)), + IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, + DEVICE(0x24FB), SUBDEV(0x2150)), + IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, + DEVICE(0x24FB), SUBDEV(0x0000)), + +/* 7265 Series */ + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5010)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5110)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5100)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x5310)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095B), SUBDEV(0x5302)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x5210)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5C10)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5012)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5412)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5410)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5510)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5400)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x1010)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095A), SUBDEV(0x5000)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095A), SUBDEV(0x500A)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095B), SUBDEV(0x5200)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095A), SUBDEV(0x5002)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095A), SUBDEV(0x5102)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095B), SUBDEV(0x5202)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9010)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9012)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x900A)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9110)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9112)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x9210)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x9200)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9510)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x9310)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9410)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095A), SUBDEV(0x5020)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095A), SUBDEV(0x502A)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095A), SUBDEV(0x5420)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5090)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5190)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5590)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x5290)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5490)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x5F10)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x5212)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095B), SUBDEV(0x520A)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9000)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9400)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, + DEVICE(0x095A), SUBDEV(0x9E10)), + +/* 8000 Series */ + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x10B0)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0130)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1130)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0132)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1132)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0110)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x01F0)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0012)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1012)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1110)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0250)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0150)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x1150)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0x0030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0x1030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xC010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xC110)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xD010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xC050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xD050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xD0B0)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0xB0B0)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8110)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9010)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9110)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0x8030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0x9030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0xC030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F4), SUBDEV(0xD030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8130)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9130)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8132)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9132)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x8150)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9050)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x9150)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2n_name, + DEVICE(0x24F3), SUBDEV(0x0004)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2n_name, + DEVICE(0x24F3), SUBDEV(0x0044)), + IWL_DEV_INFO(iwl8260_cfg, iwl4165_2ac_name, + DEVICE(0x24F5), SUBDEV(0x0010)), + IWL_DEV_INFO(iwl8260_cfg, iwl4165_2ac_name, + DEVICE(0x24F6), SUBDEV(0x0030)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0810)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0910)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0850)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0950)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0930)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24F3), SUBDEV(0x0000)), + IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, + DEVICE(0x24F3), SUBDEV(0x4010)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0010)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0110)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x1110)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x1130)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0130)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x1010)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x10D0)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0050)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0150)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x9010)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x8110)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x8050)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x8010)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0810)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x9110)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x8130)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0910)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0930)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0950)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0850)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x1014)), + IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, + DEVICE(0x24FD), SUBDEV(0x3E02)), + IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, + DEVICE(0x24FD), SUBDEV(0x3E01)), + IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, + DEVICE(0x24FD), SUBDEV(0x1012)), + IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0012)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x0014)), + IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, + DEVICE(0x24FD), SUBDEV(0x9074)), /* 9000 */ IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_killer_1550_name, DEVICE(0x2526), SUBDEV(0x1550)), @@ -808,17 +1616,17 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x2725), SUBDEV(0x1673)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name, DEVICE(0x2725), SUBDEV(0x1674)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7A70), SUBDEV(0x0090)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7A70), SUBDEV(0x0098)), - IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0_long, NULL, + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, NULL, DEVICE(0x7A70), SUBDEV(0x00B0)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7A70), SUBDEV(0x0310)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7A70), SUBDEV(0x0510)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0_long, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7A70), SUBDEV(0x0A10)), IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, DEVICE(0x7AF0), SUBDEV(0x0090)), @@ -1402,25 +2210,12 @@ static void iwl_pcie_check_me_status(struct iwl_trans *trans) static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { const struct iwl_cfg_trans_params *trans; - const struct iwl_cfg *cfg_7265d __maybe_unused = NULL; const struct iwl_dev_info *dev_info; struct iwl_trans *iwl_trans; struct iwl_trans_pcie *trans_pcie; int ret; - const struct iwl_cfg *cfg; - - trans = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); - - /* - * This is needed for backwards compatibility with the old - * tables, so we don't need to change all the config structs - * at the same time. The cfg is used to compare with the old - * full cfg structs. - */ - cfg = (void *)(ent->driver_data & ~TRANS_CFG_MARKER); - /* make sure trans is the first element in iwl_cfg */ - BUILD_BUG_ON(offsetof(struct iwl_cfg, trans)); + trans = (void *)ent->driver_data; iwl_trans = iwl_trans_pcie_alloc(pdev, trans); if (IS_ERR(iwl_trans)) @@ -1494,29 +2289,16 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) * all the parameters that the transport uses must, until that is * changed, be identical to the ones in the 7265D configuration. */ - if (cfg == &iwl7265_2ac_cfg) - cfg_7265d = &iwl7265d_2ac_cfg; - else if (cfg == &iwl7265_2n_cfg) - cfg_7265d = &iwl7265d_2n_cfg; - else if (cfg == &iwl7265_n_cfg) - cfg_7265d = &iwl7265d_n_cfg; - if (cfg_7265d && + if (iwl_trans->cfg == &iwl7265_cfg && (iwl_trans->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D) - iwl_trans->cfg = cfg_7265d; + iwl_trans->cfg = &iwl7265d_cfg; #endif - /* - * If we didn't set the cfg yet, the PCI ID table entry should have - * been a full config - if yes, use it, otherwise fail. - */ if (!iwl_trans->cfg) { - if (ent->driver_data & TRANS_CFG_MARKER) { - pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", - pdev->device, pdev->subsystem_device, - iwl_trans->hw_rev, iwl_trans->hw_rf_id); - ret = -EINVAL; - goto out_free_trans; - } - iwl_trans->cfg = cfg; + pr_err("No config found for PCI dev %04x/%04x, rev=0x%x, rfid=0x%x\n", + pdev->device, pdev->subsystem_device, + iwl_trans->hw_rev, iwl_trans->hw_rf_id); + ret = -EINVAL; + goto out_free_trans; } /* if we don't have a name yet, copy name from the old cfg */ diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index 0da5e255b063..15bf1aba83c0 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -175,11 +175,7 @@ static void devinfo_no_trans_cfg_dups(struct kunit *test) struct iwl_cfg_trans_params *cfg; bool found = false; - if (!(iwl_hw_card_ids[i].driver_data & TRANS_CFG_MARKER)) - continue; - - cfg = (void *)(iwl_hw_card_ids[i].driver_data & - ~TRANS_CFG_MARKER); + cfg = (void *)iwl_hw_card_ids[i].driver_data; for (int j = 0; j < p; j++) { if (cfgs[j] == cfg) { -- 2.51.0 From 1feda9a23ec8b9ead8a64f7384103c69a3ac7c8b Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:25 +0300 Subject: [PATCH 08/16] wifi: iwlwifi: cfg: move all names out of configs Move all the names into dev info structs and remove the pointer from the configs. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.1538369bffde.Id430ff71f57cbb37c19ecc5b41c831e5ba9b0695@changeid --- drivers/net/wireless/intel/iwlwifi/cfg/8000.c | 1 - .../net/wireless/intel/iwlwifi/cfg/ax210.c | 6 +-- .../net/wireless/intel/iwlwifi/iwl-config.h | 3 +- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 52 +++++++++---------- .../wireless/intel/iwlwifi/tests/devinfo.c | 10 +--- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c index 7f6f6a9ea615..9a1623091af7 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/8000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/8000.c @@ -123,7 +123,6 @@ const struct iwl_cfg iwl8260_cfg = { }; const struct iwl_cfg iwl8265_cfg = { - .name = "Intel(R) Dual Band Wireless AC 8265", .fw_name_pre = IWL8265_FW_PRE, IWL_DEVICE_8265, .ht_params = &iwl8000_ht_params, diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c index 610dbbaee26f..6f081aaa5c57 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/ax210.c @@ -191,7 +191,6 @@ const char iwl_ax411_killer_1690i_name[] = "Killer(R) Wi-Fi 6E AX1690i 160MHz Wireless Network Adapter (411NGW)"; const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0 = { - .name = "Intel(R) Wireless-AC 9560 160MHz", .fw_name_pre = IWL_SO_A_JF_B_FW_PRE, IWL_DEVICE_AX210, .num_rbds = IWL_NUM_RBDS_NON_HE, @@ -205,15 +204,15 @@ const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0_80mhz = { }; const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = { - .name = iwl_ax211_name, .fw_name_pre = IWL_SO_A_GF_A_FW_PRE, .uhb_supported = true, IWL_DEVICE_AX210, .num_rbds = IWL_NUM_RBDS_AX210_HE, }; +const char iwl_ax210_name[] = "Intel(R) Wi-Fi 6 AX210 160MHz"; + const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { - .name = "Intel(R) Wi-Fi 6 AX210 160MHz", .fw_name_pre = IWL_TY_A_GF_A_FW_PRE, .uhb_supported = true, IWL_DEVICE_AX210, @@ -221,7 +220,6 @@ const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = { }; const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0 = { - .name = iwl_ax411_name, .fw_name_pre = IWL_SO_A_GF4_A_FW_PRE, .uhb_supported = true, IWL_DEVICE_AX210, diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index e8fc51fae61d..cded707223fe 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -307,7 +307,6 @@ struct iwl_fw_mon_regs { /** * struct iwl_cfg - * @name: Official name of the device * @fw_name_pre: Firmware filename prefix. The api version and extension * (.ucode) will be added to filename before loading from disk. The * filename is constructed as -.ucode. @@ -358,7 +357,6 @@ struct iwl_fw_mon_regs { */ struct iwl_cfg { /* params specific to an individual device within a device family */ - const char *name; const char *fw_name_pre; /* params likely to change within a device family */ const struct iwl_ht_params *ht_params; @@ -613,6 +611,7 @@ extern const char iwl_ax211_killer_1675s_name[]; extern const char iwl_ax211_killer_1675i_name[]; extern const char iwl_ax411_killer_1690s_name[]; extern const char iwl_ax411_killer_1690i_name[]; +extern const char iwl_ax210_name[]; extern const char iwl_ax211_name[]; extern const char iwl_ax231_name[]; extern const char iwl_ax411_name[]; diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 55f07c68339c..0165c06fd7aa 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -1588,57 +1588,57 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x4DF0), SUBDEV(0x6074)), /* So with HR */ - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x2725), SUBDEV(0x0090)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x0020)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x2020)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x0024)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x0310)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x0510)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x0A10)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0xE020)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0xE024)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x4020)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x6020)), - IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, NULL, + IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_name, DEVICE(0x2725), SUBDEV(0x6024)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675w_name, DEVICE(0x2725), SUBDEV(0x1673)), IWL_DEV_INFO(iwlax210_2ax_cfg_ty_gf_a0, iwl_ax210_killer_1675x_name, DEVICE(0x2725), SUBDEV(0x1674)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7A70), SUBDEV(0x0090)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7A70), SUBDEV(0x0098)), - IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, NULL, + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, DEVICE(0x7A70), SUBDEV(0x00B0)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7A70), SUBDEV(0x0310)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7A70), SUBDEV(0x0510)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7A70), SUBDEV(0x0A10)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7AF0), SUBDEV(0x0090)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7AF0), SUBDEV(0x0098)), - IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, NULL, + IWL_DEV_INFO(iwlax411_2ax_cfg_so_gf4_a0, iwl_ax411_name, DEVICE(0x7AF0), SUBDEV(0x00B0)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7AF0), SUBDEV(0x0310)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7AF0), SUBDEV(0x0510)), - IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, NULL, + IWL_DEV_INFO(iwlax211_2ax_cfg_so_gf_a0, iwl_ax211_name, DEVICE(0x7AF0), SUBDEV(0x0A10)), /* So with JF */ @@ -2301,10 +2301,6 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto out_free_trans; } - /* if we don't have a name yet, copy name from the old cfg */ - if (!iwl_trans->name) - iwl_trans->name = iwl_trans->cfg->name; - IWL_INFO(iwl_trans, "Detected %s\n", iwl_trans->name); if (iwl_trans->trans_cfg->mq_rx_supported) { diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index 15bf1aba83c0..1e339284d2c7 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -54,7 +54,7 @@ static void devinfo_names(struct kunit *test) for (idx = 0; idx < iwl_dev_info_table_size; idx++) { const struct iwl_dev_info *di = &iwl_dev_info_table[idx]; - KUNIT_ASSERT_TRUE(test, di->name || di->cfg->name); + KUNIT_ASSERT_TRUE(test, di->name); } } @@ -88,14 +88,9 @@ static void devinfo_no_cfg_dups(struct kunit *test) for (int i = 0; i < p; i++) { struct iwl_cfg cfg_i = *cfgs[i]; - /* null out the names since we can handle them differently */ - cfg_i.name = NULL; - for (int j = 0; j < i; j++) { struct iwl_cfg cfg_j = *cfgs[j]; - cfg_j.name = NULL; - KUNIT_EXPECT_NE_MSG(test, memcmp(&cfg_i, &cfg_j, sizeof(cfg_i)), 0, "identical configs: %ps and %ps\n", @@ -126,9 +121,8 @@ static void devinfo_check_killer_subdev(struct kunit *test) { for (int i = 0; i < iwl_dev_info_table_size; i++) { const struct iwl_dev_info *di = &iwl_dev_info_table[i]; - const char *name = di->name ?: di->cfg->name; - if (!strstr(name, "Killer")) + if (!strstr(di->name, "Killer")) continue; KUNIT_EXPECT_NE(test, di->subdevice, (u16)IWL_CFG_ANY); -- 2.51.0 From 220c01a6fda512509ca2fe6c14778a39be2a7f71 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:26 +0300 Subject: [PATCH 09/16] wifi: iwlwifi: tests: check for duplicate name strings We don't need the same name multiple times in the binary, add a check for that. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.9adf2790122e.Ia85152c072c7944f0b80e819cf59a51d6adeb49a@changeid --- .../wireless/intel/iwlwifi/tests/devinfo.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c index 1e339284d2c7..575327cd3c92 100644 --- a/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c +++ b/drivers/net/wireless/intel/iwlwifi/tests/devinfo.c @@ -99,6 +99,24 @@ static void devinfo_no_cfg_dups(struct kunit *test) } } +static void devinfo_no_name_dups(struct kunit *test) +{ + for (int i = 0; i < iwl_dev_info_table_size; i++) { + for (int j = 0; j < i; j++) { + if (iwl_dev_info_table[i].name == iwl_dev_info_table[j].name) + continue; + + KUNIT_EXPECT_NE_MSG(test, + strcmp(iwl_dev_info_table[i].name, + iwl_dev_info_table[j].name), + 0, + "name dup: %ps/%ps", + iwl_dev_info_table[i].name, + iwl_dev_info_table[j].name); + } + } +} + static void devinfo_check_subdev_match(struct kunit *test) { for (int i = 0; i < iwl_dev_info_table_size; i++) { @@ -198,6 +216,7 @@ static struct kunit_case devinfo_test_cases[] = { KUNIT_CASE(devinfo_table_order), KUNIT_CASE(devinfo_names), KUNIT_CASE(devinfo_no_cfg_dups), + KUNIT_CASE(devinfo_no_name_dups), KUNIT_CASE(devinfo_check_subdev_match), KUNIT_CASE(devinfo_check_killer_subdev), KUNIT_CASE(devinfo_pci_ids), -- 2.51.0 From 2870c095186896540d64e947fa009bba08dd6bc8 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:27 +0300 Subject: [PATCH 10/16] wifi: iwlwifi: cfg: reduce mac_type to u8 In theory, this should be 12 bits, but in practice all the values we use now fit into 8 bits, so change the mac_type to make room in struct iwl_dev_info. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.c17d56f4ae0f.I487c8df18aa33c46aa6813bf5aebb5a23da67600@changeid --- drivers/net/wireless/intel/iwlwifi/iwl-config.h | 4 ++-- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index cded707223fe..4b43f561bd12 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -459,8 +459,8 @@ struct iwl_cfg { struct iwl_dev_info { u16 device; u16 subdevice; - u16 mac_type; u16 rf_type; + u8 mac_type; u8 bw_limit; u8 mac_step; u8 rf_step; @@ -477,7 +477,7 @@ extern const struct iwl_dev_info iwl_dev_info_table[]; extern const unsigned int iwl_dev_info_table_size; const struct iwl_dev_info * iwl_pci_find_dev_info(u16 device, u16 subsystem_device, - u16 mac_type, u8 mac_step, u16 rf_type, u8 cdb, + u8 mac_type, u8 mac_step, u16 rf_type, u8 cdb, u8 jacket, u8 rf_id, u8 bw_limit, u8 cores, u8 rf_step); extern const struct pci_device_id iwl_hw_card_ids[]; #endif diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 0165c06fd7aa..449ed4b02a5f 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -2103,7 +2103,7 @@ out: VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info * iwl_pci_find_dev_info(u16 device, u16 subsystem_device, - u16 mac_type, u8 mac_step, u16 rf_type, u8 cdb, + u8 mac_type, u8 mac_step, u16 rf_type, u8 cdb, u8 jacket, u8 rf_id, u8 bw_limit, u8 cores, u8 rf_step) { int num_devices = ARRAY_SIZE(iwl_dev_info_table); @@ -2123,7 +2123,7 @@ iwl_pci_find_dev_info(u16 device, u16 subsystem_device, dev_info->subdevice != subsystem_device) continue; - if (dev_info->mac_type != (u16)IWL_CFG_ANY && + if (dev_info->mac_type != (u8)IWL_CFG_ANY && dev_info->mac_type != mac_type) continue; -- 2.51.0 From 1fb053d9876f2a580a5e55833dfdee5a361efba5 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:28 +0300 Subject: [PATCH 11/16] wifi: iwlwifi: cfg: remove unnecessary configs Since there are two bytes hole in struct iwl_dev_info, add a subdev_mask to match with. Also, since the PCI IDs list needs to match first, and the dev-info list is matched from the bottom up, remove unnecessary entries. With this, even though there are new entries from previous changes, the overall size is slightly reduced. Signed-off-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.689f9b335cbe.I66f1344b6ac7aa3665696637c97fa843c2307423@changeid --- .../net/wireless/intel/iwlwifi/iwl-config.h | 1 + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 669 +++--------------- 2 files changed, 111 insertions(+), 559 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index 4b43f561bd12..fe701410a44f 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h @@ -459,6 +459,7 @@ struct iwl_cfg { struct iwl_dev_info { u16 device; u16 subdevice; + u16 subdevice_mask; u16 rf_type; u8 mac_type; u8 bw_limit; diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 449ed4b02a5f..6bb7de8c43fe 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -554,6 +554,7 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); .name = _name, \ .device = IWL_CFG_ANY, \ .subdevice = IWL_CFG_ANY, \ + .subdevice_mask = ~0, \ .mac_type = IWL_CFG_ANY, \ .mac_step = IWL_CFG_ANY, \ .rf_type = IWL_CFG_ANY, \ @@ -570,6 +571,9 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); #define DEVICE(n) .device = (n) #define SUBDEV(n) .subdevice = (n) +#define SUBDEV_MASKED(v, m) \ + .subdevice = (v), \ + .subdevice_mask = (m) #define MAC_TYPE(n) .mac_type = IWL_CFG_MAC_TYPE_##n #define MAC_STEP(n) .mac_step = SILICON_##n##_STEP #define RF_TYPE(n) .rf_type = IWL_CFG_RF_TYPE_##n @@ -584,132 +588,60 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_hw_card_ids); VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { #if IS_ENABLED(CONFIG_IWLDVM) IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1201)), /* Mini Card */ + DEVICE(0x4232), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1301)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1204)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1304)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4232), SUBDEV(0x1205)), /* Mini Card */ + DEVICE(0x4232), SUBDEV_MASKED(0x4, 0xF)), IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4232), SUBDEV(0x1305)), /* Half Mini Card */ + DEVICE(0x4232), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4232), SUBDEV(0x1206)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4232), SUBDEV(0x1306)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1221)), /* Mini Card */ + DEVICE(0x4232), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1321)), /* Half Mini Card */ + DEVICE(0x4237), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1224)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4232), SUBDEV(0x1324)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4232), SUBDEV(0x1225)), /* Mini Card */ + DEVICE(0x4237), SUBDEV_MASKED(0x4, 0xF)), IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4232), SUBDEV(0x1325)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4232), SUBDEV(0x1226)), /* Mini Card */ + DEVICE(0x4237), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4232), SUBDEV(0x1326)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4237), SUBDEV(0x1211)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4237), SUBDEV(0x1311)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4237), SUBDEV(0x1214)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_agn_name, - DEVICE(0x4237), SUBDEV(0x1314)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4237), SUBDEV(0x1215)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_n_cfg, iwl5100_bgn_name, - DEVICE(0x4237), SUBDEV(0x1315)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4237), SUBDEV(0x1216)), /* Mini Card */ - IWL_DEV_INFO(iwl5100_abg_cfg, iwl5100_abg_name, - DEVICE(0x4237), SUBDEV(0x1316)), /* Half Mini Card */ + DEVICE(0x4237), SUBDEV_MASKED(0x6, 0xF)), /* 5300 Series WiFi */ IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1021)), /* Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1121)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1024)), /* Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1124)), /* Half Mini Card */ + DEVICE(0x4235), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1001)), /* Mini Card */ + DEVICE(0x4235), SUBDEV_MASKED(0x4, 0xF)), IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1101)), /* Half Mini Card */ + DEVICE(0x4236), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1004)), /* Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4235), SUBDEV(0x1104)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4236), SUBDEV(0x1011)), /* Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4236), SUBDEV(0x1111)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4236), SUBDEV(0x1014)), /* Mini Card */ - IWL_DEV_INFO(iwl5300_agn_cfg, iwl5300_agn_name, - DEVICE(0x4236), SUBDEV(0x1114)), /* Half Mini Card */ + DEVICE(0x4236), SUBDEV_MASKED(0x4, 0xF)), /* 5350 Series WiFi/WiMax */ IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, - DEVICE(0x423A), SUBDEV(0x1001)), /* Mini Card */ + DEVICE(0x423A)), IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, - DEVICE(0x423A), SUBDEV(0x1021)), /* Mini Card */ - IWL_DEV_INFO(iwl5350_agn_cfg, iwl5350_agn_name, - DEVICE(0x423B), SUBDEV(0x1011)), /* Mini Card */ + DEVICE(0x423B)), /* 5150 Series Wifi/WiMax */ IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423C), SUBDEV(0x1201)), /* Mini Card */ - IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423C), SUBDEV(0x1301)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, - DEVICE(0x423C), SUBDEV(0x1206)), /* Mini Card */ + DEVICE(0x423C), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, - DEVICE(0x423C), SUBDEV(0x1306)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423C), SUBDEV(0x1221)), /* Mini Card */ - IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423C), SUBDEV(0x1321)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, - DEVICE(0x423C), SUBDEV(0x1326)), /* Half Mini Card */ + DEVICE(0x423C), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423D), SUBDEV(0x1211)), /* Mini Card */ - IWL_DEV_INFO(iwl5150_agn_cfg, iwl5150_agn_name, - DEVICE(0x423D), SUBDEV(0x1311)), /* Half Mini Card */ - IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, - DEVICE(0x423D), SUBDEV(0x1216)), /* Mini Card */ + DEVICE(0x423D), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl5150_abg_cfg, iwl5150_abg_name, - DEVICE(0x423D), SUBDEV(0x1316)), /* Half Mini Card */ + DEVICE(0x423D), SUBDEV_MASKED(0x6, 0xF)), /* 6x00 Series */ IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, - DEVICE(0x422B), SUBDEV(0x1101)), - IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, - DEVICE(0x422B), SUBDEV(0x1108)), - IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, - DEVICE(0x422B), SUBDEV(0x1121)), + DEVICE(0x422B), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, - DEVICE(0x422B), SUBDEV(0x1128)), + DEVICE(0x422B), SUBDEV_MASKED(0x8, 0xF)), IWL_DEV_INFO(iwl6000i_2agn_cfg, iwl6000i_2agn_name, - DEVICE(0x422C), SUBDEV(0x1301)), + DEVICE(0x422C), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2abg_name, - DEVICE(0x422C), SUBDEV(0x1306)), + DEVICE(0x422C), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2bg_name, - DEVICE(0x422C), SUBDEV(0x1307)), - IWL_DEV_INFO(iwl6000i_2agn_cfg, iwl6000i_2agn_name, - DEVICE(0x422C), SUBDEV(0x1321)), - IWL_DEV_INFO(iwl6000i_non_n_cfg, iwl6000i_2abg_name, - DEVICE(0x422C), SUBDEV(0x1326)), + DEVICE(0x422C), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, DEVICE(0x4238), SUBDEV(0x1111)), IWL_DEV_INFO(iwl6000_3agn_cfg, iwl6000_3agn_name, @@ -721,31 +653,23 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 6x05 Series */ IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0082), SUBDEV(0x1301)), + DEVICE(0x0082), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, - DEVICE(0x0082), SUBDEV(0x1306)), + DEVICE(0x0082), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2bg_name, - DEVICE(0x0082), SUBDEV(0x1307)), + DEVICE(0x0082), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0082), SUBDEV(0x1308)), - IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0082), SUBDEV(0x1321)), - IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, - DEVICE(0x0082), SUBDEV(0x1326)), - IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0082), SUBDEV(0x1328)), + DEVICE(0x0082), SUBDEV_MASKED(0x8, 0xF)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0085), SUBDEV(0x1311)), + DEVICE(0x0085), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_name, - DEVICE(0x0085), SUBDEV(0x1318)), + DEVICE(0x0085), SUBDEV_MASKED(0x8, 0xF)), IWL_DEV_INFO(iwl6005_non_n_cfg, iwl6005_2abg_name, - DEVICE(0x0085), SUBDEV(0x1316)), - IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, - DEVICE(0x0082), SUBDEV(0xC020)), - IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, - DEVICE(0x0085), SUBDEV(0xC220)), + DEVICE(0x0085), SUBDEV_MASKED(0x6, 0xF)), + IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_sff_name, - DEVICE(0x0085), SUBDEV(0xC228)), + DEVICE(0x0082), SUBDEV_MASKED(0xC000, 0xFFFF)), IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_d_name, DEVICE(0x0082), SUBDEV(0x4820)), IWL_DEV_INFO(iwl6005_n_cfg, iwl6005_2agn_mow1_name, @@ -755,13 +679,9 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 6x30 Series */ IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, - DEVICE(0x008A), SUBDEV(0x5305)), + DEVICE(0x008A), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, - DEVICE(0x008A), SUBDEV(0x5307)), - IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, - DEVICE(0x008A), SUBDEV(0x5325)), - IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, - DEVICE(0x008A), SUBDEV(0x5327)), + DEVICE(0x008A), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl6030_n_cfg, iwl1030_bgn_name, DEVICE(0x008B), SUBDEV(0x5315)), IWL_DEV_INFO(iwl6030_non_n_cfg, iwl1030_bg_name, @@ -773,29 +693,19 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, DEVICE(0x0090), SUBDEV(0x5216)), IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2agn_name, - DEVICE(0x0091), SUBDEV(0x5201)), + DEVICE(0x0091), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2bgn_name, - DEVICE(0x0091), SUBDEV(0x5205)), + DEVICE(0x0091), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, - DEVICE(0x0091), SUBDEV(0x5206)), + DEVICE(0x0091), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2bg_name, DEVICE(0x0091), SUBDEV(0x5207)), - IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2agn_name, - DEVICE(0x0091), SUBDEV(0x5221)), - IWL_DEV_INFO(iwl6030_n_cfg, iwl6030_2bgn_name, - DEVICE(0x0091), SUBDEV(0x5225)), - IWL_DEV_INFO(iwl6030_non_n_cfg, iwl6030_2abg_name, - DEVICE(0x0091), SUBDEV(0x5226)), /* 6x50 WiFi/WiMax Series */ IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, - DEVICE(0x0087), SUBDEV(0x1301)), + DEVICE(0x0087), SUBDEV_MASKED(0x1, 0xF)), IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, - DEVICE(0x0087), SUBDEV(0x1306)), - IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, - DEVICE(0x0087), SUBDEV(0x1321)), - IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, - DEVICE(0x0087), SUBDEV(0x1326)), + DEVICE(0x0087), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl6050_2agn_cfg, iwl6050_2agn_name, DEVICE(0x0089), SUBDEV(0x1311)), IWL_DEV_INFO(iwl6050_2abg_cfg, iwl6050_2abg_name, @@ -803,13 +713,9 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 6150 WiFi/WiMax Series */ IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, - DEVICE(0x0885), SUBDEV(0x1305)), + DEVICE(0x0885), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, - DEVICE(0x0885), SUBDEV(0x1307)), - IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, - DEVICE(0x0885), SUBDEV(0x1325)), - IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, - DEVICE(0x0885), SUBDEV(0x1327)), + DEVICE(0x0885), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl6150_bgn_cfg, iwl6150_bgn_name, DEVICE(0x0886), SUBDEV(0x1315)), IWL_DEV_INFO(iwl6150_bg_cfg, iwl6150_bg_name, @@ -817,25 +723,9 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 1000 Series WiFi */ IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0083), SUBDEV(0x1205)), - IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0083), SUBDEV(0x1305)), - IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0083), SUBDEV(0x1225)), - IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0083), SUBDEV(0x1325)), - IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0084), SUBDEV(0x1215)), - IWL_DEV_INFO(iwl1000_bgn_cfg, iwl1000_bgn_name, - DEVICE(0x0084), SUBDEV(0x1315)), + DEVICE(0x0083), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, - DEVICE(0x0083), SUBDEV(0x1206)), - IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, - DEVICE(0x0083), SUBDEV(0x1306)), - IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, - DEVICE(0x0083), SUBDEV(0x1226)), - IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, - DEVICE(0x0083), SUBDEV(0x1326)), + DEVICE(0x0083), SUBDEV_MASKED(0x6, 0xF)), IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, DEVICE(0x0084), SUBDEV(0x1216)), IWL_DEV_INFO(iwl1000_bg_cfg, iwl1000_bg_name, @@ -843,31 +733,23 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 100 Series WiFi */ IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, - DEVICE(0x08AE), SUBDEV(0x1005)), + DEVICE(0x08AE), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, - DEVICE(0x08AE), SUBDEV(0x1007)), + DEVICE(0x08AE), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, DEVICE(0x08AF), SUBDEV(0x1015)), IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, DEVICE(0x08AF), SUBDEV(0x1017)), - IWL_DEV_INFO(iwl100_bgn_cfg, iwl100_bgn_name, - DEVICE(0x08AE), SUBDEV(0x1025)), - IWL_DEV_INFO(iwl100_bg_cfg, iwl100_bg_name, - DEVICE(0x08AE), SUBDEV(0x1027)), /* 130 Series WiFi */ IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, - DEVICE(0x0896), SUBDEV(0x5005)), + DEVICE(0x0896), SUBDEV_MASKED(0x5, 0xF)), IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, - DEVICE(0x0896), SUBDEV(0x5007)), + DEVICE(0x0896), SUBDEV_MASKED(0x7, 0xF)), IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, DEVICE(0x0897), SUBDEV(0x5015)), IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, DEVICE(0x0897), SUBDEV(0x5017)), - IWL_DEV_INFO(iwl130_bgn_cfg, iwl130_bgn_name, - DEVICE(0x0896), SUBDEV(0x5025)), - IWL_DEV_INFO(iwl130_bg_cfg, iwl130_bg_name, - DEVICE(0x0896), SUBDEV(0x5027)), /* 2x00 Series */ IWL_DEV_INFO(iwl2000_2bgn_cfg, iwl2000_2bgn_name, @@ -881,61 +763,37 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { /* 2x30 Series */ IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, - DEVICE(0x0887), SUBDEV(0x4062)), + DEVICE(0x0887)), IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, DEVICE(0x0888), SUBDEV(0x4262)), - IWL_DEV_INFO(iwl2030_2bgn_cfg, iwl2030_2bgn_name, - DEVICE(0x0887), SUBDEV(0x4462)), /* 6x35 Series */ IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, - DEVICE(0x088E), SUBDEV(0x4060)), - IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, - DEVICE(0x088E), SUBDEV(0x406A)), - IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, - DEVICE(0x088F), SUBDEV(0x4260)), + DEVICE(0x088E), SUBDEV_MASKED(0x0, 0xF)), IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, - DEVICE(0x088F), SUBDEV(0x426A)), + DEVICE(0x088E), SUBDEV_MASKED(0xA, 0xF)), IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, - DEVICE(0x088E), SUBDEV(0x4460)), + DEVICE(0x088F), SUBDEV_MASKED(0x0, 0xF)), IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_sff_name, - DEVICE(0x088E), SUBDEV(0x446A)), - IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, - DEVICE(0x088E), SUBDEV(0x4860)), - IWL_DEV_INFO(iwl6035_2agn_cfg, iwl6035_2agn_name, - DEVICE(0x088F), SUBDEV(0x5260)), + DEVICE(0x088F), SUBDEV_MASKED(0xA, 0xF)), /* 105 Series */ IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, - DEVICE(0x0894), SUBDEV(0x0022)), + DEVICE(0x0894)), IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, DEVICE(0x0895), SUBDEV(0x0222)), - IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, - DEVICE(0x0894), SUBDEV(0x0422)), - IWL_DEV_INFO(iwl105_bgn_cfg, iwl105_bgn_name, - DEVICE(0x0894), SUBDEV(0x0822)), /* 135 Series */ IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, - DEVICE(0x0892), SUBDEV(0x0062)), + DEVICE(0x0892)), IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, DEVICE(0x0893), SUBDEV(0x0262)), - IWL_DEV_INFO(iwl135_bgn_cfg, iwl135_bgn_name, - DEVICE(0x0892), SUBDEV(0x0462)), #endif /* CONFIG_IWLDVM */ #if IS_ENABLED(CONFIG_IWLMVM) /* 7260 Series */ IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4070)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4072)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4170)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4C60)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4C70)), + DEVICE(0x08B1)), // unlisted ones fall through to here IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x4060)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, @@ -946,66 +804,26 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x08B1), SUBDEV(0x4062)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, DEVICE(0x08B1), SUBDEV(0x4162)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B2), SUBDEV(0x4270)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B2), SUBDEV(0x4272)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B2), SUBDEV(0x4260)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B2), SUBDEV(0x426A)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, - DEVICE(0x08B2), SUBDEV(0x4262)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4470)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4472)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x4460)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x446A)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, DEVICE(0x08B1), SUBDEV(0x4462)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4870)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x486E)), IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, DEVICE(0x08B1), SUBDEV(0x4A70)), IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, DEVICE(0x08B1), SUBDEV(0x4A6E)), IWL_DEV_INFO(iwl7260_high_temp_cfg, iwl7260_2ac_name, DEVICE(0x08B1), SUBDEV(0x4A6C)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x4570)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x4560)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B2), SUBDEV(0x4370)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B2), SUBDEV(0x4360)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x5070)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x5072)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x5170)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0x5770)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x4020)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x402A)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B2), SUBDEV(0x4220)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0x4420)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC070)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC072)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC170)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0xC060)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, @@ -1016,16 +834,40 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x08B1), SUBDEV(0xC062)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, DEVICE(0x08B1), SUBDEV(0xC162)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC770)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B1), SUBDEV(0xC760)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC460)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B1), SUBDEV(0xC462)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC560)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC360)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC020)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC02A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B1), SUBDEV(0xC420)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B2), SUBDEV(0xC270)), + DEVICE(0x08B2), SUBDEV(0x4270)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xCC70)), + DEVICE(0x08B2), SUBDEV(0x4272)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4260)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x426A)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, + DEVICE(0x08B2), SUBDEV(0x4262)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xCC60)), + DEVICE(0x08B2), SUBDEV(0x4370)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4360)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, + DEVICE(0x08B2), SUBDEV(0x4220)), + IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, + DEVICE(0x08B2), SUBDEV(0xC270)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, DEVICE(0x08B2), SUBDEV(0xC272)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, @@ -1034,352 +876,65 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x08B2), SUBDEV(0xC26A)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, DEVICE(0x08B2), SUBDEV(0xC262)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC470)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC472)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC460)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_n_name, - DEVICE(0x08B1), SUBDEV(0xC462)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, - DEVICE(0x08B1), SUBDEV(0xC570)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC560)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2ac_name, DEVICE(0x08B2), SUBDEV(0xC370)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC360)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC020)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC02A)), IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, DEVICE(0x08B2), SUBDEV(0xC220)), - IWL_DEV_INFO(iwl7260_cfg, iwl7260_2n_name, - DEVICE(0x08B1), SUBDEV(0xC420)), /* 3160 Series */ IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0070)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0072)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0170)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0172)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2n_name, - DEVICE(0x08B3), SUBDEV(0x0060)), + DEVICE(0x08B3)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_n_name, - DEVICE(0x08B3), SUBDEV(0x0062)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x0270)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x0272)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0470)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x0472)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x0370)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8070)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8072)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8170)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8172)), + DEVICE(0x08B3), SUBDEV_MASKED(0x62, 0xFF)), IWL_DEV_INFO(iwl3160_cfg, iwl3160_2n_name, - DEVICE(0x08B3), SUBDEV(0x8060)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_n_name, - DEVICE(0x08B3), SUBDEV(0x8062)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x8270)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x8370)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B4), SUBDEV(0x8272)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8470)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x8570)), - IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x1070)), + DEVICE(0x08B3), SUBDEV_MASKED(0x60, 0xFF)), + IWL_DEV_INFO(iwl3160_cfg, iwl3160_2ac_name, - DEVICE(0x08B3), SUBDEV(0x1170)), + DEVICE(0x08B4)), /* 3165 Series */ IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x4010)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x4012)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3166), SUBDEV(0x4212)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x4410)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x4510)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x4110)), + DEVICE(0x3165)), IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3166), SUBDEV(0x4310)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3166), SUBDEV(0x4210)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x8010)), - IWL_DEV_INFO(iwl3165_2ac_cfg, iwl3165_2ac_name, - DEVICE(0x3165), SUBDEV(0x8110)), + DEVICE(0x3166)), /* 3168 Series */ IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, - DEVICE(0x24FB), SUBDEV(0x2010)), - IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, - DEVICE(0x24FB), SUBDEV(0x2110)), - IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, - DEVICE(0x24FB), SUBDEV(0x2050)), - IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, - DEVICE(0x24FB), SUBDEV(0x2150)), - IWL_DEV_INFO(iwl3168_2ac_cfg, iwl3168_2ac_name, - DEVICE(0x24FB), SUBDEV(0x0000)), + DEVICE(0x24FB)), /* 7265 Series */ IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5010)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5110)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5100)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x5310)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, - DEVICE(0x095B), SUBDEV(0x5302)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x5210)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5C10)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5012)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5412)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5410)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5510)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5400)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x1010)), + DEVICE(0x095A)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, DEVICE(0x095A), SUBDEV(0x5000)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, DEVICE(0x095A), SUBDEV(0x500A)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, - DEVICE(0x095B), SUBDEV(0x5200)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, DEVICE(0x095A), SUBDEV(0x5002)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, DEVICE(0x095A), SUBDEV(0x5102)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, - DEVICE(0x095B), SUBDEV(0x5202)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9010)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9012)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x900A)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9110)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9112)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x9210)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x9200)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9510)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x9310)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9410)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, DEVICE(0x095A), SUBDEV(0x5020)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, DEVICE(0x095A), SUBDEV(0x502A)), IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, DEVICE(0x095A), SUBDEV(0x5420)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5090)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5190)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5590)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x5290)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5490)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x5F10)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x5212)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095B), SUBDEV(0x520A)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9000)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9400)), - IWL_DEV_INFO(iwl7265_cfg, iwl7265_2ac_name, - DEVICE(0x095A), SUBDEV(0x9E10)), + DEVICE(0x095B)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095B), SUBDEV(0x5302)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_2n_name, + DEVICE(0x095B), SUBDEV(0x5200)), + IWL_DEV_INFO(iwl7265_cfg, iwl7265_n_name, + DEVICE(0x095B), SUBDEV(0x5202)), /* 8000 Series */ IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x10B0)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0130)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1130)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0132)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1132)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0110)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x01F0)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0012)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1012)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1110)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0250)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0150)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x1150)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0x0030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0x1030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xC010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xC110)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xD010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xC050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xD050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xD0B0)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0xB0B0)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8110)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9010)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9110)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0x8030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0x9030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0xC030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F4), SUBDEV(0xD030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8130)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9130)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8132)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9132)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x8150)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9050)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x9150)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2n_name, - DEVICE(0x24F3), SUBDEV(0x0004)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2n_name, - DEVICE(0x24F3), SUBDEV(0x0044)), - IWL_DEV_INFO(iwl8260_cfg, iwl4165_2ac_name, - DEVICE(0x24F5), SUBDEV(0x0010)), - IWL_DEV_INFO(iwl8260_cfg, iwl4165_2ac_name, - DEVICE(0x24F6), SUBDEV(0x0030)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0810)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0910)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0850)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0950)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0930)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24F3), SUBDEV(0x0000)), - IWL_DEV_INFO(iwl8260_cfg, iwl8260_2ac_name, - DEVICE(0x24F3), SUBDEV(0x4010)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0010)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0110)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x1110)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x1130)), + DEVICE(0x24F3)), IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0130)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x1010)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x10D0)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0050)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0150)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x9010)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x8110)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x8050)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x8010)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0810)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x9110)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x8130)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0910)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0930)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0950)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0850)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x1014)), + DEVICE(0x24FD)), IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, DEVICE(0x24FD), SUBDEV(0x3E02)), IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, @@ -1388,10 +943,6 @@ VISIBLE_IF_IWLWIFI_KUNIT const struct iwl_dev_info iwl_dev_info_table[] = { DEVICE(0x24FD), SUBDEV(0x1012)), IWL_DEV_INFO(iwl8265_cfg, iwl8275_2ac_name, DEVICE(0x24FD), SUBDEV(0x0012)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x0014)), - IWL_DEV_INFO(iwl8265_cfg, iwl8265_2ac_name, - DEVICE(0x24FD), SUBDEV(0x9074)), /* 9000 */ IWL_DEV_INFO(iwl9260_2ac_cfg, iwl9260_killer_1550_name, DEVICE(0x2526), SUBDEV(0x1550)), @@ -2120,7 +1671,7 @@ iwl_pci_find_dev_info(u16 device, u16 subsystem_device, continue; if (dev_info->subdevice != (u16)IWL_CFG_ANY && - dev_info->subdevice != subsystem_device) + dev_info->subdevice != (subsystem_device & dev_info->subdevice_mask)) continue; if (dev_info->mac_type != (u8)IWL_CFG_ANY && -- 2.51.0 From 332fbf871d44cc731ba29dcc69b5700702b4b1f7 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:29 +0300 Subject: [PATCH 12/16] wifi: iwlwifi: pcie: don't call itself indirectly There's no reason for pcie code to call itself indirectly, directly use the pcie functions instead. Signed-off-by: Johannes Berg Reviewed-by: Emmanuel Grumbach Reviewed-by: Yedidya Ben Shimol Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.52db0b9fba15.I062e766ded86f61ec86104c28b84767f1c29ea78@changeid --- .../net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 4 ++-- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 4 ++-- drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 13 +++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c index abddaffcaaf0..bc19f082a8f5 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c @@ -81,7 +81,7 @@ static void iwl_pcie_gen2_apm_stop(struct iwl_trans *trans, bool op_mode_leave) /* Stop device's DMA activity */ iwl_pcie_apm_stop_master(trans); - iwl_trans_sw_reset(trans, false); + iwl_trans_pcie_sw_reset(trans, false); /* * Clear "initialization complete" bit to move adapter from @@ -200,7 +200,7 @@ static void _iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans) iwl_pcie_gen2_apm_stop(trans, false); /* re-take ownership to prevent other users from stealing the device */ - iwl_trans_sw_reset(trans, true); + iwl_trans_pcie_sw_reset(trans, true); /* * Upon stop, the IVAR table gets erased, so msi-x won't diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c index a6187922c06f..b28aaf891bb5 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -3551,8 +3551,8 @@ iwl_trans_pcie_dump_monitor(struct iwl_trans *trans, trans->dbg.dest_tlv->base_shift; } - iwl_trans_read_mem(trans, base, fw_mon_data->data, - monitor_len / sizeof(u32)); + iwl_trans_pcie_read_mem(trans, base, fw_mon_data->data, + monitor_len / sizeof(u32)); } else if (trans->dbg.dest_tlv->monitor_mode == MARBH_MODE) { monitor_len = iwl_trans_pci_dump_marbh_monitor(trans, diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c index bb90bcfc6763..7c8cab294321 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c @@ -497,9 +497,9 @@ void iwl_pcie_tx_start(struct iwl_trans *trans, u32 scd_base_addr) scd_base_addr != trans_pcie->scd_base_addr); /* reset context data, TX status and translation data */ - iwl_trans_write_mem(trans, trans_pcie->scd_base_addr + - SCD_CONTEXT_MEM_LOWER_BOUND, - NULL, clear_dwords); + iwl_trans_pcie_write_mem(trans, trans_pcie->scd_base_addr + + SCD_CONTEXT_MEM_LOWER_BOUND, + NULL, clear_dwords); iwl_write_prph(trans, SCD_DRAM_BASE_ADDR, trans_pcie->txqs.scd_bc_tbls.dma >> 10); @@ -1293,8 +1293,9 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id, if (configure_scd) { iwl_scd_txq_set_inactive(trans, txq_id); - iwl_trans_write_mem(trans, stts_addr, (const void *)zero_val, - ARRAY_SIZE(zero_val)); + iwl_trans_pcie_write_mem(trans, stts_addr, + (const void *)zero_val, + ARRAY_SIZE(zero_val)); } iwl_pcie_txq_unmap(trans, txq_id); @@ -2594,7 +2595,7 @@ static int iwl_trans_pcie_send_hcmd_sync(struct iwl_trans *trans, cmd_str); ret = -ETIMEDOUT; - iwl_trans_sync_nmi(trans); + iwl_trans_pcie_sync_nmi(trans); goto cancel; } -- 2.51.0 From 0b897fbd900e12a08baa3d1a0457944046a882ea Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:30 +0300 Subject: [PATCH 13/16] wifi: iwlwifi: mvm: add command order checks to kunit We can test this with kunit instead of having the runtime checks, add a test here to remove the runtime check next. Signed-off-by: Johannes Berg Reviewed-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.581b60b0833f.I624fb3efc3fa0b155a5da69d7efc39207f133331@changeid --- drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 4 ++ drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 8 +++- .../wireless/intel/iwlwifi/mvm/tests/Makefile | 2 +- .../wireless/intel/iwlwifi/mvm/tests/hcmd.c | 38 +++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 drivers/net/wireless/intel/iwlwifi/mvm/tests/hcmd.c diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index 4c03fdae43e3..fbcbef13015d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h @@ -2129,6 +2129,10 @@ bool iwl_mvm_mld_valid_link_pair(struct ieee80211_vif *vif, const struct iwl_mvm_link_sel_data *b); s8 iwl_mvm_average_dbm_values(const struct iwl_umac_scan_channel_survey_notif *notif); + + +extern const struct iwl_hcmd_arr iwl_mvm_groups[]; +extern const unsigned int iwl_mvm_groups_size; #endif /* AP and IBSS */ diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c index 14932700c6f9..5c7c1d53a28d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c @@ -777,7 +777,8 @@ static const struct iwl_hcmd_names iwl_mvm_bt_coex_names[] = { HCMD_NAME(PROFILE_NOTIF), }; -static const struct iwl_hcmd_arr iwl_mvm_groups[] = { +VISIBLE_IF_IWLWIFI_KUNIT +const struct iwl_hcmd_arr iwl_mvm_groups[] = { [LEGACY_GROUP] = HCMD_ARR(iwl_mvm_legacy_names), [LONG_GROUP] = HCMD_ARR(iwl_mvm_legacy_names), [SYSTEM_GROUP] = HCMD_ARR(iwl_mvm_system_names), @@ -793,6 +794,11 @@ static const struct iwl_hcmd_arr iwl_mvm_groups[] = { [DEBUG_GROUP] = HCMD_ARR(iwl_mvm_debug_names), [STATISTICS_GROUP] = HCMD_ARR(iwl_mvm_statistics_names), }; +EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_mvm_groups); +#if IS_ENABLED(CONFIG_IWLWIFI_KUNIT_TESTS) +const unsigned int iwl_mvm_groups_size = ARRAY_SIZE(iwl_mvm_groups); +EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_mvm_groups_size); +#endif /* this forward declaration can avoid to export the function */ static void iwl_mvm_async_handlers_wk(struct work_struct *wk); diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tests/Makefile b/drivers/net/wireless/intel/iwlwifi/mvm/tests/Makefile index 6bd56a28cffd..895d53f223e9 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tests/Makefile +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tests/Makefile @@ -1,3 +1,3 @@ -iwlmvm-tests-y += module.o links.o scan.o +iwlmvm-tests-y += module.o links.o scan.o hcmd.o obj-$(CONFIG_IWLWIFI_KUNIT_TESTS) += iwlmvm-tests.o diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tests/hcmd.c b/drivers/net/wireless/intel/iwlwifi/mvm/tests/hcmd.c new file mode 100644 index 000000000000..1fee0320c756 --- /dev/null +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tests/hcmd.c @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * KUnit tests for channel helper functions + * + * Copyright (C) 2025 Intel Corporation + */ +#include + +#include +#include "../mvm.h" + +MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING"); + +static void test_hcmd_names_sorted(struct kunit *test) +{ + for (int i = 0; i < iwl_mvm_groups_size; i++) { + const struct iwl_hcmd_arr *arr = &iwl_mvm_groups[i]; + + if (!arr->arr) + continue; + + for (int j = 0; j < arr->size - 1; j++) + KUNIT_EXPECT_LE(test, arr->arr[j].cmd_id, + arr->arr[j + 1].cmd_id); + } +} + +static struct kunit_case hcmd_names_cases[] = { + KUNIT_CASE(test_hcmd_names_sorted), + {}, +}; + +static struct kunit_suite hcmd_names = { + .name = "iwlmvm-hcmd-names", + .test_cases = hcmd_names_cases, +}; + +kunit_test_suite(hcmd_names); -- 2.51.0 From ca00c1806c6cff645e46ade356f129468cdbe6c8 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 2 May 2025 15:56:31 +0300 Subject: [PATCH 14/16] wifi: iwlwifi: remove iwl_cmd_groups_verify_sorted() We now have unit tests for the mvm and mld, and dvm isn't going to change anyway. Remove the runtime checks. Signed-off-by: Johannes Berg Reviewed-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250502155404.e3f01789575d.I4380dcbf3e0ecabc2a8a42c84f448b7dd854bf50@changeid --- drivers/net/wireless/intel/iwlwifi/iwl-trans.c | 18 ------------------ drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 1 - 2 files changed, 19 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.c b/drivers/net/wireless/intel/iwlwifi/iwl-trans.c index edb56a6772f7..1c669fb0a5b6 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.c @@ -409,30 +409,12 @@ const char *iwl_get_cmd_string(struct iwl_trans *trans, u32 id) } IWL_EXPORT_SYMBOL(iwl_get_cmd_string); -int iwl_cmd_groups_verify_sorted(const struct iwl_trans_config *trans) -{ - int i, j; - const struct iwl_hcmd_arr *arr; - - for (i = 0; i < trans->command_groups_size; i++) { - arr = &trans->command_groups[i]; - if (!arr->arr) - continue; - for (j = 0; j < arr->size - 1; j++) - if (arr->arr[j].cmd_id > arr->arr[j + 1].cmd_id) - return -1; - } - return 0; -} -IWL_EXPORT_SYMBOL(iwl_cmd_groups_verify_sorted); - void iwl_trans_configure(struct iwl_trans *trans, const struct iwl_trans_config *trans_cfg) { trans->op_mode = trans_cfg->op_mode; iwl_trans_pcie_configure(trans, trans_cfg); - WARN_ON(iwl_cmd_groups_verify_sorted(trans_cfg)); } IWL_EXPORT_SYMBOL(iwl_trans_configure); diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h index b3d8b2ba5bfc..0f161deb0ec7 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -985,7 +985,6 @@ struct iwl_trans { }; const char *iwl_get_cmd_string(struct iwl_trans *trans, u32 id); -int iwl_cmd_groups_verify_sorted(const struct iwl_trans_config *trans); void iwl_trans_configure(struct iwl_trans *trans, const struct iwl_trans_config *trans_cfg); -- 2.51.0 From 6a2808a566b17ed02b0fc8ff07fa788b7e85e1ff Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Sat, 3 May 2025 22:44:20 +0300 Subject: [PATCH 15/16] wifi: iwlwifi: pcie: rename "continuous" memory What's really meant here is "contiguous", appreviate it as "contig". Signed-off-by: Johannes Berg Reviewed-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250503224231.8c2ccc0a7469.I6ef88a48c2a2e5c0baa881382017d34eb07f9316@changeid --- .../intel/iwlwifi/pcie/ctxt-info-gen3.c | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c index e383757cfbe0..644ef3fb7ab7 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c @@ -347,9 +347,9 @@ void iwl_pcie_ctxt_info_gen3_free(struct iwl_trans *trans, bool alive) trans_pcie->prph_info = NULL; } -static int iwl_pcie_load_payloads_continuously(struct iwl_trans *trans, - const struct iwl_pnvm_image *pnvm_data, - struct iwl_dram_data *dram) +static int iwl_pcie_load_payloads_contig(struct iwl_trans *trans, + const struct iwl_pnvm_image *pnvm_data, + struct iwl_dram_data *dram) { u32 len, len0, len1; @@ -470,10 +470,8 @@ int iwl_trans_pcie_ctx_info_gen3_load_pnvm(struct iwl_trans *trans, trans->pnvm_loaded = true; } else { /* save only in one DRAM section */ - ret = iwl_pcie_load_payloads_continuously - (trans, - pnvm_payloads, - &dram_regions->drams[0]); + ret = iwl_pcie_load_payloads_contig(trans, pnvm_payloads, + &dram_regions->drams[0]); if (!ret) { dram_regions->n_regions = 1; trans->pnvm_loaded = true; @@ -508,7 +506,7 @@ static void iwl_pcie_set_pnvm_segments(struct iwl_trans *trans) cpu_to_le32(iwl_dram_regions_size(dram_regions)); } -static void iwl_pcie_set_continuous_pnvm(struct iwl_trans *trans) +static void iwl_pcie_set_contig_pnvm(struct iwl_trans *trans) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_prph_scratch_ctrl_cfg *prph_sc_ctrl = @@ -529,7 +527,7 @@ void iwl_trans_pcie_ctx_info_gen3_set_pnvm(struct iwl_trans *trans, if (fw_has_capa(capa, IWL_UCODE_TLV_CAPA_FRAGMENTED_PNVM_IMG)) iwl_pcie_set_pnvm_segments(trans); else - iwl_pcie_set_continuous_pnvm(trans); + iwl_pcie_set_contig_pnvm(trans); } int iwl_trans_pcie_ctx_info_gen3_load_reduce_power(struct iwl_trans *trans, @@ -566,10 +564,8 @@ int iwl_trans_pcie_ctx_info_gen3_load_reduce_power(struct iwl_trans *trans, trans->reduce_power_loaded = true; } else { /* save only in one DRAM section */ - ret = iwl_pcie_load_payloads_continuously - (trans, - payloads, - &dram_regions->drams[0]); + ret = iwl_pcie_load_payloads_contig(trans, payloads, + &dram_regions->drams[0]); if (!ret) { dram_regions->n_regions = 1; trans->reduce_power_loaded = true; @@ -592,7 +588,7 @@ static void iwl_pcie_set_reduce_power_segments(struct iwl_trans *trans) cpu_to_le32(iwl_dram_regions_size(dram_regions)); } -static void iwl_pcie_set_continuous_reduce_power(struct iwl_trans *trans) +static void iwl_pcie_set_contig_reduce_power(struct iwl_trans *trans) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_prph_scratch_ctrl_cfg *prph_sc_ctrl = @@ -614,6 +610,6 @@ iwl_trans_pcie_ctx_info_gen3_set_reduce_power(struct iwl_trans *trans, if (fw_has_capa(capa, IWL_UCODE_TLV_CAPA_FRAGMENTED_PNVM_IMG)) iwl_pcie_set_reduce_power_segments(trans); else - iwl_pcie_set_continuous_reduce_power(trans); + iwl_pcie_set_contig_reduce_power(trans); } -- 2.51.0 From cd6d6de694e23ff0cba0af6680b69f361aa328dd Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Sat, 3 May 2025 22:44:21 +0300 Subject: [PATCH 16/16] wifi: iwlwifi: pcie: move ME check data to pcie There's no reason for this data to be in the generic transport struct, so move it to pcie. Signed-off-by: Johannes Berg Reviewed-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20250503224231.0b74726b2651.I2c6bff6945b9288eadf242895906ab1c2cb76389@changeid --- .../net/wireless/intel/iwlwifi/iwl-trans.h | 6 ----- drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 23 +++++++++++-------- .../wireless/intel/iwlwifi/pcie/internal.h | 6 +++++ .../net/wireless/intel/iwlwifi/pcie/trans.c | 5 ++-- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h index 0f161deb0ec7..aa32305e05f6 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -885,9 +885,6 @@ struct iwl_txq { * @restart.wk: restart worker * @restart.mode: reset/restart error mode information * @restart.during_reset: error occurred during previous software reset - * @me_recheck_wk: worker to recheck WiAMT/CSME presence - * @me_present: WiAMT/CSME is detected as present (1), not present (0) - * or unknown (-1, so can still use it as a boolean safely) * @trans_specific: data for the specific transport this is allocated for/with * @dsbr_urm_fw_dependent: switch to URM based on fw settings * @dsbr_urm_permanent: switch to URM permanently @@ -973,9 +970,6 @@ struct iwl_trans { bool during_reset; } restart; - struct delayed_work me_recheck_wk; - s8 me_present; - u8 request_top_reset:1, do_top_reset:1; diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 6bb7de8c43fe..27023baa6565 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c @@ -1719,21 +1719,23 @@ EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_pci_find_dev_info); static void iwl_pcie_recheck_me_status(struct work_struct *wk) { - struct iwl_trans *trans = container_of(wk, typeof(*trans), - me_recheck_wk.work); + struct iwl_trans_pcie *trans_pcie = container_of(wk, + typeof(*trans_pcie), + me_recheck_wk.work); u32 val; - val = iwl_read32(trans, CSR_HW_IF_CONFIG_REG); - trans->me_present = !!(val & CSR_HW_IF_CONFIG_REG_IAMT_UP); + val = iwl_read32(trans_pcie->trans, CSR_HW_IF_CONFIG_REG); + trans_pcie->me_present = !!(val & CSR_HW_IF_CONFIG_REG_IAMT_UP); } static void iwl_pcie_check_me_status(struct iwl_trans *trans) { + struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); u32 val; - trans->me_present = -1; + trans_pcie->me_present = -1; - INIT_DELAYED_WORK(&trans->me_recheck_wk, + INIT_DELAYED_WORK(&trans_pcie->me_recheck_wk, iwl_pcie_recheck_me_status); /* we don't have a good way of determining this until BZ */ @@ -1742,7 +1744,7 @@ static void iwl_pcie_check_me_status(struct iwl_trans *trans) val = iwl_read_prph(trans, CNVI_SCU_REG_FOR_ECO_1); if (val & CNVI_SCU_REG_FOR_ECO_1_WIAMT_KNOWN) { - trans->me_present = + trans_pcie->me_present = !!(val & CNVI_SCU_REG_FOR_ECO_1_WIAMT_PRESENT); return; } @@ -1750,12 +1752,12 @@ static void iwl_pcie_check_me_status(struct iwl_trans *trans) val = iwl_read32(trans, CSR_HW_IF_CONFIG_REG); if (val & (CSR_HW_IF_CONFIG_REG_ME_OWN | CSR_HW_IF_CONFIG_REG_IAMT_UP)) { - trans->me_present = 1; + trans_pcie->me_present = 1; return; } /* recheck again later, ME might still be initializing */ - schedule_delayed_work(&trans->me_recheck_wk, HZ); + schedule_delayed_work(&trans_pcie->me_recheck_wk, HZ); } static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) @@ -1904,11 +1906,12 @@ out_free_trans: static void iwl_pci_remove(struct pci_dev *pdev) { struct iwl_trans *trans = pci_get_drvdata(pdev); + struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); if (!trans) return; - cancel_delayed_work_sync(&trans->me_recheck_wk); + cancel_delayed_work_sync(&trans_pcie->me_recheck_wk); iwl_drv_stop(trans->drv); diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h index c0a670994ce7..2cf2936dbf2d 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h +++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h @@ -420,6 +420,9 @@ struct iwl_pcie_txqs { * @isr_stats: interrupt statistics * @napi_dev: (fake) netdev for NAPI registration * @txqs: transport tx queues data. + * @me_present: WiAMT/CSME is detected as present (1), not present (0) + * or unknown (-1, so can still use it as a boolean safely) + * @me_recheck_wk: worker to recheck WiAMT/CSME presence */ struct iwl_trans_pcie { struct iwl_rxq *rxq; @@ -519,6 +522,9 @@ struct iwl_trans_pcie { char rf_name[32]; struct iwl_pcie_txqs txqs; + + s8 me_present; + struct delayed_work me_recheck_wk; }; static inline struct iwl_trans_pcie * diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c index b28aaf891bb5..5b8db061792f 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c @@ -2348,6 +2348,7 @@ out: void iwl_trans_pcie_reset(struct iwl_trans *trans, enum iwl_reset_mode mode) { + struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_trans_pcie_removal *removal; char _msg = 0, *msg = &_msg; @@ -2357,9 +2358,9 @@ void iwl_trans_pcie_reset(struct iwl_trans *trans, enum iwl_reset_mode mode) if (test_bit(STATUS_TRANS_DEAD, &trans->status)) return; - if (trans->me_present && mode == IWL_RESET_MODE_PROD_RESET) { + if (trans_pcie->me_present && mode == IWL_RESET_MODE_PROD_RESET) { mode = IWL_RESET_MODE_FUNC_RESET; - if (trans->me_present < 0) + if (trans_pcie->me_present < 0) msg = " instead of product reset as ME may be present"; else msg = " instead of product reset as ME is present"; -- 2.51.0