Skip to content

Commit 832bc25

Browse files
author
Kalle Valo
committed
Merge tag 'iwlwifi-for-kalle-2019-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
Second batch of iwlwifi fixes intended for v5.1 * fix for a potential deadlock in the TX path; * a fix for offloaded rate-control; * support new PCI HW IDs which use a new FW;
2 parents bafdf85 + debec2f commit 832bc25

File tree

6 files changed

+31
-2
lines changed

6 files changed

+31
-2
lines changed

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
#define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-"
8383
#define IWL_22000_SU_Z0_FW_PRE "iwlwifi-su-z0-"
8484
#define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-"
85+
#define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0-"
8586
#define IWL_QNJ_B_JF_B_FW_PRE "iwlwifi-QuQnj-b0-jf-b0-"
8687
#define IWL_CC_A_FW_PRE "iwlwifi-cc-a0-"
8788
#define IWL_22000_SO_A_JF_B_FW_PRE "iwlwifi-so-a0-jf-b0-"
@@ -105,8 +106,8 @@
105106
IWL_22000_HR_A0_FW_PRE __stringify(api) ".ucode"
106107
#define IWL_22000_SU_Z0_MODULE_FIRMWARE(api) \
107108
IWL_22000_SU_Z0_FW_PRE __stringify(api) ".ucode"
108-
#define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
109-
IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode"
109+
#define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \
110+
IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode"
110111
#define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
111112
IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode"
112113
#define IWL_QNJ_B_JF_B_MODULE_FIRMWARE(api) \
@@ -235,6 +236,18 @@ const struct iwl_cfg iwl_ax101_cfg_qu_hr = {
235236
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
236237
};
237238

239+
const struct iwl_cfg iwl_ax101_cfg_quz_hr = {
240+
.name = "Intel(R) Wi-Fi 6 AX101",
241+
.fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
242+
IWL_DEVICE_22500,
243+
/*
244+
* This device doesn't support receiving BlockAck with a large bitmap
245+
* so we need to restrict the size of transmitted aggregation to the
246+
* HT size; mac80211 would otherwise pick the HE max (256) by default.
247+
*/
248+
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
249+
};
250+
238251
const struct iwl_cfg iwl_ax200_cfg_cc = {
239252
.name = "Intel(R) Wi-Fi 6 AX200 160MHz",
240253
.fw_name_pre = IWL_CC_A_FW_PRE,
@@ -444,6 +457,7 @@ MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
444457
MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
445458
MODULE_FIRMWARE(IWL_22000_SU_Z0_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
446459
MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
460+
MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
447461
MODULE_FIRMWARE(IWL_QNJ_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
448462
MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
449463
MODULE_FIRMWARE(IWL_22000_SO_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));

drivers/net/wireless/intel/iwlwifi/iwl-config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,7 @@ extern const struct iwl_cfg iwl22000_2ac_cfg_hr;
549549
extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb;
550550
extern const struct iwl_cfg iwl22000_2ac_cfg_jf;
551551
extern const struct iwl_cfg iwl_ax101_cfg_qu_hr;
552+
extern const struct iwl_cfg iwl_ax101_cfg_quz_hr;
552553
extern const struct iwl_cfg iwl22000_2ax_cfg_hr;
553554
extern const struct iwl_cfg iwl_ax200_cfg_cc;
554555
extern const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0;

drivers/net/wireless/intel/iwlwifi/iwl-csr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ enum {
327327
#define CSR_HW_REV_TYPE_NONE (0x00001F0)
328328
#define CSR_HW_REV_TYPE_QNJ (0x0000360)
329329
#define CSR_HW_REV_TYPE_QNJ_B0 (0x0000364)
330+
#define CSR_HW_REV_TYPE_QUZ (0x0000354)
330331
#define CSR_HW_REV_TYPE_HR_CDB (0x0000340)
331332
#define CSR_HW_REV_TYPE_SO (0x0000370)
332333
#define CSR_HW_REV_TYPE_TY (0x0000420)

drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,6 +3258,13 @@ static void iwl_mvm_sta_rc_update(struct ieee80211_hw *hw,
32583258
struct ieee80211_sta *sta, u32 changed)
32593259
{
32603260
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
3261+
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
3262+
3263+
if (changed & (IEEE80211_RC_BW_CHANGED |
3264+
IEEE80211_RC_SUPP_RATES_CHANGED |
3265+
IEEE80211_RC_NSS_CHANGED))
3266+
iwl_mvm_rs_rate_init(mvm, sta, mvmvif->phy_ctxt->channel->band,
3267+
true);
32613268

32623269
if (vif->type == NL80211_IFTYPE_STATION &&
32633270
changed & IEEE80211_RC_NSS_CHANGED)

drivers/net/wireless/intel/iwlwifi/mvm/sta.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,9 @@ void iwl_mvm_add_new_dqa_stream_wk(struct work_struct *wk)
13991399

14001400
iwl_mvm_sta_alloc_queue(mvm, txq->sta, txq->ac, tid);
14011401
list_del_init(&mvmtxq->list);
1402+
local_bh_disable();
14021403
iwl_mvm_mac_itxq_xmit(mvm->hw, txq);
1404+
local_bh_enable();
14031405
}
14041406

14051407
mutex_unlock(&mvm->mutex);

drivers/net/wireless/intel/iwlwifi/pcie/trans.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3543,6 +3543,10 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
35433543
}
35443544
} else if (cfg == &iwl_ax101_cfg_qu_hr) {
35453545
if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) ==
3546+
CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR) &&
3547+
trans->hw_rev == CSR_HW_REV_TYPE_QNJ_B0) {
3548+
trans->cfg = &iwl22000_2ax_cfg_qnj_hr_b0;
3549+
} else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) ==
35463550
CSR_HW_RF_ID_TYPE_CHIP_ID(CSR_HW_RF_ID_TYPE_HR)) {
35473551
trans->cfg = &iwl_ax101_cfg_qu_hr;
35483552
} else if (CSR_HW_RF_ID_TYPE_CHIP_ID(trans->hw_rf_id) ==

0 commit comments

Comments
 (0)