APPLIED[F]: [PATCH 1/1] iwlwifi: msix: limit max RX queues for 9000 family
Ian May
ian.may at canonical.com
Thu Oct 22 18:02:54 UTC 2020
Applied to Focal/master-next
Thanks,
Ian
On 2020-10-14 11:35:23 , Kai-Heng Feng wrote:
> From: Mordechay Goodstein <mordechay.goodstein at intel.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1899726
>
> There is an issue in the HW DMA engine in the 9000 family of devices
> when more than 6 RX queues are used. The issue is that the FW may
> hang when IWL_MVM_RXQ_NSSN_SYNC notifications are sent.
>
> Fix this by limiting the number of RX queues to 6 in the 9000 family
> of devices.
>
> Signed-off-by: Mordechay Goodstein <mordechay.goodstein at intel.com>
> Signed-off-by: Luca Coelho <luciano.coelho at intel.com>
> Link: https://lore.kernel.org/r/iwlwifi.20200911204056.37d90f9ceb0c.I8dfe8a7d3a7ac9f0bc9d93e4a03f8165d8c999d2@changeid
> Signed-off-by: Luca Coelho <luciano.coelho at intel.com>
> (cherry picked from commit 0cd38f4d05299f5148c60db0234ea4db862c839b linux-next)
> Signed-off-by: Kai-Heng Feng <kai.heng.feng at canonical.com>
> ---
> drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 1 +
> drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 6 +++++-
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
> index 34788e7afc7b..32ea4c3c7d23 100644
> --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
> +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
> @@ -316,6 +316,7 @@ static inline void iwl_free_rxb(struct iwl_rx_cmd_buffer *r)
> #define IWL_MGMT_TID 15
> #define IWL_FRAME_LIMIT 64
> #define IWL_MAX_RX_HW_QUEUES 16
> +#define IWL_9000_MAX_RX_HW_QUEUES 6
>
> /**
> * enum iwl_wowlan_status - WoWLAN image/device status
> diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
> index e5160d620868..a59684e82713 100644
> --- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
> +++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
> @@ -1607,11 +1607,15 @@ iwl_pcie_set_interrupt_capa(struct pci_dev *pdev,
> struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
> int max_irqs, num_irqs, i, ret;
> u16 pci_cmd;
> + u32 max_rx_queues = IWL_MAX_RX_HW_QUEUES;
>
> if (!cfg_trans->mq_rx_supported)
> goto enable_msi;
>
> - max_irqs = min_t(u32, num_online_cpus() + 2, IWL_MAX_RX_HW_QUEUES);
> + if (cfg_trans->device_family <= IWL_DEVICE_FAMILY_9000)
> + max_rx_queues = IWL_9000_MAX_RX_HW_QUEUES;
> +
> + max_irqs = min_t(u32, num_online_cpus() + 2, max_rx_queues);
> for (i = 0; i < max_irqs; i++)
> trans_pcie->msix_entries[i].entry = i;
>
> --
> 2.17.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list