diff options
author | Kalle Valo <kvalo@codeaurora.org> | 2017-11-20 10:44:44 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2017-11-20 10:44:44 -0500 |
commit | 1514f6fc136943c27364f164de1e86c2d51befa9 (patch) | |
tree | b233ecbcc077508d91a6eceb1ce31bb406e111e1 | |
parent | 32a72bbd5da2411eab591bf9bc2e39349106193a (diff) | |
parent | c2c48ddfc8b03b9ecb51d2832b586497b37531bc (diff) |
Merge tag 'iwlwifi-for-kalle-2017-11-19' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
iwlwifi: first set of fixes for 4.15
* Support new FW API version of scan cmd (used in FW version 34);
* Add a bunch of PCI IDs and fix configuration structs for A000
devices;
* Fix the exported firmware name strings for 9000 and A000 devices;
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/cfg/9000.c | 73 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/cfg/a000.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/api/scan.h | 59 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/fw/file.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-config.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 86 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 132 |
8 files changed, 296 insertions, 76 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c index af7c4f36b66f..e7e75b458005 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c | |||
@@ -72,18 +72,21 @@ | |||
72 | #define IWL9000_SMEM_OFFSET 0x400000 | 72 | #define IWL9000_SMEM_OFFSET 0x400000 |
73 | #define IWL9000_SMEM_LEN 0x68000 | 73 | #define IWL9000_SMEM_LEN 0x68000 |
74 | 74 | ||
75 | #define IWL9000_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-" | 75 | #define IWL9000A_FW_PRE "iwlwifi-9000-pu-a0-jf-a0-" |
76 | #define IWL9000B_FW_PRE "iwlwifi-9000-pu-b0-jf-b0-" | ||
76 | #define IWL9000RFB_FW_PRE "iwlwifi-9000-pu-a0-jf-b0-" | 77 | #define IWL9000RFB_FW_PRE "iwlwifi-9000-pu-a0-jf-b0-" |
77 | #define IWL9260A_FW_PRE "iwlwifi-9260-th-a0-jf-a0-" | 78 | #define IWL9260A_FW_PRE "iwlwifi-9260-th-a0-jf-a0-" |
78 | #define IWL9260B_FW_PRE "iwlwifi-9260-th-b0-jf-b0-" | 79 | #define IWL9260B_FW_PRE "iwlwifi-9260-th-b0-jf-b0-" |
79 | #define IWL9000_MODULE_FIRMWARE(api) \ | 80 | #define IWL9000A_MODULE_FIRMWARE(api) \ |
80 | IWL9000_FW_PRE "-" __stringify(api) ".ucode" | 81 | IWL9000A_FW_PRE __stringify(api) ".ucode" |
82 | #define IWL9000B_MODULE_FIRMWARE(api) \ | ||
83 | IWL9000B_FW_PRE __stringify(api) ".ucode" | ||
81 | #define IWL9000RFB_MODULE_FIRMWARE(api) \ | 84 | #define IWL9000RFB_MODULE_FIRMWARE(api) \ |
82 | IWL9000RFB_FW_PRE "-" __stringify(api) ".ucode" | 85 | IWL9000RFB_FW_PRE __stringify(api) ".ucode" |
83 | #define IWL9260A_MODULE_FIRMWARE(api) \ | 86 | #define IWL9260A_MODULE_FIRMWARE(api) \ |
84 | IWL9260A_FW_PRE "-" __stringify(api) ".ucode" | 87 | IWL9260A_FW_PRE __stringify(api) ".ucode" |
85 | #define IWL9260B_MODULE_FIRMWARE(api) \ | 88 | #define IWL9260B_MODULE_FIRMWARE(api) \ |
86 | IWL9260B_FW_PRE "-" __stringify(api) ".ucode" | 89 | IWL9260B_FW_PRE __stringify(api) ".ucode" |
87 | 90 | ||
88 | #define NVM_HW_SECTION_NUM_FAMILY_9000 10 | 91 | #define NVM_HW_SECTION_NUM_FAMILY_9000 10 |
89 | 92 | ||
@@ -194,7 +197,48 @@ const struct iwl_cfg iwl9460_2ac_cfg = { | |||
194 | .nvm_ver = IWL9000_NVM_VERSION, | 197 | .nvm_ver = IWL9000_NVM_VERSION, |
195 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | 198 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, |
196 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | 199 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, |
200 | }; | ||
201 | |||
202 | const struct iwl_cfg iwl9460_2ac_cfg_soc = { | ||
203 | .name = "Intel(R) Dual Band Wireless AC 9460", | ||
204 | .fw_name_pre = IWL9000A_FW_PRE, | ||
205 | .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE, | ||
206 | .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, | ||
207 | IWL_DEVICE_9000, | ||
208 | .ht_params = &iwl9000_ht_params, | ||
209 | .nvm_ver = IWL9000_NVM_VERSION, | ||
210 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | ||
211 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | ||
197 | .integrated = true, | 212 | .integrated = true, |
213 | .soc_latency = 5000, | ||
214 | }; | ||
215 | |||
216 | const struct iwl_cfg iwl9461_2ac_cfg_soc = { | ||
217 | .name = "Intel(R) Dual Band Wireless AC 9461", | ||
218 | .fw_name_pre = IWL9000A_FW_PRE, | ||
219 | .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE, | ||
220 | .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, | ||
221 | IWL_DEVICE_9000, | ||
222 | .ht_params = &iwl9000_ht_params, | ||
223 | .nvm_ver = IWL9000_NVM_VERSION, | ||
224 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | ||
225 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | ||
226 | .integrated = true, | ||
227 | .soc_latency = 5000, | ||
228 | }; | ||
229 | |||
230 | const struct iwl_cfg iwl9462_2ac_cfg_soc = { | ||
231 | .name = "Intel(R) Dual Band Wireless AC 9462", | ||
232 | .fw_name_pre = IWL9000A_FW_PRE, | ||
233 | .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE, | ||
234 | .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, | ||
235 | IWL_DEVICE_9000, | ||
236 | .ht_params = &iwl9000_ht_params, | ||
237 | .nvm_ver = IWL9000_NVM_VERSION, | ||
238 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | ||
239 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | ||
240 | .integrated = true, | ||
241 | .soc_latency = 5000, | ||
198 | }; | 242 | }; |
199 | 243 | ||
200 | const struct iwl_cfg iwl9560_2ac_cfg = { | 244 | const struct iwl_cfg iwl9560_2ac_cfg = { |
@@ -206,10 +250,23 @@ const struct iwl_cfg iwl9560_2ac_cfg = { | |||
206 | .nvm_ver = IWL9000_NVM_VERSION, | 250 | .nvm_ver = IWL9000_NVM_VERSION, |
207 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | 251 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, |
208 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | 252 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, |
209 | .integrated = true, | ||
210 | }; | 253 | }; |
211 | 254 | ||
212 | MODULE_FIRMWARE(IWL9000_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | 255 | const struct iwl_cfg iwl9560_2ac_cfg_soc = { |
256 | .name = "Intel(R) Dual Band Wireless AC 9560", | ||
257 | .fw_name_pre = IWL9000A_FW_PRE, | ||
258 | .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE, | ||
259 | .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, | ||
260 | IWL_DEVICE_9000, | ||
261 | .ht_params = &iwl9000_ht_params, | ||
262 | .nvm_ver = IWL9000_NVM_VERSION, | ||
263 | .nvm_calib_ver = IWL9000_TX_POWER_VERSION, | ||
264 | .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, | ||
265 | .integrated = true, | ||
266 | .soc_latency = 5000, | ||
267 | }; | ||
268 | MODULE_FIRMWARE(IWL9000A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | ||
269 | MODULE_FIRMWARE(IWL9000B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | ||
213 | MODULE_FIRMWARE(IWL9000RFB_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | 270 | MODULE_FIRMWARE(IWL9000RFB_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); |
214 | MODULE_FIRMWARE(IWL9260A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | 271 | MODULE_FIRMWARE(IWL9260A_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); |
215 | MODULE_FIRMWARE(IWL9260B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); | 272 | MODULE_FIRMWARE(IWL9260B_MODULE_FIRMWARE(IWL9000_UCODE_API_MAX)); |
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/a000.c b/drivers/net/wireless/intel/iwlwifi/cfg/a000.c index ea8206515171..705f83b02e13 100644 --- a/drivers/net/wireless/intel/iwlwifi/cfg/a000.c +++ b/drivers/net/wireless/intel/iwlwifi/cfg/a000.c | |||
@@ -80,15 +80,15 @@ | |||
80 | #define IWL_A000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-" | 80 | #define IWL_A000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-" |
81 | 81 | ||
82 | #define IWL_A000_HR_MODULE_FIRMWARE(api) \ | 82 | #define IWL_A000_HR_MODULE_FIRMWARE(api) \ |
83 | IWL_A000_HR_FW_PRE "-" __stringify(api) ".ucode" | 83 | IWL_A000_HR_FW_PRE __stringify(api) ".ucode" |
84 | #define IWL_A000_JF_MODULE_FIRMWARE(api) \ | 84 | #define IWL_A000_JF_MODULE_FIRMWARE(api) \ |
85 | IWL_A000_JF_FW_PRE "-" __stringify(api) ".ucode" | 85 | IWL_A000_JF_FW_PRE __stringify(api) ".ucode" |
86 | #define IWL_A000_HR_F0_QNJ_MODULE_FIRMWARE(api) \ | 86 | #define IWL_A000_HR_F0_QNJ_MODULE_FIRMWARE(api) \ |
87 | IWL_A000_HR_F0_FW_PRE "-" __stringify(api) ".ucode" | 87 | IWL_A000_HR_F0_FW_PRE __stringify(api) ".ucode" |
88 | #define IWL_A000_JF_B0_QNJ_MODULE_FIRMWARE(api) \ | 88 | #define IWL_A000_JF_B0_QNJ_MODULE_FIRMWARE(api) \ |
89 | IWL_A000_JF_B0_FW_PRE "-" __stringify(api) ".ucode" | 89 | IWL_A000_JF_B0_FW_PRE __stringify(api) ".ucode" |
90 | #define IWL_A000_HR_A0_QNJ_MODULE_FIRMWARE(api) \ | 90 | #define IWL_A000_HR_A0_QNJ_MODULE_FIRMWARE(api) \ |
91 | IWL_A000_HR_A0_FW_PRE "-" __stringify(api) ".ucode" | 91 | IWL_A000_HR_A0_FW_PRE __stringify(api) ".ucode" |
92 | 92 | ||
93 | #define NVM_HW_SECTION_NUM_FAMILY_A000 10 | 93 | #define NVM_HW_SECTION_NUM_FAMILY_A000 10 |
94 | 94 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h b/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h index 5a40092febfb..3bfc657f6b42 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/scan.h | |||
@@ -531,6 +531,8 @@ struct iwl_scan_config_v1 { | |||
531 | } __packed; /* SCAN_CONFIG_DB_CMD_API_S */ | 531 | } __packed; /* SCAN_CONFIG_DB_CMD_API_S */ |
532 | 532 | ||
533 | #define SCAN_TWO_LMACS 2 | 533 | #define SCAN_TWO_LMACS 2 |
534 | #define SCAN_LB_LMAC_IDX 0 | ||
535 | #define SCAN_HB_LMAC_IDX 1 | ||
534 | 536 | ||
535 | struct iwl_scan_config { | 537 | struct iwl_scan_config { |
536 | __le32 flags; | 538 | __le32 flags; |
@@ -578,6 +580,7 @@ enum iwl_umac_scan_general_flags { | |||
578 | IWL_UMAC_SCAN_GEN_FLAGS_MATCH = BIT(9), | 580 | IWL_UMAC_SCAN_GEN_FLAGS_MATCH = BIT(9), |
579 | IWL_UMAC_SCAN_GEN_FLAGS_EXTENDED_DWELL = BIT(10), | 581 | IWL_UMAC_SCAN_GEN_FLAGS_EXTENDED_DWELL = BIT(10), |
580 | IWL_UMAC_SCAN_GEN_FLAGS_LMAC2_FRAGMENTED = BIT(11), | 582 | IWL_UMAC_SCAN_GEN_FLAGS_LMAC2_FRAGMENTED = BIT(11), |
583 | IWL_UMAC_SCAN_GEN_FLAGS_ADAPTIVE_DWELL = BIT(13), | ||
581 | }; | 584 | }; |
582 | 585 | ||
583 | /** | 586 | /** |
@@ -631,12 +634,17 @@ struct iwl_scan_req_umac_tail { | |||
631 | * @uid: scan id, &enum iwl_umac_scan_uid_offsets | 634 | * @uid: scan id, &enum iwl_umac_scan_uid_offsets |
632 | * @ooc_priority: out of channel priority - &enum iwl_scan_priority | 635 | * @ooc_priority: out of channel priority - &enum iwl_scan_priority |
633 | * @general_flags: &enum iwl_umac_scan_general_flags | 636 | * @general_flags: &enum iwl_umac_scan_general_flags |
634 | * @reserved2: for future use and alignment | ||
635 | * @scan_start_mac_id: report the scan start TSF time according to this mac TSF | 637 | * @scan_start_mac_id: report the scan start TSF time according to this mac TSF |
636 | * @extended_dwell: dwell time for channels 1, 6 and 11 | 638 | * @extended_dwell: dwell time for channels 1, 6 and 11 |
637 | * @active_dwell: dwell time for active scan | 639 | * @active_dwell: dwell time for active scan |
638 | * @passive_dwell: dwell time for passive scan | 640 | * @passive_dwell: dwell time for passive scan |
639 | * @fragmented_dwell: dwell time for fragmented passive scan | 641 | * @fragmented_dwell: dwell time for fragmented passive scan |
642 | * @adwell_default_n_aps: for adaptive dwell the default number of APs | ||
643 | * per channel | ||
644 | * @adwell_default_n_aps_social: for adaptive dwell the default | ||
645 | * number of APs per social (1,6,11) channel | ||
646 | * @adwell_max_budget: for adaptive dwell the maximal budget of TU to be added | ||
647 | * to total scan time | ||
640 | * @max_out_time: max out of serving channel time, per LMAC - for CDB there | 648 | * @max_out_time: max out of serving channel time, per LMAC - for CDB there |
641 | * are 2 LMACs | 649 | * are 2 LMACs |
642 | * @suspend_time: max suspend time, per LMAC - for CDB there are 2 LMACs | 650 | * @suspend_time: max suspend time, per LMAC - for CDB there are 2 LMACs |
@@ -644,6 +652,8 @@ struct iwl_scan_req_umac_tail { | |||
644 | * @channel_flags: &enum iwl_scan_channel_flags | 652 | * @channel_flags: &enum iwl_scan_channel_flags |
645 | * @n_channels: num of channels in scan request | 653 | * @n_channels: num of channels in scan request |
646 | * @reserved: for future use and alignment | 654 | * @reserved: for future use and alignment |
655 | * @reserved2: for future use and alignment | ||
656 | * @reserved3: for future use and alignment | ||
647 | * @data: &struct iwl_scan_channel_cfg_umac and | 657 | * @data: &struct iwl_scan_channel_cfg_umac and |
648 | * &struct iwl_scan_req_umac_tail | 658 | * &struct iwl_scan_req_umac_tail |
649 | */ | 659 | */ |
@@ -651,41 +661,64 @@ struct iwl_scan_req_umac { | |||
651 | __le32 flags; | 661 | __le32 flags; |
652 | __le32 uid; | 662 | __le32 uid; |
653 | __le32 ooc_priority; | 663 | __le32 ooc_priority; |
654 | /* SCAN_GENERAL_PARAMS_API_S_VER_4 */ | ||
655 | __le16 general_flags; | 664 | __le16 general_flags; |
656 | u8 reserved2; | 665 | u8 reserved; |
657 | u8 scan_start_mac_id; | 666 | u8 scan_start_mac_id; |
658 | u8 extended_dwell; | ||
659 | u8 active_dwell; | ||
660 | u8 passive_dwell; | ||
661 | u8 fragmented_dwell; | ||
662 | union { | 667 | union { |
663 | struct { | 668 | struct { |
669 | u8 extended_dwell; | ||
670 | u8 active_dwell; | ||
671 | u8 passive_dwell; | ||
672 | u8 fragmented_dwell; | ||
664 | __le32 max_out_time; | 673 | __le32 max_out_time; |
665 | __le32 suspend_time; | 674 | __le32 suspend_time; |
666 | __le32 scan_priority; | 675 | __le32 scan_priority; |
667 | /* SCAN_CHANNEL_PARAMS_API_S_VER_4 */ | 676 | /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */ |
668 | u8 channel_flags; | 677 | u8 channel_flags; |
669 | u8 n_channels; | 678 | u8 n_channels; |
670 | __le16 reserved; | 679 | __le16 reserved2; |
671 | u8 data[]; | 680 | u8 data[]; |
672 | } v1; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_1 */ | 681 | } v1; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_1 */ |
673 | struct { | 682 | struct { |
683 | u8 extended_dwell; | ||
684 | u8 active_dwell; | ||
685 | u8 passive_dwell; | ||
686 | u8 fragmented_dwell; | ||
674 | __le32 max_out_time[SCAN_TWO_LMACS]; | 687 | __le32 max_out_time[SCAN_TWO_LMACS]; |
675 | __le32 suspend_time[SCAN_TWO_LMACS]; | 688 | __le32 suspend_time[SCAN_TWO_LMACS]; |
676 | __le32 scan_priority; | 689 | __le32 scan_priority; |
677 | /* SCAN_CHANNEL_PARAMS_API_S_VER_4 */ | 690 | /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */ |
678 | u8 channel_flags; | 691 | u8 channel_flags; |
679 | u8 n_channels; | 692 | u8 n_channels; |
680 | __le16 reserved; | 693 | __le16 reserved2; |
681 | u8 data[]; | 694 | u8 data[]; |
682 | } v6; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_6 */ | 695 | } v6; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_6 */ |
696 | struct { | ||
697 | u8 active_dwell; | ||
698 | u8 passive_dwell; | ||
699 | u8 fragmented_dwell; | ||
700 | u8 adwell_default_n_aps; | ||
701 | u8 adwell_default_n_aps_social; | ||
702 | u8 reserved3; | ||
703 | __le16 adwell_max_budget; | ||
704 | __le32 max_out_time[SCAN_TWO_LMACS]; | ||
705 | __le32 suspend_time[SCAN_TWO_LMACS]; | ||
706 | __le32 scan_priority; | ||
707 | /* SCAN_CHANNEL_PARAMS_API_S_VER_1 */ | ||
708 | u8 channel_flags; | ||
709 | u8 n_channels; | ||
710 | __le16 reserved2; | ||
711 | u8 data[]; | ||
712 | } v7; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_7 */ | ||
683 | }; | 713 | }; |
684 | } __packed; | 714 | } __packed; |
685 | 715 | ||
686 | #define IWL_SCAN_REQ_UMAC_SIZE sizeof(struct iwl_scan_req_umac) | 716 | #define IWL_SCAN_REQ_UMAC_SIZE_V7 sizeof(struct iwl_scan_req_umac) |
717 | #define IWL_SCAN_REQ_UMAC_SIZE_V6 (sizeof(struct iwl_scan_req_umac) - \ | ||
718 | 2 * sizeof(u8) - sizeof(__le16)) | ||
687 | #define IWL_SCAN_REQ_UMAC_SIZE_V1 (sizeof(struct iwl_scan_req_umac) - \ | 719 | #define IWL_SCAN_REQ_UMAC_SIZE_V1 (sizeof(struct iwl_scan_req_umac) - \ |
688 | 2 * sizeof(__le32)) | 720 | 2 * sizeof(__le32) - 2 * sizeof(u8) - \ |
721 | sizeof(__le16)) | ||
689 | 722 | ||
690 | /** | 723 | /** |
691 | * struct iwl_umac_scan_abort | 724 | * struct iwl_umac_scan_abort |
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/file.h b/drivers/net/wireless/intel/iwlwifi/fw/file.h index 740d97093d1c..37a5c5b4eda6 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/file.h +++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h | |||
@@ -264,6 +264,7 @@ enum iwl_ucode_tlv_api { | |||
264 | IWL_UCODE_TLV_API_STA_TYPE = (__force iwl_ucode_tlv_api_t)30, | 264 | IWL_UCODE_TLV_API_STA_TYPE = (__force iwl_ucode_tlv_api_t)30, |
265 | IWL_UCODE_TLV_API_NAN2_VER2 = (__force iwl_ucode_tlv_api_t)31, | 265 | IWL_UCODE_TLV_API_NAN2_VER2 = (__force iwl_ucode_tlv_api_t)31, |
266 | /* API Set 1 */ | 266 | /* API Set 1 */ |
267 | IWL_UCODE_TLV_API_ADAPTIVE_DWELL = (__force iwl_ucode_tlv_api_t)32, | ||
267 | IWL_UCODE_TLV_API_NEW_BEACON_TEMPLATE = (__force iwl_ucode_tlv_api_t)34, | 268 | IWL_UCODE_TLV_API_NEW_BEACON_TEMPLATE = (__force iwl_ucode_tlv_api_t)34, |
268 | IWL_UCODE_TLV_API_NEW_RX_STATS = (__force iwl_ucode_tlv_api_t)35, | 269 | IWL_UCODE_TLV_API_NEW_RX_STATS = (__force iwl_ucode_tlv_api_t)35, |
269 | IWL_UCODE_TLV_API_COEX_ATS_EXTERNAL = (__force iwl_ucode_tlv_api_t)37, | 270 | IWL_UCODE_TLV_API_COEX_ATS_EXTERNAL = (__force iwl_ucode_tlv_api_t)37, |
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h index d1263a554420..e21e46cf6f9a 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h | |||
@@ -366,6 +366,7 @@ struct iwl_cfg { | |||
366 | u32 dccm2_len; | 366 | u32 dccm2_len; |
367 | u32 smem_offset; | 367 | u32 smem_offset; |
368 | u32 smem_len; | 368 | u32 smem_len; |
369 | u32 soc_latency; | ||
369 | u16 nvm_ver; | 370 | u16 nvm_ver; |
370 | u16 nvm_calib_ver; | 371 | u16 nvm_calib_ver; |
371 | u16 rx_with_siso_diversity:1, | 372 | u16 rx_with_siso_diversity:1, |
@@ -472,6 +473,10 @@ extern const struct iwl_cfg iwl9260_2ac_cfg; | |||
472 | extern const struct iwl_cfg iwl9270_2ac_cfg; | 473 | extern const struct iwl_cfg iwl9270_2ac_cfg; |
473 | extern const struct iwl_cfg iwl9460_2ac_cfg; | 474 | extern const struct iwl_cfg iwl9460_2ac_cfg; |
474 | extern const struct iwl_cfg iwl9560_2ac_cfg; | 475 | extern const struct iwl_cfg iwl9560_2ac_cfg; |
476 | extern const struct iwl_cfg iwl9460_2ac_cfg_soc; | ||
477 | extern const struct iwl_cfg iwl9461_2ac_cfg_soc; | ||
478 | extern const struct iwl_cfg iwl9462_2ac_cfg_soc; | ||
479 | extern const struct iwl_cfg iwl9560_2ac_cfg_soc; | ||
475 | extern const struct iwl_cfg iwla000_2ac_cfg_hr; | 480 | extern const struct iwl_cfg iwla000_2ac_cfg_hr; |
476 | extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb; | 481 | extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb; |
477 | extern const struct iwl_cfg iwla000_2ac_cfg_jf; | 482 | extern const struct iwl_cfg iwla000_2ac_cfg_jf; |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index 0e18c5066f04..4575595ab022 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | |||
@@ -1142,6 +1142,12 @@ static inline bool iwl_mvm_is_d0i3_supported(struct iwl_mvm *mvm) | |||
1142 | IWL_UCODE_TLV_CAPA_D0I3_SUPPORT); | 1142 | IWL_UCODE_TLV_CAPA_D0I3_SUPPORT); |
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | static inline bool iwl_mvm_is_adaptive_dwell_supported(struct iwl_mvm *mvm) | ||
1146 | { | ||
1147 | return fw_has_api(&mvm->fw->ucode_capa, | ||
1148 | IWL_UCODE_TLV_API_ADAPTIVE_DWELL); | ||
1149 | } | ||
1150 | |||
1145 | static inline bool iwl_mvm_enter_d0i3_on_suspend(struct iwl_mvm *mvm) | 1151 | static inline bool iwl_mvm_enter_d0i3_on_suspend(struct iwl_mvm *mvm) |
1146 | { | 1152 | { |
1147 | /* For now we only use this mode to differentiate between | 1153 | /* For now we only use this mode to differentiate between |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c index 774122fed454..e4fd476e9ccb 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c | |||
@@ -130,6 +130,19 @@ struct iwl_mvm_scan_params { | |||
130 | u32 measurement_dwell; | 130 | u32 measurement_dwell; |
131 | }; | 131 | }; |
132 | 132 | ||
133 | static inline void *iwl_mvm_get_scan_req_umac_data(struct iwl_mvm *mvm) | ||
134 | { | ||
135 | struct iwl_scan_req_umac *cmd = mvm->scan_cmd; | ||
136 | |||
137 | if (iwl_mvm_is_adaptive_dwell_supported(mvm)) | ||
138 | return (void *)&cmd->v7.data; | ||
139 | |||
140 | if (iwl_mvm_has_new_tx_api(mvm)) | ||
141 | return (void *)&cmd->v6.data; | ||
142 | |||
143 | return (void *)&cmd->v1.data; | ||
144 | } | ||
145 | |||
133 | static u8 iwl_mvm_scan_rx_ant(struct iwl_mvm *mvm) | 146 | static u8 iwl_mvm_scan_rx_ant(struct iwl_mvm *mvm) |
134 | { | 147 | { |
135 | if (mvm->scan_rx_ant != ANT_NONE) | 148 | if (mvm->scan_rx_ant != ANT_NONE) |
@@ -1075,25 +1088,57 @@ static void iwl_mvm_scan_umac_dwell(struct iwl_mvm *mvm, | |||
1075 | { | 1088 | { |
1076 | struct iwl_mvm_scan_timing_params *timing = &scan_timing[params->type]; | 1089 | struct iwl_mvm_scan_timing_params *timing = &scan_timing[params->type]; |
1077 | 1090 | ||
1091 | if (iwl_mvm_is_regular_scan(params)) | ||
1092 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); | ||
1093 | else | ||
1094 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_2); | ||
1095 | |||
1096 | if (iwl_mvm_is_adaptive_dwell_supported(mvm)) { | ||
1097 | if (params->measurement_dwell) { | ||
1098 | cmd->v7.active_dwell = params->measurement_dwell; | ||
1099 | cmd->v7.passive_dwell = params->measurement_dwell; | ||
1100 | } else { | ||
1101 | cmd->v7.active_dwell = IWL_SCAN_DWELL_ACTIVE; | ||
1102 | cmd->v7.passive_dwell = IWL_SCAN_DWELL_PASSIVE; | ||
1103 | } | ||
1104 | cmd->v7.fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED; | ||
1105 | |||
1106 | cmd->v7.scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); | ||
1107 | cmd->v7.max_out_time[SCAN_LB_LMAC_IDX] = | ||
1108 | cpu_to_le32(timing->max_out_time); | ||
1109 | cmd->v7.suspend_time[SCAN_LB_LMAC_IDX] = | ||
1110 | cpu_to_le32(timing->suspend_time); | ||
1111 | if (iwl_mvm_is_cdb_supported(mvm)) { | ||
1112 | cmd->v7.max_out_time[SCAN_HB_LMAC_IDX] = | ||
1113 | cpu_to_le32(timing->max_out_time); | ||
1114 | cmd->v7.suspend_time[SCAN_HB_LMAC_IDX] = | ||
1115 | cpu_to_le32(timing->suspend_time); | ||
1116 | } | ||
1117 | |||
1118 | return; | ||
1119 | } | ||
1120 | |||
1078 | if (params->measurement_dwell) { | 1121 | if (params->measurement_dwell) { |
1079 | cmd->active_dwell = params->measurement_dwell; | 1122 | cmd->v1.active_dwell = params->measurement_dwell; |
1080 | cmd->passive_dwell = params->measurement_dwell; | 1123 | cmd->v1.passive_dwell = params->measurement_dwell; |
1081 | cmd->extended_dwell = params->measurement_dwell; | 1124 | cmd->v1.extended_dwell = params->measurement_dwell; |
1082 | } else { | 1125 | } else { |
1083 | cmd->active_dwell = IWL_SCAN_DWELL_ACTIVE; | 1126 | cmd->v1.active_dwell = IWL_SCAN_DWELL_ACTIVE; |
1084 | cmd->passive_dwell = IWL_SCAN_DWELL_PASSIVE; | 1127 | cmd->v1.passive_dwell = IWL_SCAN_DWELL_PASSIVE; |
1085 | cmd->extended_dwell = IWL_SCAN_DWELL_EXTENDED; | 1128 | cmd->v1.extended_dwell = IWL_SCAN_DWELL_EXTENDED; |
1086 | } | 1129 | } |
1087 | cmd->fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED; | 1130 | cmd->v1.fragmented_dwell = IWL_SCAN_DWELL_FRAGMENTED; |
1088 | 1131 | ||
1089 | if (iwl_mvm_has_new_tx_api(mvm)) { | 1132 | if (iwl_mvm_has_new_tx_api(mvm)) { |
1090 | cmd->v6.scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); | 1133 | cmd->v6.scan_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); |
1091 | cmd->v6.max_out_time[0] = cpu_to_le32(timing->max_out_time); | 1134 | cmd->v6.max_out_time[SCAN_LB_LMAC_IDX] = |
1092 | cmd->v6.suspend_time[0] = cpu_to_le32(timing->suspend_time); | 1135 | cpu_to_le32(timing->max_out_time); |
1136 | cmd->v6.suspend_time[SCAN_LB_LMAC_IDX] = | ||
1137 | cpu_to_le32(timing->suspend_time); | ||
1093 | if (iwl_mvm_is_cdb_supported(mvm)) { | 1138 | if (iwl_mvm_is_cdb_supported(mvm)) { |
1094 | cmd->v6.max_out_time[1] = | 1139 | cmd->v6.max_out_time[SCAN_HB_LMAC_IDX] = |
1095 | cpu_to_le32(timing->max_out_time); | 1140 | cpu_to_le32(timing->max_out_time); |
1096 | cmd->v6.suspend_time[1] = | 1141 | cmd->v6.suspend_time[SCAN_HB_LMAC_IDX] = |
1097 | cpu_to_le32(timing->suspend_time); | 1142 | cpu_to_le32(timing->suspend_time); |
1098 | } | 1143 | } |
1099 | } else { | 1144 | } else { |
@@ -1102,11 +1147,6 @@ static void iwl_mvm_scan_umac_dwell(struct iwl_mvm *mvm, | |||
1102 | cmd->v1.scan_priority = | 1147 | cmd->v1.scan_priority = |
1103 | cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); | 1148 | cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); |
1104 | } | 1149 | } |
1105 | |||
1106 | if (iwl_mvm_is_regular_scan(params)) | ||
1107 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_6); | ||
1108 | else | ||
1109 | cmd->ooc_priority = cpu_to_le32(IWL_SCAN_PRIORITY_EXT_2); | ||
1110 | } | 1150 | } |
1111 | 1151 | ||
1112 | static void | 1152 | static void |
@@ -1178,8 +1218,7 @@ static int iwl_mvm_scan_umac(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
1178 | int type) | 1218 | int type) |
1179 | { | 1219 | { |
1180 | struct iwl_scan_req_umac *cmd = mvm->scan_cmd; | 1220 | struct iwl_scan_req_umac *cmd = mvm->scan_cmd; |
1181 | void *cmd_data = iwl_mvm_has_new_tx_api(mvm) ? | 1221 | void *cmd_data = iwl_mvm_get_scan_req_umac_data(mvm); |
1182 | (void *)&cmd->v6.data : (void *)&cmd->v1.data; | ||
1183 | struct iwl_scan_req_umac_tail *sec_part = cmd_data + | 1222 | struct iwl_scan_req_umac_tail *sec_part = cmd_data + |
1184 | sizeof(struct iwl_scan_channel_cfg_umac) * | 1223 | sizeof(struct iwl_scan_channel_cfg_umac) * |
1185 | mvm->fw->ucode_capa.n_scan_channels; | 1224 | mvm->fw->ucode_capa.n_scan_channels; |
@@ -1216,7 +1255,10 @@ static int iwl_mvm_scan_umac(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
1216 | IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE | | 1255 | IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE | |
1217 | IWL_SCAN_CHANNEL_FLAG_CACHE_ADD; | 1256 | IWL_SCAN_CHANNEL_FLAG_CACHE_ADD; |
1218 | 1257 | ||
1219 | if (iwl_mvm_has_new_tx_api(mvm)) { | 1258 | if (iwl_mvm_is_adaptive_dwell_supported(mvm)) { |
1259 | cmd->v7.channel_flags = channel_flags; | ||
1260 | cmd->v7.n_channels = params->n_channels; | ||
1261 | } else if (iwl_mvm_has_new_tx_api(mvm)) { | ||
1220 | cmd->v6.channel_flags = channel_flags; | 1262 | cmd->v6.channel_flags = channel_flags; |
1221 | cmd->v6.n_channels = params->n_channels; | 1263 | cmd->v6.n_channels = params->n_channels; |
1222 | } else { | 1264 | } else { |
@@ -1661,8 +1703,10 @@ int iwl_mvm_scan_size(struct iwl_mvm *mvm) | |||
1661 | { | 1703 | { |
1662 | int base_size = IWL_SCAN_REQ_UMAC_SIZE_V1; | 1704 | int base_size = IWL_SCAN_REQ_UMAC_SIZE_V1; |
1663 | 1705 | ||
1664 | if (iwl_mvm_has_new_tx_api(mvm)) | 1706 | if (iwl_mvm_is_adaptive_dwell_supported(mvm)) |
1665 | base_size = IWL_SCAN_REQ_UMAC_SIZE; | 1707 | base_size = IWL_SCAN_REQ_UMAC_SIZE_V7; |
1708 | else if (iwl_mvm_has_new_tx_api(mvm)) | ||
1709 | base_size = IWL_SCAN_REQ_UMAC_SIZE_V6; | ||
1666 | 1710 | ||
1667 | if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) | 1711 | if (fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_UMAC_SCAN)) |
1668 | return base_size + | 1712 | return base_size + |
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c index 4a21c12276d7..f21fe59faccf 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c | |||
@@ -535,47 +535,121 @@ static const struct pci_device_id iwl_hw_card_ids[] = { | |||
535 | {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)}, | 535 | {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)}, |
536 | {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)}, | 536 | {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)}, |
537 | {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9460_2ac_cfg)}, | 537 | {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9460_2ac_cfg)}, |
538 | {IWL_PCI_DEVICE(0x2526, 0x0264, iwl9461_2ac_cfg_soc)}, | ||
538 | {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9460_2ac_cfg)}, | 539 | {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9460_2ac_cfg)}, |
539 | {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)}, | 540 | {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)}, |
541 | {IWL_PCI_DEVICE(0x2526, 0x1010, iwl9260_2ac_cfg)}, | ||
540 | {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)}, | 542 | {IWL_PCI_DEVICE(0x2526, 0x1030, iwl9560_2ac_cfg)}, |
543 | {IWL_PCI_DEVICE(0x2526, 0x1210, iwl9260_2ac_cfg)}, | ||
541 | {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)}, | 544 | {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)}, |
542 | {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg)}, | 545 | {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg_soc)}, |
543 | {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)}, | 546 | {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)}, |
544 | {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_cfg)}, | 547 | {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_cfg)}, |
545 | {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_cfg)}, | 548 | {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_cfg)}, |
546 | {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)}, | 549 | {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)}, |
547 | {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)}, | 550 | {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)}, |
551 | {IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)}, | ||
548 | {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)}, | 552 | {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)}, |
549 | {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)}, | 553 | {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)}, |
550 | {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)}, | 554 | {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)}, |
551 | {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg)}, | 555 | {IWL_PCI_DEVICE(0x271B, 0x0214, iwl9260_2ac_cfg)}, |
552 | {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)}, | 556 | {IWL_PCI_DEVICE(0x2720, 0x0034, iwl9560_2ac_cfg)}, |
553 | {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg)}, | 557 | {IWL_PCI_DEVICE(0x2720, 0x0038, iwl9560_2ac_cfg)}, |
554 | {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg)}, | 558 | {IWL_PCI_DEVICE(0x2720, 0x003C, iwl9560_2ac_cfg)}, |
555 | {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg)}, | 559 | {IWL_PCI_DEVICE(0x2720, 0x0060, iwl9461_2ac_cfg_soc)}, |
556 | {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)}, | 560 | {IWL_PCI_DEVICE(0x2720, 0x0064, iwl9461_2ac_cfg_soc)}, |
557 | {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg)}, | 561 | {IWL_PCI_DEVICE(0x2720, 0x00A0, iwl9462_2ac_cfg_soc)}, |
558 | {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg)}, | 562 | {IWL_PCI_DEVICE(0x2720, 0x00A4, iwl9462_2ac_cfg_soc)}, |
559 | {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)}, | 563 | {IWL_PCI_DEVICE(0x2720, 0x0230, iwl9560_2ac_cfg)}, |
560 | {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg)}, | 564 | {IWL_PCI_DEVICE(0x2720, 0x0234, iwl9560_2ac_cfg)}, |
561 | {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg)}, | 565 | {IWL_PCI_DEVICE(0x2720, 0x0238, iwl9560_2ac_cfg)}, |
562 | {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg)}, | 566 | {IWL_PCI_DEVICE(0x2720, 0x023C, iwl9560_2ac_cfg)}, |
563 | {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)}, | 567 | {IWL_PCI_DEVICE(0x2720, 0x0260, iwl9461_2ac_cfg_soc)}, |
564 | {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg)}, | 568 | {IWL_PCI_DEVICE(0x2720, 0x0264, iwl9461_2ac_cfg_soc)}, |
565 | {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg)}, | 569 | {IWL_PCI_DEVICE(0x2720, 0x02A0, iwl9462_2ac_cfg_soc)}, |
566 | {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg)}, | 570 | {IWL_PCI_DEVICE(0x2720, 0x02A4, iwl9462_2ac_cfg_soc)}, |
567 | {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg)}, | 571 | {IWL_PCI_DEVICE(0x2720, 0x4030, iwl9560_2ac_cfg)}, |
568 | {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg)}, | 572 | {IWL_PCI_DEVICE(0x2720, 0x40A4, iwl9462_2ac_cfg_soc)}, |
569 | {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg)}, | 573 | {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg_soc)}, |
570 | {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg)}, | 574 | {IWL_PCI_DEVICE(0x30DC, 0x0064, iwl9461_2ac_cfg_soc)}, |
571 | {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg)}, | 575 | {IWL_PCI_DEVICE(0x30DC, 0x00A0, iwl9462_2ac_cfg_soc)}, |
572 | {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg)}, | 576 | {IWL_PCI_DEVICE(0x30DC, 0x00A4, iwl9462_2ac_cfg_soc)}, |
573 | {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)}, | 577 | {IWL_PCI_DEVICE(0x30DC, 0x0260, iwl9461_2ac_cfg_soc)}, |
574 | {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg)}, | 578 | {IWL_PCI_DEVICE(0x30DC, 0x0264, iwl9461_2ac_cfg_soc)}, |
575 | {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg)}, | 579 | {IWL_PCI_DEVICE(0x30DC, 0x02A0, iwl9462_2ac_cfg_soc)}, |
576 | {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg)}, | 580 | {IWL_PCI_DEVICE(0x30DC, 0x02A4, iwl9462_2ac_cfg_soc)}, |
577 | {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)}, | 581 | {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg_soc)}, |
578 | {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg)}, | 582 | {IWL_PCI_DEVICE(0x31DC, 0x0034, iwl9560_2ac_cfg_soc)}, |
583 | {IWL_PCI_DEVICE(0x31DC, 0x0038, iwl9560_2ac_cfg_soc)}, | ||
584 | {IWL_PCI_DEVICE(0x31DC, 0x003C, iwl9560_2ac_cfg_soc)}, | ||
585 | {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg_soc)}, | ||
586 | {IWL_PCI_DEVICE(0x31DC, 0x0064, iwl9461_2ac_cfg_soc)}, | ||
587 | {IWL_PCI_DEVICE(0x31DC, 0x00A0, iwl9462_2ac_cfg_soc)}, | ||
588 | {IWL_PCI_DEVICE(0x31DC, 0x00A4, iwl9462_2ac_cfg_soc)}, | ||
589 | {IWL_PCI_DEVICE(0x31DC, 0x0230, iwl9560_2ac_cfg_soc)}, | ||
590 | {IWL_PCI_DEVICE(0x31DC, 0x0234, iwl9560_2ac_cfg_soc)}, | ||
591 | {IWL_PCI_DEVICE(0x31DC, 0x0238, iwl9560_2ac_cfg_soc)}, | ||
592 | {IWL_PCI_DEVICE(0x31DC, 0x023C, iwl9560_2ac_cfg_soc)}, | ||
593 | {IWL_PCI_DEVICE(0x31DC, 0x0260, iwl9461_2ac_cfg_soc)}, | ||
594 | {IWL_PCI_DEVICE(0x31DC, 0x0264, iwl9461_2ac_cfg_soc)}, | ||
595 | {IWL_PCI_DEVICE(0x31DC, 0x02A0, iwl9462_2ac_cfg_soc)}, | ||
596 | {IWL_PCI_DEVICE(0x31DC, 0x02A4, iwl9462_2ac_cfg_soc)}, | ||
597 | {IWL_PCI_DEVICE(0x31DC, 0x4030, iwl9560_2ac_cfg_soc)}, | ||
598 | {IWL_PCI_DEVICE(0x31DC, 0x4034, iwl9560_2ac_cfg_soc)}, | ||
599 | {IWL_PCI_DEVICE(0x31DC, 0x40A4, iwl9462_2ac_cfg_soc)}, | ||
600 | {IWL_PCI_DEVICE(0x34F0, 0x0030, iwl9560_2ac_cfg_soc)}, | ||
601 | {IWL_PCI_DEVICE(0x34F0, 0x0034, iwl9560_2ac_cfg_soc)}, | ||
602 | {IWL_PCI_DEVICE(0x34F0, 0x02A4, iwl9462_2ac_cfg_soc)}, | ||
603 | {IWL_PCI_DEVICE(0x9DF0, 0x0000, iwl9460_2ac_cfg_soc)}, | ||
604 | {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg_soc)}, | ||
605 | {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg_soc)}, | ||
606 | {IWL_PCI_DEVICE(0x9DF0, 0x0034, iwl9560_2ac_cfg_soc)}, | ||
607 | {IWL_PCI_DEVICE(0x9DF0, 0x0038, iwl9560_2ac_cfg_soc)}, | ||
608 | {IWL_PCI_DEVICE(0x9DF0, 0x003C, iwl9560_2ac_cfg_soc)}, | ||
609 | {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg_soc)}, | ||
610 | {IWL_PCI_DEVICE(0x9DF0, 0x0064, iwl9461_2ac_cfg_soc)}, | ||
611 | {IWL_PCI_DEVICE(0x9DF0, 0x00A0, iwl9462_2ac_cfg_soc)}, | ||
612 | {IWL_PCI_DEVICE(0x9DF0, 0x00A4, iwl9462_2ac_cfg_soc)}, | ||
613 | {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg_soc)}, | ||
614 | {IWL_PCI_DEVICE(0x9DF0, 0x0230, iwl9560_2ac_cfg_soc)}, | ||
615 | {IWL_PCI_DEVICE(0x9DF0, 0x0234, iwl9560_2ac_cfg_soc)}, | ||
616 | {IWL_PCI_DEVICE(0x9DF0, 0x0238, iwl9560_2ac_cfg_soc)}, | ||
617 | {IWL_PCI_DEVICE(0x9DF0, 0x023C, iwl9560_2ac_cfg_soc)}, | ||
618 | {IWL_PCI_DEVICE(0x9DF0, 0x0260, iwl9461_2ac_cfg_soc)}, | ||
619 | {IWL_PCI_DEVICE(0x9DF0, 0x0264, iwl9461_2ac_cfg_soc)}, | ||
620 | {IWL_PCI_DEVICE(0x9DF0, 0x02A0, iwl9462_2ac_cfg_soc)}, | ||
621 | {IWL_PCI_DEVICE(0x9DF0, 0x02A4, iwl9462_2ac_cfg_soc)}, | ||
622 | {IWL_PCI_DEVICE(0x9DF0, 0x0310, iwl9460_2ac_cfg_soc)}, | ||
623 | {IWL_PCI_DEVICE(0x9DF0, 0x0410, iwl9460_2ac_cfg_soc)}, | ||
624 | {IWL_PCI_DEVICE(0x9DF0, 0x0510, iwl9460_2ac_cfg_soc)}, | ||
625 | {IWL_PCI_DEVICE(0x9DF0, 0x0610, iwl9460_2ac_cfg_soc)}, | ||
626 | {IWL_PCI_DEVICE(0x9DF0, 0x0710, iwl9460_2ac_cfg_soc)}, | ||
627 | {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg_soc)}, | ||
628 | {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg_soc)}, | ||
629 | {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg_soc)}, | ||
630 | {IWL_PCI_DEVICE(0x9DF0, 0x4030, iwl9560_2ac_cfg_soc)}, | ||
631 | {IWL_PCI_DEVICE(0x9DF0, 0x4034, iwl9560_2ac_cfg_soc)}, | ||
632 | {IWL_PCI_DEVICE(0x9DF0, 0x40A4, iwl9462_2ac_cfg_soc)}, | ||
633 | {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg_soc)}, | ||
634 | {IWL_PCI_DEVICE(0xA370, 0x0034, iwl9560_2ac_cfg_soc)}, | ||
635 | {IWL_PCI_DEVICE(0xA370, 0x0038, iwl9560_2ac_cfg_soc)}, | ||
636 | {IWL_PCI_DEVICE(0xA370, 0x003C, iwl9560_2ac_cfg_soc)}, | ||
637 | {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg_soc)}, | ||
638 | {IWL_PCI_DEVICE(0xA370, 0x0064, iwl9461_2ac_cfg_soc)}, | ||
639 | {IWL_PCI_DEVICE(0xA370, 0x00A0, iwl9462_2ac_cfg_soc)}, | ||
640 | {IWL_PCI_DEVICE(0xA370, 0x00A4, iwl9462_2ac_cfg_soc)}, | ||
641 | {IWL_PCI_DEVICE(0xA370, 0x0230, iwl9560_2ac_cfg_soc)}, | ||
642 | {IWL_PCI_DEVICE(0xA370, 0x0234, iwl9560_2ac_cfg_soc)}, | ||
643 | {IWL_PCI_DEVICE(0xA370, 0x0238, iwl9560_2ac_cfg_soc)}, | ||
644 | {IWL_PCI_DEVICE(0xA370, 0x023C, iwl9560_2ac_cfg_soc)}, | ||
645 | {IWL_PCI_DEVICE(0xA370, 0x0260, iwl9461_2ac_cfg_soc)}, | ||
646 | {IWL_PCI_DEVICE(0xA370, 0x0264, iwl9461_2ac_cfg_soc)}, | ||
647 | {IWL_PCI_DEVICE(0xA370, 0x02A0, iwl9462_2ac_cfg_soc)}, | ||
648 | {IWL_PCI_DEVICE(0xA370, 0x02A4, iwl9462_2ac_cfg_soc)}, | ||
649 | {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg_soc)}, | ||
650 | {IWL_PCI_DEVICE(0xA370, 0x4030, iwl9560_2ac_cfg_soc)}, | ||
651 | {IWL_PCI_DEVICE(0xA370, 0x4034, iwl9560_2ac_cfg_soc)}, | ||
652 | {IWL_PCI_DEVICE(0xA370, 0x40A4, iwl9462_2ac_cfg_soc)}, | ||
579 | 653 | ||
580 | /* a000 Series */ | 654 | /* a000 Series */ |
581 | {IWL_PCI_DEVICE(0x2720, 0x0A10, iwla000_2ac_cfg_hr_cdb)}, | 655 | {IWL_PCI_DEVICE(0x2720, 0x0A10, iwla000_2ac_cfg_hr_cdb)}, |