Skip to content

Commit 5988b8e

Browse files
author
Kalle Valo
committed
Merge tag 'iwlwifi-next-for-kalle-2020-03-27' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
Second set of iwlwifi patches intended for v5.7 * Refactoring of the device selection algorithms continues; * Improvement in the initialization fo SoC-based devices; * Support for FW scan API; * Some additions to our FW debuggging capabilities; * More refactoring of the device selection algorithms; * Support new FW API version; * Support for EDCA measurements; * New scan API features; * Enable new debugging code; * Some other small fixes and clean-ups;
2 parents 3af4da1 + 84acc85 commit 5988b8e

30 files changed

+943
-720
lines changed

drivers/net/wireless/intel/iwlwifi/cfg/22000.c

Lines changed: 74 additions & 226 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
#include "iwl-prph.h"
5858

5959
/* Highest firmware API version supported */
60-
#define IWL_22000_UCODE_API_MAX 52
60+
#define IWL_22000_UCODE_API_MAX 53
6161

6262
/* Lowest firmware API version supported */
6363
#define IWL_22000_UCODE_API_MIN 39
@@ -76,10 +76,8 @@
7676
#define IWL_22000_JF_FW_PRE "iwlwifi-Qu-a0-jf-b0-"
7777
#define IWL_22000_HR_FW_PRE "iwlwifi-Qu-a0-hr-a0-"
7878
#define IWL_22000_HR_CDB_FW_PRE "iwlwifi-QuIcp-z0-hrcdb-a0-"
79-
#define IWL_22000_HR_A_F0_FW_PRE "iwlwifi-QuQnj-f0-hr-a0-"
8079
#define IWL_22000_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0-"
8180
#define IWL_22000_HR_B_FW_PRE "iwlwifi-QuQnj-b0-hr-b0-"
82-
#define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-"
8381
#define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0-"
8482
#define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-"
8583
#define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0-"
@@ -98,14 +96,10 @@
9896
IWL_22000_HR_FW_PRE __stringify(api) ".ucode"
9997
#define IWL_22000_JF_MODULE_FIRMWARE(api) \
10098
IWL_22000_JF_FW_PRE __stringify(api) ".ucode"
101-
#define IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(api) \
102-
IWL_22000_HR_A_F0_FW_PRE __stringify(api) ".ucode"
10399
#define IWL_22000_QU_B_HR_B_MODULE_FIRMWARE(api) \
104100
IWL_22000_QU_B_HR_B_FW_PRE __stringify(api) ".ucode"
105101
#define IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(api) \
106102
IWL_22000_HR_B_FW_PRE __stringify(api) ".ucode"
107-
#define IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(api) \
108-
IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode"
109103
#define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \
110104
IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode"
111105
#define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \
@@ -235,6 +229,38 @@ static const struct iwl_ht_params iwl_22000_ht_params = {
235229
}, \
236230
}
237231

