wifi: iwlwifi: cfg: remove unnecessary configs
authorJohannes Berg <johannes.berg@intel.com>
Fri, 2 May 2025 12:56:28 +0000 (15:56 +0300)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 6 May 2025 19:22:13 +0000 (22:22 +0300)
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 <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250502155404.689f9b335cbe.I66f1344b6ac7aa3665696637c97fa843c2307423@changeid
drivers/net/wireless/intel/iwlwifi/iwl-config.h
drivers/net/wireless/intel/iwlwifi/pcie/drv.c

index 4b43f561bd127f26ba95e2810e966cde4bb27a67..fe701410a44f237981766c2926314c653bd7cd3f 100644 (file)
@@ -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;
index 449ed4b02a5f859c876bbc865aadaee2c878f8a6..6bb7de8c43fe214202bf6c19a512eadca2ab41df 100644 (file)
@@ -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 &&