diff mbox series

[iwlwifi-next,12/15] wifi: iwlwifi: cfg: remove unnecessary configs

Message ID 20250502155404.689f9b335cbe.I66f1344b6ac7aa3665696637c97fa843c2307423@changeid
State New
Headers show
Series wifi: iwlwifi: updates - 2025-05-02 | expand

Commit Message

Miri Korenblit May 2, 2025, 12:56 p.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

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>
---
 .../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 mbox series

Patch

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 &&