[PATCH v2 1/7] wifi: ath12k: get msi_data again after request_irq is called

Kalle Valo kvalo at kernel.org
Tue Dec 5 07:05:59 PST 2023


Kang Yang <quic_kangyang at quicinc.com> wrote:

> The reservation mode of interrupts in kernel assigns a dummy vector
> when the interrupt is allocated and assigns a real vector when the
> request_irq is called. The reservation mode helps to ease vector
> pressure when devices with a large amount of queues/interrupts are
> initialized, but only a minimal subset of those queues/interrupts
> is actually used.
> 
> So on reservation mode, the msi_data may change after request_irq is
> called, then it will lead to spurious interrupt. But when VT-d in
> BIOS is enabled and ath12k can get 32 MSI vectors, ath12k always get
> the same msi_data before and after request_irq.
> 
> So in case of one MSI vector, ath12k need read msi_data again after
> request_irq is called, and then the correct msi_data is programmed
> into WCN7850 hardware components.
> 
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
> 
> Signed-off-by: Kang Yang <quic_kangyang at quicinc.com>
> Acked-by: Jeff Johnson <quic_jjohnson at quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo at quicinc.com>

7 patches applied to ath-next branch of ath.git, thanks.

1b66601d1416 wifi: ath12k: get msi_data again after request_irq is called
604308a34487 wifi: ath12k: add CE and ext IRQ flag to indicate irq_handler
1f1f7d548a00 wifi: ath12k: use ATH12K_PCI_IRQ_DP_OFFSET for DP IRQ
6711b2a80b9a wifi: ath12k: refactor multiple MSI vector implementation
8398654398c2 wifi: ath12k: add support one MSI vector
08d52ba29678 wifi: ath12k: do not restore ASPM in case of single MSI vector
a3012f206d07 wifi: ath12k: set IRQ affinity to CPU0 in case of one MSI vector

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20231121021304.12966-2-quic_kangyang@quicinc.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches




More information about the ath12k mailing list