232+
const struct iwl_cfg_trans_params iwl_qu_trans_cfg = {
233+
.mq_rx_supported = true,
234+
.use_tfh = true,
235+
.rf_id = true,
236+
.gen2 = true,
237+
.device_family = IWL_DEVICE_FAMILY_22000,
238+
.base_params = &iwl_22000_base_params,
239+
.integrated = true,
240+
.xtal_latency = 5000,
241+
};
242+
243+
const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg = {
244+
.mq_rx_supported = true,
245+
.use_tfh = true,
246+
.rf_id = true,
247+
.gen2 = true,
248+
.device_family = IWL_DEVICE_FAMILY_22000,
249+
.base_params = &iwl_22000_base_params,
250+
.integrated = true,
251+
.xtal_latency = 12000,
252+
.low_latency_xtal = true,
253+
};
254+
255+
const struct iwl_cfg_trans_params iwl_qnj_trans_cfg = {
256+
.mq_rx_supported = true,
257+
.use_tfh = true,
258+
.rf_id = true,
259+
.gen2 = true,
260+
.device_family = IWL_DEVICE_FAMILY_22000,
261+
.base_params = &iwl_22000_base_params,
262+
};
263+
238264
/*
239265
* If the device doesn't support HE, no need to have that many buffers.
240266
* 22000 devices can split multiple frames into a single RB, so fewer are
@@ -246,6 +272,47 @@ static const struct iwl_ht_params iwl_22000_ht_params = {
246272
#define IWL_NUM_RBDS_22000_HE 2048
247273
#define IWL_NUM_RBDS_AX210_HE 4096
248274

275+
/*
276+
* All JF radio modules are part of the 9000 series, but the MAC part
277+
* looks more like 22000. That's why this device is here, but called
278+
* 9560 nevertheless.
279+
*/
280+
const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg = {
281+
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
282+
IWL_DEVICE_22500,
283+
.num_rbds = IWL_NUM_RBDS_NON_HE,
284+
};
285+
286+
const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg = {
287+
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
288+
IWL_DEVICE_22500,
289+
.num_rbds = IWL_NUM_RBDS_NON_HE,
290+
};
291+
292+
const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = {
293+
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
294+
IWL_DEVICE_22500,
295+
/*
296+
* This device doesn't support receiving BlockAck with a large bitmap
297+
* so we need to restrict the size of transmitted aggregation to the
298+
* HT size; mac80211 would otherwise pick the HE max (256) by default.
299+
*/
300+
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
301+
.num_rbds = IWL_NUM_RBDS_NON_HE,
302+
};
303+
304+
const struct iwl_cfg iwl9560_qnj_b0_jf_b0_cfg = {
305+
.fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE,
306+
IWL_DEVICE_22500,
307+
/*
308+
* This device doesn't support receiving BlockAck with a large bitmap
309+
* so we need to restrict the size of transmitted aggregation to the
310+
* HT size; mac80211 would otherwise pick the HE max (256) by default.
311+
*/
312+
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
313+
.num_rbds = IWL_NUM_RBDS_NON_HE,
314+
};
315+
249316
const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = {
250317
.device_family = IWL_DEVICE_FAMILY_22000,
251318
.base_params = &iwl_22000_base_params,
@@ -380,184 +447,6 @@ const struct iwl_cfg iwl_ax200_cfg_cc = {
380447
.num_rbds = IWL_NUM_RBDS_22000_HE,
381448
};
382449

383-
/*
384-
* All JF radio modules are part of the 9000 series, but the MAC part
385-
* looks more like 22000. That's why this device is here, but called
386-
* 9560 nevertheless.
387-
*/
388-
const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0 = {
389-
.name = "Intel(R) Wireless-AC 9461",
390-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
391-
IWL_DEVICE_22500,
392-
.num_rbds = IWL_NUM_RBDS_NON_HE,
393-
};
394-
395-
const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0 = {
396-
.name = "Intel(R) Wireless-AC 9462",
397-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
398-
IWL_DEVICE_22500,
399-
.num_rbds = IWL_NUM_RBDS_NON_HE,
400-
};
401-
402-
const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0 = {
403-
.name = "Intel(R) Wireless-AC 9560",
404-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
405-
IWL_DEVICE_22500,
406-
.num_rbds = IWL_NUM_RBDS_NON_HE,
407-
};
408-
409-
const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0 = {
410-
.name = "Intel(R) Wireless-AC 9560 160MHz",
411-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
412-
IWL_DEVICE_22500,
413-
.num_rbds = IWL_NUM_RBDS_NON_HE,
414-
};
415-
416-
const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0 = {
417-
.name = "Intel(R) Wireless-AC 9461",
418-
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
419-
IWL_DEVICE_22500,
420-
.num_rbds = IWL_NUM_RBDS_NON_HE,
421-
};
422-
423-
const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0 = {
424-
.name = "Intel(R) Wireless-AC 9462",
425-
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
426-
IWL_DEVICE_22500,
427-
.num_rbds = IWL_NUM_RBDS_NON_HE,
428-
};
429-
430-
const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0 = {
431-
.name = "Intel(R) Wireless-AC 9560",
432-
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
433-
IWL_DEVICE_22500,
434-
.num_rbds = IWL_NUM_RBDS_NON_HE,
435-
};
436-
437-
const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0 = {
438-
.name = "Intel(R) Wireless-AC 9560 160MHz",
439-
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
440-
IWL_DEVICE_22500,
441-
.num_rbds = IWL_NUM_RBDS_NON_HE,
442-
};
443-
444-
const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = {
445-
.name = "Intel(R) Wireless-AC 9560 160MHz",
446-
.fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE,
447-
IWL_DEVICE_22500,
448-
/*
449-
* This device doesn't support receiving BlockAck with a large bitmap
450-
* so we need to restrict the size of transmitted aggregation to the
451-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
452-
*/
453-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
454-
.num_rbds = IWL_NUM_RBDS_NON_HE,
455-
};
456-
457-
const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc = {
458-
.name = "Intel(R) Wireless-AC 9560 160MHz",
459-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
460-
IWL_DEVICE_22500,
461-
/*
462-
* This device doesn't support receiving BlockAck with a large bitmap
463-
* so we need to restrict the size of transmitted aggregation to the
464-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
465-
*/
466-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
467-
.integrated = true,
468-
.soc_latency = 5000,
469-
.num_rbds = IWL_NUM_RBDS_NON_HE,
470-
};
471-
472-
const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc = {
473-
.name = "Intel(R) Wireless-AC 9560 160MHz",
474-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
475-
IWL_DEVICE_22500,
476-
/*
477-
* This device doesn't support receiving BlockAck with a large bitmap
478-
* so we need to restrict the size of transmitted aggregation to the
479-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
480-
*/
481-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
482-
.integrated = true,
483-
.soc_latency = 5000,
484-
.num_rbds = IWL_NUM_RBDS_NON_HE,
485-
};
486-
487-
const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc = {
488-
.name = "Intel(R) Dual Band Wireless AC 9461",
489-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
490-
IWL_DEVICE_22500,
491-
/*
492-
* This device doesn't support receiving BlockAck with a large bitmap
493-
* so we need to restrict the size of transmitted aggregation to the
494-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
495-
*/
496-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
497-
.integrated = true,
498-
.soc_latency = 5000,
499-
.num_rbds = IWL_NUM_RBDS_NON_HE,
500-
};
501-
502-
const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc = {
503-
.name = "Intel(R) Dual Band Wireless AC 9462",
504-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
505-
IWL_DEVICE_22500,
506-
/*
507-
* This device doesn't support receiving BlockAck with a large bitmap
508-
* so we need to restrict the size of transmitted aggregation to the
509-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
510-
*/
511-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
512-
.integrated = true,
513-
.soc_latency = 5000,
514-
.num_rbds = IWL_NUM_RBDS_NON_HE,
515-
};
516-
517-
const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc = {
518-
.name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
519-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
520-
IWL_DEVICE_22500,
521-
/*
522-
* This device doesn't support receiving BlockAck with a large bitmap
523-
* so we need to restrict the size of transmitted aggregation to the
524-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
525-
*/
526-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
527-
.integrated = true,
528-
.soc_latency = 5000,
529-
.num_rbds = IWL_NUM_RBDS_NON_HE,
530-
};
531-
532-
const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc = {
533-
.name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
534-
.fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
535-
IWL_DEVICE_22500,
536-
/*
537-
* This device doesn't support receiving BlockAck with a large bitmap
538-
* so we need to restrict the size of transmitted aggregation to the
539-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
540-
*/
541-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
542-
.integrated = true,
543-
.soc_latency = 5000,
544-
.num_rbds = IWL_NUM_RBDS_NON_HE,
545-
};
546-
547-
const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0 = {
548-
.name = "Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)",
549-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
550-
IWL_DEVICE_22500,
551-
.num_rbds = IWL_NUM_RBDS_NON_HE,
552-
};
553-
554-
const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0 = {
555-
.name = "Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)",
556-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
557-
IWL_DEVICE_22500,
558-
.num_rbds = IWL_NUM_RBDS_NON_HE,
559-
};
560-
561450
const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = {
562451
.name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)",
563452
.fw_name_pre = IWL_22000_QU_B_HR_B_FW_PRE,
@@ -610,32 +499,6 @@ const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = {
610499
.num_rbds = IWL_NUM_RBDS_22000_HE,
611500
};
612501

613-
const struct iwl_cfg iwl22000_2ax_cfg_jf = {
614-
.name = "Intel(R) Dual Band Wireless AX 22000",
615-
.fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
616-
IWL_DEVICE_22500,
617-
/*
618-
* This device doesn't support receiving BlockAck with a large bitmap
619-
* so we need to restrict the size of transmitted aggregation to the
620-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
621-
*/
622-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
623-
.num_rbds = IWL_NUM_RBDS_22000_HE,
624-
};
625-
626-
const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0_f0 = {
627-
.name = "Intel(R) Dual Band Wireless AX 22000",
628-
.fw_name_pre = IWL_22000_HR_A_F0_FW_PRE,
629-
IWL_DEVICE_22500,
630-
/*
631-
* This device doesn't support receiving BlockAck with a large bitmap
632-
* so we need to restrict the size of transmitted aggregation to the
633-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
634-
*/
635-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
636-
.num_rbds = IWL_NUM_RBDS_22000_HE,
637-
};
638-
639502
const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0 = {
640503
.name = "Intel(R) Dual Band Wireless AX 22000",
641504
.fw_name_pre = IWL_22000_HR_B_FW_PRE,
@@ -649,19 +512,6 @@ const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0 = {
649512
.num_rbds = IWL_NUM_RBDS_22000_HE,
650513
};
651514

652-
const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0 = {
653-
.name = "Intel(R) Dual Band Wireless AX 22000",
654-
.fw_name_pre = IWL_22000_HR_A0_FW_PRE,
655-
IWL_DEVICE_22500,
656-
/*
657-
* This device doesn't support receiving BlockAck with a large bitmap
658-
* so we need to restrict the size of transmitted aggregation to the
659-
* HT size; mac80211 would otherwise pick the HE max (256) by default.
660-
*/
661-
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
662-
.num_rbds = IWL_NUM_RBDS_22000_HE,
663-
};
664-
665515
const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0 = {
666516
.name = "Intel(R) Wireless-AC 9560 160MHz",
667517
.fw_name_pre = IWL_22000_SO_A_JF_B_FW_PRE,
@@ -710,9 +560,7 @@ const struct iwl_cfg iwlax411_2ax_cfg_sosnj_gf4_a0 = {
710560

711561
MODULE_FIRMWARE(IWL_22000_HR_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
712562
MODULE_FIRMWARE(IWL_22000_JF_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
713-
MODULE_FIRMWARE(IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
714563
MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
715-
MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
716564
MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
717565
MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
718566
MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));

0 commit comments

Comments
 (0)