mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 15:13:55 +08:00
wireless-drivers fixes for 5.3
First set of fixes for 5.3. iwlwifi * add new cards for 9000 and 20000 series and qu c-step devices ath10k * workaround an uninitialised variable warning rt2x00 * fix rx queue hand on USB -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJdMHsXAAoJEG4XJFUm622btf4H/jhvqhD2z/1N9Xa35LhLSZNQ VxulUarlJ5oiHMSOYIJfftgz5wjw3Og5tY2x3GkcxeXkZqGhTFZle2itO1UicPlt CmLDbwN2WC8bnZNRAS79094Dr6iDigw9nDZ3ND9G77mRuuKiwPk6M4R9nYfvOk6d 9j8TFvxVn5mBr+8xw254dWSVY/Um/Vu0J49GgqSIXVvsi4JQVMc47WObeQ/PrQre bUFBUD+CJ/Jei/Y0/HrvKo7f1HQMcWHPhAkru6VExT89gvwW98nPUtA4+EonMZpA AJ4JQwA6olD6e/N2/6KTghdbRgC7aYT7SwskPdWKgIBeF9HeotomjXVWQiBbcw0= =Z4Ai -----END PGP SIGNATURE----- Merge tag 'wireless-drivers-for-davem-2019-07-18' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers Kalle Valo says: ==================== wireless-drivers fixes for 5.3 First set of fixes for 5.3. iwlwifi * add new cards for 9000 and 20000 series and qu c-step devices ath10k * workaround an uninitialised variable warning rt2x00 * fix rx queue hand on USB ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
9c2a57d16d
@ -7541,6 +7541,8 @@ static int ath10k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
||||
&vht_nss,
|
||||
true);
|
||||
update_bitrate_mask = false;
|
||||
} else {
|
||||
vht_pfr = 0;
|
||||
}
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
@ -80,7 +80,9 @@
|
||||
#define IWL_22000_QU_B_HR_B_FW_PRE "iwlwifi-Qu-b0-hr-b0-"
|
||||
#define IWL_22000_HR_B_FW_PRE "iwlwifi-QuQnj-b0-hr-b0-"
|
||||
#define IWL_22000_HR_A0_FW_PRE "iwlwifi-QuQnj-a0-hr-a0-"
|
||||
#define IWL_QU_C_HR_B_FW_PRE "iwlwifi-Qu-c0-hr-b0-"
|
||||
#define IWL_QU_B_JF_B_FW_PRE "iwlwifi-Qu-b0-jf-b0-"
|
||||
#define IWL_QU_C_JF_B_FW_PRE "iwlwifi-Qu-c0-jf-b0-"
|
||||
#define IWL_QUZ_A_HR_B_FW_PRE "iwlwifi-QuZ-a0-hr-b0-"
|
||||
#define IWL_QUZ_A_JF_B_FW_PRE "iwlwifi-QuZ-a0-jf-b0-"
|
||||
#define IWL_QNJ_B_JF_B_FW_PRE "iwlwifi-QuQnj-b0-jf-b0-"
|
||||
@ -109,6 +111,8 @@
|
||||
IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode"
|
||||
#define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \
|
||||
IWL_QUZ_A_JF_B_FW_PRE __stringify(api) ".ucode"
|
||||
#define IWL_QU_C_HR_B_MODULE_FIRMWARE(api) \
|
||||
IWL_QU_C_HR_B_FW_PRE __stringify(api) ".ucode"
|
||||
#define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
|
||||
IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode"
|
||||
#define IWL_QNJ_B_JF_B_MODULE_FIRMWARE(api) \
|
||||
@ -256,6 +260,30 @@ const struct iwl_cfg iwl_ax201_cfg_qu_hr = {
|
||||
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0 = {
|
||||
.name = "Intel(R) Wi-Fi 6 AX101",
|
||||
.fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
/*
|
||||
* This device doesn't support receiving BlockAck with a large bitmap
|
||||
* so we need to restrict the size of transmitted aggregation to the
|
||||
* HT size; mac80211 would otherwise pick the HE max (256) by default.
|
||||
*/
|
||||
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = {
|
||||
.name = "Intel(R) Wi-Fi 6 AX201 160MHz",
|
||||
.fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
/*
|
||||
* This device doesn't support receiving BlockAck with a large bitmap
|
||||
* so we need to restrict the size of transmitted aggregation to the
|
||||
* HT size; mac80211 would otherwise pick the HE max (256) by default.
|
||||
*/
|
||||
.max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl_ax101_cfg_quz_hr = {
|
||||
.name = "Intel(R) Wi-Fi 6 AX101",
|
||||
.fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
|
||||
@ -372,6 +400,30 @@ const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0 = {
|
||||
IWL_DEVICE_22500,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0 = {
|
||||
.name = "Intel(R) Wireless-AC 9461",
|
||||
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0 = {
|
||||
.name = "Intel(R) Wireless-AC 9462",
|
||||
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0 = {
|
||||
.name = "Intel(R) Wireless-AC 9560",
|
||||
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0 = {
|
||||
.name = "Intel(R) Wireless-AC 9560 160MHz",
|
||||
.fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
|
||||
IWL_DEVICE_22500,
|
||||
};
|
||||
|
||||
const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0 = {
|
||||
.name = "Intel(R) Wireless-AC 9560 160MHz",
|
||||
.fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE,
|
||||
@ -590,6 +642,7 @@ MODULE_FIRMWARE(IWL_22000_HR_A_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_22000_HR_B_F0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_22000_HR_B_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_22000_HR_A0_QNJ_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
|
||||
|
@ -565,10 +565,13 @@ extern const struct iwl_cfg iwl22000_2ac_cfg_hr;
|
||||
extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb;
|
||||
extern const struct iwl_cfg iwl22000_2ac_cfg_jf;
|
||||
extern const struct iwl_cfg iwl_ax101_cfg_qu_hr;
|
||||
extern const struct iwl_cfg iwl_ax101_cfg_qu_c0_hr_b0;
|
||||
extern const struct iwl_cfg iwl_ax101_cfg_quz_hr;
|
||||
extern const struct iwl_cfg iwl22000_2ax_cfg_hr;
|
||||
extern const struct iwl_cfg iwl_ax200_cfg_cc;
|
||||
extern const struct iwl_cfg iwl_ax201_cfg_qu_hr;
|
||||
extern const struct iwl_cfg iwl_ax201_cfg_qu_hr;
|
||||
extern const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0;
|
||||
extern const struct iwl_cfg iwl_ax201_cfg_quz_hr;
|
||||
extern const struct iwl_cfg iwl_ax1650i_cfg_quz_hr;
|
||||
extern const struct iwl_cfg iwl_ax1650s_cfg_quz_hr;
|
||||
@ -580,6 +583,10 @@ extern const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9461_2ac_cfg_qu_c0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9462_2ac_cfg_qu_c0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9560_2ac_cfg_qu_c0_jf_b0;
|
||||
extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_c0_jf_b0;
|
||||
extern const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0;
|
||||
extern const struct iwl_cfg iwl22000_2ax_cfg_jf;
|
||||
|
@ -328,6 +328,8 @@ enum {
|
||||
#define CSR_HW_REV_TYPE_NONE (0x00001F0)
|
||||
#define CSR_HW_REV_TYPE_QNJ (0x0000360)
|
||||
#define CSR_HW_REV_TYPE_QNJ_B0 (0x0000364)
|
||||
#define CSR_HW_REV_TYPE_QU_B0 (0x0000334)
|
||||
#define CSR_HW_REV_TYPE_QU_C0 (0x0000338)
|
||||
#define CSR_HW_REV_TYPE_QUZ (0x0000354)
|
||||
#define CSR_HW_REV_TYPE_HR_CDB (0x0000340)
|
||||
#define CSR_HW_REV_TYPE_SO (0x0000370)
|
||||
|
@ -604,6 +604,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||
{IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0x4234, iwl9560_2ac_cfg_soc)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0x6014, iwl9260_2ac_160_cfg)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0x8014, iwl9260_2ac_160_cfg)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0x8010, iwl9260_2ac_160_cfg)},
|
||||
{IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_160_cfg)},
|
||||
@ -971,6 +972,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||
{IWL_PCI_DEVICE(0x7A70, 0x0310, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7A70, 0x0510, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7A70, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7AF0, 0x0090, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7AF0, 0x0310, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7AF0, 0x0510, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
{IWL_PCI_DEVICE(0x7AF0, 0x0A10, iwlax211_2ax_cfg_so_gf_a0)},
|
||||
@ -1037,6 +1039,27 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
}
|
||||
iwl_trans->cfg = cfg;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a hack to switch from Qu B0 to Qu C0. We need to
|
||||
* do this for all cfgs that use Qu B0. All this code is in
|
||||
* urgent need for a refactor, but for now this is the easiest
|
||||
* thing to do to support Qu C-step.
|
||||
*/
|
||||
if (iwl_trans->hw_rev == CSR_HW_REV_TYPE_QU_C0) {
|
||||
if (iwl_trans->cfg == &iwl_ax101_cfg_qu_hr)
|
||||
iwl_trans->cfg = &iwl_ax101_cfg_qu_c0_hr_b0;
|
||||
else if (iwl_trans->cfg == &iwl_ax201_cfg_qu_hr)
|
||||
iwl_trans->cfg = &iwl_ax201_cfg_qu_c0_hr_b0;
|
||||
else if (iwl_trans->cfg == &iwl9461_2ac_cfg_qu_b0_jf_b0)
|
||||
iwl_trans->cfg = &iwl9461_2ac_cfg_qu_c0_jf_b0;
|
||||
else if (iwl_trans->cfg == &iwl9462_2ac_cfg_qu_b0_jf_b0)
|
||||
iwl_trans->cfg = &iwl9462_2ac_cfg_qu_c0_jf_b0;
|
||||
else if (iwl_trans->cfg == &iwl9560_2ac_cfg_qu_b0_jf_b0)
|
||||
iwl_trans->cfg = &iwl9560_2ac_cfg_qu_c0_jf_b0;
|
||||
else if (iwl_trans->cfg == &iwl9560_2ac_160_cfg_qu_b0_jf_b0)
|
||||
iwl_trans->cfg = &iwl9560_2ac_160_cfg_qu_c0_jf_b0;
|
||||
}
|
||||
#endif
|
||||
|
||||
pci_set_drvdata(pdev, iwl_trans);
|
||||
|
@ -372,14 +372,9 @@ static void rt2x00usb_interrupt_rxdone(struct urb *urb)
|
||||
struct queue_entry *entry = (struct queue_entry *)urb->context;
|
||||
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
|
||||
if (!test_and_clear_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
|
||||
if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Report the frame as DMA done
|
||||
*/
|
||||
rt2x00lib_dmadone(entry);
|
||||
|
||||
/*
|
||||
* Check if the received data is simply too small
|
||||
* to be actually valid, or if the urb is signaling
|
||||
@ -388,6 +383,11 @@ static void rt2x00usb_interrupt_rxdone(struct urb *urb)
|
||||
if (urb->actual_length < entry->queue->desc_size || urb->status)
|
||||
set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
|
||||
|
||||
/*
|
||||
* Report the frame as DMA done
|
||||
*/
|
||||
rt2x00lib_dmadone(entry);
|
||||
|
||||
/*
|
||||
* Schedule the delayed work for reading the RX status
|
||||
* from the device.
|
||||
|
Loading…
Reference in New Issue
Block a user