18e99ea8dSJohannes Berg // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 28e99ea8dSJohannes Berg /* 38e99ea8dSJohannes Berg * Copyright (C) 2015-2017 Intel Deutschland GmbH 4dd5ff2aaSGregory Greenman * Copyright (C) 2018-2023 Intel Corporation 58e99ea8dSJohannes Berg */ 62f7a3863SLuca Coelho #include <linux/module.h> 72f7a3863SLuca Coelho #include <linux/stringify.h> 82f7a3863SLuca Coelho #include "iwl-config.h" 9593fae3eSShahar S Matityahu #include "iwl-prph.h" 10d5399f11SMordechay Goodstein #include "fw/api/txq.h" 112f7a3863SLuca Coelho 122f7a3863SLuca Coelho /* Highest firmware API version supported */ 1319898ce9SJohannes Berg #define IWL_22000_UCODE_API_MAX 77 142f7a3863SLuca Coelho 152f7a3863SLuca Coelho /* Lowest firmware API version supported */ 16c648e926SJohannes Berg #define IWL_22000_UCODE_API_MIN 50 172f7a3863SLuca Coelho 182f7a3863SLuca Coelho /* NVM versions */ 192f7a3863SLuca Coelho #define IWL_22000_NVM_VERSION 0x0a1d 202f7a3863SLuca Coelho 212f7a3863SLuca Coelho /* Memory offsets and lengths */ 222f7a3863SLuca Coelho #define IWL_22000_DCCM_OFFSET 0x800000 /* LMAC1 */ 232f7a3863SLuca Coelho #define IWL_22000_DCCM_LEN 0x10000 /* LMAC1 */ 242f7a3863SLuca Coelho #define IWL_22000_DCCM2_OFFSET 0x880000 252f7a3863SLuca Coelho #define IWL_22000_DCCM2_LEN 0x8000 262f7a3863SLuca Coelho #define IWL_22000_SMEM_OFFSET 0x400000 272f7a3863SLuca Coelho #define IWL_22000_SMEM_LEN 0xD0000 282f7a3863SLuca Coelho 29*31aeae24SJohannes Berg #define IWL_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0" 30*31aeae24SJohannes Berg #define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0" 31*31aeae24SJohannes Berg #define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0" 32*31aeae24SJohannes Berg #define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0" 33*31aeae24SJohannes Berg #define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0" 34*31aeae24SJohannes Berg #define IWL_QUZ_A_JF_B_FW_PRE "iwlwifi-QuZ-a0-jf-b0" 35*31aeae24SJohannes Berg #define IWL_CC_A_FW_PRE "iwlwifi-cc-a0" 362f7a3863SLuca Coelho 37e34aa5abSLuca Coelho #define IWL_QU_B_HR_B_MODULE_FIRMWARE(api) \ 38*31aeae24SJohannes Berg IWL_QU_B_HR_B_FW_PRE "-" __stringify(api) ".ucode" 39debec2f2SLuca Coelho #define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \ 40*31aeae24SJohannes Berg IWL_QUZ_A_HR_B_FW_PRE "-" __stringify(api) ".ucode" 41658521fcSIhab Zhaika #define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \ 42*31aeae24SJohannes Berg IWL_QUZ_A_JF_B_FW_PRE "-" __stringify(api) ".ucode" 43a7d544d6SLuca Coelho #define IWL_QU_C_HR_B_MODULE_FIRMWARE(api) \ 44*31aeae24SJohannes Berg IWL_QU_C_HR_B_FW_PRE "-" __stringify(api) ".ucode" 4581edb6adSLuca Coelho #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \ 46*31aeae24SJohannes Berg IWL_QU_B_JF_B_FW_PRE "-" __stringify(api) ".ucode" 478093bb6dSLuca Coelho #define IWL_CC_A_MODULE_FIRMWARE(api) \ 48*31aeae24SJohannes Berg IWL_CC_A_FW_PRE "-" __stringify(api) ".ucode" 492f7a3863SLuca Coelho 502f7a3863SLuca Coelho static const struct iwl_base_params iwl_22000_base_params = { 513e2b49d6SLuca Coelho .eeprom_size = OTP_LOW_IMAGE_SIZE_32K, 522f7a3863SLuca Coelho .num_of_queues = 512, 537b3e42eaSGolan Ben Ami .max_tfd_queue_size = 256, 547b3e42eaSGolan Ben Ami .shadow_ram_support = true, 557b3e42eaSGolan Ben Ami .led_compensation = 57, 567b3e42eaSGolan Ben Ami .wd_timeout = IWL_LONG_WD_TIMEOUT, 577b3e42eaSGolan Ben Ami .max_event_log_size = 512, 587b3e42eaSGolan Ben Ami .shadow_reg_enable = true, 597b3e42eaSGolan Ben Ami .pcie_l1_allowed = true, 607b3e42eaSGolan Ben Ami }; 617b3e42eaSGolan Ben Ami 6219898ce9SJohannes Berg const struct iwl_ht_params iwl_22000_ht_params = { 632f7a3863SLuca Coelho .stbc = true, 642f7a3863SLuca Coelho .ldpc = true, 65eae94cf8SLuca Coelho .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ) | 66eae94cf8SLuca Coelho BIT(NL80211_BAND_6GHZ), 672f7a3863SLuca Coelho }; 682f7a3863SLuca Coelho 695f01df3fSGolan Ben Ami #define IWL_DEVICE_22000_COMMON \ 702f7a3863SLuca Coelho .ucode_api_min = IWL_22000_UCODE_API_MIN, \ 712f7a3863SLuca Coelho .led_mode = IWL_LED_RF_STATE, \ 724aeaccd6SLuca Coelho .nvm_hw_section_num = 10, \ 73a4028772SErel Geron .non_shared_ant = ANT_B, \ 742f7a3863SLuca Coelho .dccm_offset = IWL_22000_DCCM_OFFSET, \ 752f7a3863SLuca Coelho .dccm_len = IWL_22000_DCCM_LEN, \ 762f7a3863SLuca Coelho .dccm2_offset = IWL_22000_DCCM2_OFFSET, \ 772f7a3863SLuca Coelho .dccm2_len = IWL_22000_DCCM2_LEN, \ 782f7a3863SLuca Coelho .smem_offset = IWL_22000_SMEM_OFFSET, \ 792f7a3863SLuca Coelho .smem_len = IWL_22000_SMEM_LEN, \ 802f7a3863SLuca Coelho .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM, \ 812f7a3863SLuca Coelho .apmg_not_supported = true, \ 8279b6c8feSLuca Coelho .trans.mq_rx_supported = true, \ 832f7a3863SLuca Coelho .vht_mu_mimo_supported = true, \ 847e6dffdaSJohannes Berg .mac_addr_from_csr = 0x380, \ 855f01df3fSGolan Ben Ami .ht_params = &iwl_22000_ht_params, \ 865f01df3fSGolan Ben Ami .nvm_ver = IWL_22000_NVM_VERSION, \ 8779b6c8feSLuca Coelho .trans.rf_id = true, \ 8879b6c8feSLuca Coelho .trans.gen2 = true, \ 892f7a3863SLuca Coelho .nvm_type = IWL_NVM_EXT, \ 902f7a3863SLuca Coelho .dbgc_supported = true, \ 912d8c2615SShahar S Matityahu .min_umac_error_event_table = 0x400000, \ 922d8c2615SShahar S Matityahu .d3_debug_data_base_addr = 0x401000, \ 934c704534SShahar S Matityahu .d3_debug_data_length = 60 * 1024, \ 94593fae3eSShahar S Matityahu .mon_smem_regs = { \ 95593fae3eSShahar S Matityahu .write_ptr = { \ 96593fae3eSShahar S Matityahu .addr = LDBG_M2S_BUF_WPTR, \ 97593fae3eSShahar S Matityahu .mask = LDBG_M2S_BUF_WPTR_VAL_MSK, \ 98593fae3eSShahar S Matityahu }, \ 99593fae3eSShahar S Matityahu .cycle_cnt = { \ 100593fae3eSShahar S Matityahu .addr = LDBG_M2S_BUF_WRAP_CNT, \ 101593fae3eSShahar S Matityahu .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK, \ 102593fae3eSShahar S Matityahu }, \ 103593fae3eSShahar S Matityahu } 1042f7a3863SLuca Coelho 1055f01df3fSGolan Ben Ami #define IWL_DEVICE_22500 \ 1065f01df3fSGolan Ben Ami IWL_DEVICE_22000_COMMON, \ 10719898ce9SJohannes Berg .ucode_api_max = IWL_22000_UCODE_API_MAX, \ 10879b6c8feSLuca Coelho .trans.device_family = IWL_DEVICE_FAMILY_22000, \ 10979b6c8feSLuca Coelho .trans.base_params = &iwl_22000_base_params, \ 110593fae3eSShahar S Matityahu .gp2_reg_addr = 0xa02c68, \ 111593fae3eSShahar S Matityahu .mon_dram_regs = { \ 112593fae3eSShahar S Matityahu .write_ptr = { \ 113593fae3eSShahar S Matityahu .addr = MON_BUFF_WRPTR_VER2, \ 114593fae3eSShahar S Matityahu .mask = 0xffffffff, \ 115593fae3eSShahar S Matityahu }, \ 116593fae3eSShahar S Matityahu .cycle_cnt = { \ 117593fae3eSShahar S Matityahu .addr = MON_BUFF_CYCLE_CNT_VER2, \ 118593fae3eSShahar S Matityahu .mask = 0xffffffff, \ 119593fae3eSShahar S Matityahu }, \ 120593fae3eSShahar S Matityahu } 1215f01df3fSGolan Ben Ami 12232ed101aSLuca Coelho const struct iwl_cfg_trans_params iwl_qu_trans_cfg = { 12332ed101aSLuca Coelho .mq_rx_supported = true, 12432ed101aSLuca Coelho .rf_id = true, 12532ed101aSLuca Coelho .gen2 = true, 12632ed101aSLuca Coelho .device_family = IWL_DEVICE_FAMILY_22000, 12732ed101aSLuca Coelho .base_params = &iwl_22000_base_params, 12832ed101aSLuca Coelho .integrated = true, 1298fac81b5SLuca Coelho .xtal_latency = 500, 1300928df0aSJohannes Berg .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_200US, 13132ed101aSLuca Coelho }; 13232ed101aSLuca Coelho 1339c9613f0SLuca Coelho const struct iwl_cfg_trans_params iwl_qu_medium_latency_trans_cfg = { 1349c9613f0SLuca Coelho .mq_rx_supported = true, 1359c9613f0SLuca Coelho .rf_id = true, 1369c9613f0SLuca Coelho .gen2 = true, 1379c9613f0SLuca Coelho .device_family = IWL_DEVICE_FAMILY_22000, 1389c9613f0SLuca Coelho .base_params = &iwl_22000_base_params, 1399c9613f0SLuca Coelho .integrated = true, 1409c9613f0SLuca Coelho .xtal_latency = 1820, 1419c9613f0SLuca Coelho .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_1820US, 1429c9613f0SLuca Coelho }; 1439c9613f0SLuca Coelho 144a72abfcaSLuca Coelho const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg = { 145a72abfcaSLuca Coelho .mq_rx_supported = true, 146a72abfcaSLuca Coelho .rf_id = true, 147a72abfcaSLuca Coelho .gen2 = true, 148a72abfcaSLuca Coelho .device_family = IWL_DEVICE_FAMILY_22000, 149a72abfcaSLuca Coelho .base_params = &iwl_22000_base_params, 150a72abfcaSLuca Coelho .integrated = true, 151a72abfcaSLuca Coelho .xtal_latency = 12000, 152a72abfcaSLuca Coelho .low_latency_xtal = true, 1530928df0aSJohannes Berg .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US, 154a72abfcaSLuca Coelho }; 155a72abfcaSLuca Coelho 156c042f0c7SJohannes Berg /* 157c042f0c7SJohannes Berg * If the device doesn't support HE, no need to have that many buffers. 158c042f0c7SJohannes Berg * 22000 devices can split multiple frames into a single RB, so fewer are 159c042f0c7SJohannes Berg * needed; AX210 cannot (but use smaller RBs by default) - these sizes 160c042f0c7SJohannes Berg * were picked according to 8 MSDUs inside 256 A-MSDUs in an A-MPDU, with 161c042f0c7SJohannes Berg * additional overhead to account for processing time. 162c042f0c7SJohannes Berg */ 163c042f0c7SJohannes Berg #define IWL_NUM_RBDS_NON_HE 512 164c042f0c7SJohannes Berg #define IWL_NUM_RBDS_22000_HE 2048 165c042f0c7SJohannes Berg 16668ceba3fSLuca Coelho /* 16768ceba3fSLuca Coelho * All JF radio modules are part of the 9000 series, but the MAC part 16868ceba3fSLuca Coelho * looks more like 22000. That's why this device is here, but called 16968ceba3fSLuca Coelho * 9560 nevertheless. 17068ceba3fSLuca Coelho */ 17132ed101aSLuca Coelho const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg = { 17232ed101aSLuca Coelho .fw_name_pre = IWL_QU_B_JF_B_FW_PRE, 17332ed101aSLuca Coelho IWL_DEVICE_22500, 17432ed101aSLuca Coelho .num_rbds = IWL_NUM_RBDS_NON_HE, 17532ed101aSLuca Coelho }; 17632ed101aSLuca Coelho 17732ed101aSLuca Coelho const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg = { 17832ed101aSLuca Coelho .fw_name_pre = IWL_QU_C_JF_B_FW_PRE, 17932ed101aSLuca Coelho IWL_DEVICE_22500, 18032ed101aSLuca Coelho .num_rbds = IWL_NUM_RBDS_NON_HE, 18132ed101aSLuca Coelho }; 18232ed101aSLuca Coelho 18332ed101aSLuca Coelho const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = { 18432ed101aSLuca Coelho .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE, 18532ed101aSLuca Coelho IWL_DEVICE_22500, 18632ed101aSLuca Coelho /* 18732ed101aSLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 18832ed101aSLuca Coelho * so we need to restrict the size of transmitted aggregation to the 18932ed101aSLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 19032ed101aSLuca Coelho */ 19132ed101aSLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 19232ed101aSLuca Coelho .num_rbds = IWL_NUM_RBDS_NON_HE, 19332ed101aSLuca Coelho }; 19432ed101aSLuca Coelho 1955e003982SLuca Coelho const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = { 1965e003982SLuca Coelho .device_family = IWL_DEVICE_FAMILY_22000, 1975e003982SLuca Coelho .base_params = &iwl_22000_base_params, 1985e003982SLuca Coelho .mq_rx_supported = true, 1995e003982SLuca Coelho .rf_id = true, 2005e003982SLuca Coelho .gen2 = true, 2015e003982SLuca Coelho .bisr_workaround = 1, 2025e003982SLuca Coelho }; 2035e003982SLuca Coelho 204bc9296f4SIhab Zhaika const char iwl_ax101_name[] = "Intel(R) Wi-Fi 6 AX101"; 2055e003982SLuca Coelho const char iwl_ax200_name[] = "Intel(R) Wi-Fi 6 AX200 160MHz"; 206d5727b60SLuca Coelho const char iwl_ax201_name[] = "Intel(R) Wi-Fi 6 AX201 160MHz"; 20716062c12SLuca Coelho const char iwl_ax203_name[] = "Intel(R) Wi-Fi 6 AX203"; 208ac4790dcSYaara Baruch const char iwl_ax204_name[] = "Intel(R) Wi-Fi 6 AX204 160MHz"; 2095e003982SLuca Coelho 2105e003982SLuca Coelho const char iwl_ax200_killer_1650w_name[] = 2115e003982SLuca Coelho "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)"; 2125e003982SLuca Coelho const char iwl_ax200_killer_1650x_name[] = 2135e003982SLuca Coelho "Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)"; 21464564669SIhab Zhaika const char iwl_ax201_killer_1650s_name[] = 21564564669SIhab Zhaika "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)"; 21664564669SIhab Zhaika const char iwl_ax201_killer_1650i_name[] = 21764564669SIhab Zhaika "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)"; 2185e003982SLuca Coelho 2193f910a25SLuca Coelho const struct iwl_cfg iwl_qu_b0_hr1_b0 = { 220e34aa5abSLuca Coelho .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, 221ab27926dSLuca Coelho IWL_DEVICE_22500, 222ab27926dSLuca Coelho /* 223ab27926dSLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 224ab27926dSLuca Coelho * so we need to restrict the size of transmitted aggregation to the 225ab27926dSLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 226ab27926dSLuca Coelho */ 227ab27926dSLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 2285952e0ecSHaim Dreyfuss .tx_with_siso_diversity = true, 229c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 230ab27926dSLuca Coelho }; 231ab27926dSLuca Coelho 23216062c12SLuca Coelho const struct iwl_cfg iwl_qu_b0_hr_b0 = { 23316062c12SLuca Coelho .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, 23416062c12SLuca Coelho IWL_DEVICE_22500, 23516062c12SLuca Coelho /* 23616062c12SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 23716062c12SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 23816062c12SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 23916062c12SLuca Coelho */ 24016062c12SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 24116062c12SLuca Coelho .num_rbds = IWL_NUM_RBDS_22000_HE, 24216062c12SLuca Coelho }; 24316062c12SLuca Coelho 244d151b0a2SIhab Zhaika const struct iwl_cfg iwl_ax201_cfg_qu_hr = { 245d151b0a2SIhab Zhaika .name = "Intel(R) Wi-Fi 6 AX201 160MHz", 246e34aa5abSLuca Coelho .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, 247d151b0a2SIhab Zhaika IWL_DEVICE_22500, 248d151b0a2SIhab Zhaika /* 249d151b0a2SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 250d151b0a2SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 251d151b0a2SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 252d151b0a2SIhab Zhaika */ 253d151b0a2SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 254c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 255d151b0a2SIhab Zhaika }; 256d151b0a2SIhab Zhaika 2573f910a25SLuca Coelho const struct iwl_cfg iwl_qu_c0_hr1_b0 = { 258a7d544d6SLuca Coelho .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, 259a7d544d6SLuca Coelho IWL_DEVICE_22500, 260a7d544d6SLuca Coelho /* 261a7d544d6SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 262a7d544d6SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 263a7d544d6SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 264a7d544d6SLuca Coelho */ 265a7d544d6SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 2669352ed01SLuca Coelho .tx_with_siso_diversity = true, 267c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 268a7d544d6SLuca Coelho }; 269a7d544d6SLuca Coelho 27016062c12SLuca Coelho const struct iwl_cfg iwl_qu_c0_hr_b0 = { 27116062c12SLuca Coelho .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, 27216062c12SLuca Coelho IWL_DEVICE_22500, 27316062c12SLuca Coelho /* 27416062c12SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 27516062c12SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 27616062c12SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 27716062c12SLuca Coelho */ 27816062c12SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 27916062c12SLuca Coelho .num_rbds = IWL_NUM_RBDS_22000_HE, 28016062c12SLuca Coelho }; 28116062c12SLuca Coelho 282a7d544d6SLuca Coelho const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = { 283a7d544d6SLuca Coelho .name = "Intel(R) Wi-Fi 6 AX201 160MHz", 284a7d544d6SLuca Coelho .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, 285a7d544d6SLuca Coelho IWL_DEVICE_22500, 286a7d544d6SLuca Coelho /* 287a7d544d6SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 288a7d544d6SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 289a7d544d6SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 290a7d544d6SLuca Coelho */ 291a7d544d6SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 292c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 293a7d544d6SLuca Coelho }; 294a7d544d6SLuca Coelho 2953f910a25SLuca Coelho const struct iwl_cfg iwl_quz_a0_hr1_b0 = { 296debec2f2SLuca Coelho .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, 297debec2f2SLuca Coelho IWL_DEVICE_22500, 298debec2f2SLuca Coelho /* 299debec2f2SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 300debec2f2SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 301debec2f2SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 302debec2f2SLuca Coelho */ 303debec2f2SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 3049352ed01SLuca Coelho .tx_with_siso_diversity = true, 305c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 306debec2f2SLuca Coelho }; 307debec2f2SLuca Coelho 308a976bfb4SIhab Zhaika const struct iwl_cfg iwl_ax201_cfg_quz_hr = { 309a976bfb4SIhab Zhaika .name = "Intel(R) Wi-Fi 6 AX201 160MHz", 310a976bfb4SIhab Zhaika .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, 311a976bfb4SIhab Zhaika IWL_DEVICE_22500, 312a976bfb4SIhab Zhaika /* 313a976bfb4SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 314a976bfb4SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 315a976bfb4SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 316a976bfb4SIhab Zhaika */ 317a976bfb4SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 318c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 319a976bfb4SIhab Zhaika }; 320a976bfb4SIhab Zhaika 321a976bfb4SIhab Zhaika const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = { 322a976bfb4SIhab Zhaika .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)", 323a976bfb4SIhab Zhaika .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, 324a976bfb4SIhab Zhaika IWL_DEVICE_22500, 325a976bfb4SIhab Zhaika /* 326a976bfb4SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 327a976bfb4SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 328a976bfb4SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 329a976bfb4SIhab Zhaika */ 330a976bfb4SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 331c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 332a976bfb4SIhab Zhaika }; 333a976bfb4SIhab Zhaika 334a976bfb4SIhab Zhaika const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = { 335a976bfb4SIhab Zhaika .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)", 336a976bfb4SIhab Zhaika .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, 337a976bfb4SIhab Zhaika IWL_DEVICE_22500, 338a976bfb4SIhab Zhaika /* 339a976bfb4SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 340a976bfb4SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 341a976bfb4SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 342a976bfb4SIhab Zhaika */ 343a976bfb4SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 344c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 345a976bfb4SIhab Zhaika }; 346a976bfb4SIhab Zhaika 3470d5bad14SIhab Zhaika const struct iwl_cfg iwl_ax200_cfg_cc = { 3488093bb6dSLuca Coelho .fw_name_pre = IWL_CC_A_FW_PRE, 3498093bb6dSLuca Coelho IWL_DEVICE_22500, 3508093bb6dSLuca Coelho /* 3518093bb6dSLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 3528093bb6dSLuca Coelho * so we need to restrict the size of transmitted aggregation to the 3538093bb6dSLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 3548093bb6dSLuca Coelho */ 3558093bb6dSLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 356c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 3578093bb6dSLuca Coelho }; 3588093bb6dSLuca Coelho 3595b74a936SIhab Zhaika const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = { 360e5178014SYaara Baruch .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)", 361e34aa5abSLuca Coelho .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, 3625b74a936SIhab Zhaika IWL_DEVICE_22500, 3635b74a936SIhab Zhaika /* 3645b74a936SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 3655b74a936SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 3665b74a936SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 3675b74a936SIhab Zhaika */ 3685b74a936SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 369c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 3705b74a936SIhab Zhaika }; 3715b74a936SIhab Zhaika 3725b74a936SIhab Zhaika const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = { 373e5178014SYaara Baruch .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)", 374e34aa5abSLuca Coelho .fw_name_pre = IWL_QU_B_HR_B_FW_PRE, 3755b74a936SIhab Zhaika IWL_DEVICE_22500, 3765b74a936SIhab Zhaika /* 3775b74a936SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 3785b74a936SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 3795b74a936SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 3805b74a936SIhab Zhaika */ 3815b74a936SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 382c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 3835b74a936SIhab Zhaika }; 3845b74a936SIhab Zhaika 385b9500577SLuca Coelho const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = { 386e5178014SYaara Baruch .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)", 387b9500577SLuca Coelho .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, 388b9500577SLuca Coelho IWL_DEVICE_22500, 389b9500577SLuca Coelho /* 390b9500577SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 391b9500577SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 392b9500577SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 393b9500577SLuca Coelho */ 394b9500577SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 395c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 396b9500577SLuca Coelho }; 397b9500577SLuca Coelho 398b9500577SLuca Coelho const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = { 399e5178014SYaara Baruch .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)", 400b9500577SLuca Coelho .fw_name_pre = IWL_QU_C_HR_B_FW_PRE, 401b9500577SLuca Coelho IWL_DEVICE_22500, 402b9500577SLuca Coelho /* 403b9500577SLuca Coelho * This device doesn't support receiving BlockAck with a large bitmap 404b9500577SLuca Coelho * so we need to restrict the size of transmitted aggregation to the 405b9500577SLuca Coelho * HT size; mac80211 would otherwise pick the HE max (256) by default. 406b9500577SLuca Coelho */ 407b9500577SLuca Coelho .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 408c042f0c7SJohannes Berg .num_rbds = IWL_NUM_RBDS_22000_HE, 409b9500577SLuca Coelho }; 410b9500577SLuca Coelho 411410f7585SIhab Zhaika const struct iwl_cfg iwl_cfg_quz_a0_hr_b0 = { 412410f7585SIhab Zhaika .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE, 413410f7585SIhab Zhaika IWL_DEVICE_22500, 414410f7585SIhab Zhaika /* 415410f7585SIhab Zhaika * This device doesn't support receiving BlockAck with a large bitmap 416410f7585SIhab Zhaika * so we need to restrict the size of transmitted aggregation to the 417410f7585SIhab Zhaika * HT size; mac80211 would otherwise pick the HE max (256) by default. 418410f7585SIhab Zhaika */ 419410f7585SIhab Zhaika .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT, 420410f7585SIhab Zhaika .num_rbds = IWL_NUM_RBDS_22000_HE, 421410f7585SIhab Zhaika }; 422410f7585SIhab Zhaika 42319898ce9SJohannes Berg MODULE_FIRMWARE(IWL_QU_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 42419898ce9SJohannes Berg MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 42519898ce9SJohannes Berg MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 42619898ce9SJohannes Berg MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 42719898ce9SJohannes Berg MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 42819898ce9SJohannes Berg MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX)); 429