Kang Yang <quic_kangyang@xxxxxxxxxxx> 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@xxxxxxxxxxx> > Acked-by: Jeff Johnson <quic_jjohnson@xxxxxxxxxxx> > Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx> 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@xxxxxxxxxxx/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches