ath11k: Set IRQ affinity to CPU0 in case of one MSI vector
authorBaochen Qiang <bqiang@codeaurora.org>
Fri, 19 Nov 2021 13:36:26 +0000 (15:36 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 22 Nov 2021 11:11:04 +0000 (13:11 +0200)
commite94b07493da31705c3fdd0b2854f0cffe1dacb3c
tree3ee1f577a1251a47f95e08344f3b2850c8eed1ec
parent915a081ff307d61d6551d6c16b542e03775353c4
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

With VT-d disabled on Intel platform, ath11k gets only one MSI
vector. In that case, ath11k does not free IRQ when doing suspend,
hence the kernel has to migrate it to CPU0 (if it was affine to
other CPUs) and allocates a new MSI vector. However, ath11k has
no chance to reconfig it to HW srngs during this phase, thus
ath11k fails to resume.

This issue can be fixed by setting IRQ affinity to CPU0 before
request_irq is called. With such affinity, migration will not
happen and thus the vector keeps unchanged during suspend/resume.

Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1

Signed-off-by: Baochen Qiang <bqiang@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20211026041732.5323-1-bqiang@codeaurora.org
drivers/net/wireless/ath/ath11k/pci.c