Skip to contentSkip to conversation

ath11k: support one MSI vector

PATCH In review Baochen Qiang 2 participants 5 messages Oct 26, 2021 – Nov 22, 2021 Qualcomm Atheros ATH11K wireless driver

lore
Share & tools
lore
#0 lore raw

cover ath11k: support one MSI vector

This patch set is to support one MSI vector for QCA6390.

Depends-On:
1. ath11k: Fix crash caused by uninitialized TX ring
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

Baochen Qiang (1):
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

Carl Huang (6):
ath11k: get msi_data again after request_irq is called
ath11k: add CE and ext IRQ flag to indicate irq_handler
ath11k: use ATH11K_PCI_IRQ_DP_OFFSET for DP IRQ
ath11k: refactor multiple MSI vector implementation
ath11k: supports one MSI vector
ath11k: do not restore ASPM in case of single MSI vector

 drivers/net/wireless/ath/ath11k/core.h |   2 +
 drivers/net/wireless/ath/ath11k/mhi.c  |  14 +-
 drivers/net/wireless/ath/ath11k/pci.c  | 181 +++++++++++++++++++++----
 drivers/net/wireless/ath/ath11k/pci.h  |   3 +
 4 files changed, 173 insertions(+), 27 deletions(-)
Signature · 1 line
2.25.1
#1 lore raw
Quoted 9 lines · Baochen Qiang

This patch set is to support one MSI vector for QCA6390.

Depends-On:
1. ath11k: Fix crash caused by uninitialized TX ring
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

Baochen Qiang (1):
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

Quoted 7 lines

Carl Huang (6):
ath11k: get msi_data again after request_irq is called
ath11k: add CE and ext IRQ flag to indicate irq_handler
ath11k: use ATH11K_PCI_IRQ_DP_OFFSET for DP IRQ
ath11k: refactor multiple MSI vector implementation
ath11k: supports one MSI vector
ath11k: do not restore ASPM in case of single MSI vector

I assume this is v2 of Carl's patchset:

https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/

Can you provide a changelog? No need to resend because of that, just a reply to this thread enough.

Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
#2 lore raw
Quoted 20 lines · Kalle Valo
Quoted 10 lines · Baochen Qiang

This patch set is to support one MSI vector for QCA6390.

Depends-On:
1. ath11k: Fix crash caused by uninitialized TX ring

https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

Baochen Qiang (1):
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

Quoted 7 lines

Carl Huang (6):
ath11k: get msi_data again after request_irq is called
ath11k: add CE and ext IRQ flag to indicate irq_handler
ath11k: use ATH11K_PCI_IRQ_DP_OFFSET for DP IRQ
ath11k: refactor multiple MSI vector implementation
ath11k: supports one MSI vector
ath11k: do not restore ASPM in case of single MSI vector

Quoted 6 lines

I assume this is v2 of Carl's patchset:

https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/

Can you provide a changelog? No need to resend because of that, just a reply to this thread enough.

Hi Kalle, this is the changelog:

1. changes by Kalle based on Carl's v1:

* add a log message for MSI vector count
* add a log message when disabling ASPM
* patch 1: fix error handling in ath11k_pci_probe()
* patch 1: simplify ath11k_pci_config_msi_data()
* patch 2: convert booleans to set_bit() & co for atomic access
* patch 2:__ath11k_pci_ext_irq_disable(): fix compilation
* patch 4: bool vectors_32_capability to set_bit() for atomic access
* patch 4: ath11k_mhi_get_msi(): don't use ? operator
* improve commits logs a bit

2. changes by Baochen based on Kalle's version:

* add a new patch: "ath11k: Set IRQ affinity to CPU0 in case of one MSI vector"
* address Jeff's comments on "ath11k: do not restore ASPM in case of single MSI vector":
change debug info from "disabling PCI ASPM ..." to "leaving PCI ASPM
disabled ..."
* change error handling in patch "ath11k: get msi_data again after request_irq is called"
* address Vasanth's comments on "ath11k: refactor multiple msi vector implementation"

Signature · 3 lines
ath11k mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/ath11k
#3 lore raw
Quoted 43 lines · Baochen Qiang
Quoted 19 lines · Kalle Valo
Quoted 9 lines · Baochen Qiang

This patch set is to support one MSI vector for QCA6390.

Depends-On:
1. ath11k: Fix crash caused by uninitialized TX ring
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

Baochen Qiang (1):
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

Quoted 7 lines

Carl Huang (6):
ath11k: get msi_data again after request_irq is called
ath11k: add CE and ext IRQ flag to indicate irq_handler
ath11k: use ATH11K_PCI_IRQ_DP_OFFSET for DP IRQ
ath11k: refactor multiple MSI vector implementation
ath11k: supports one MSI vector
ath11k: do not restore ASPM in case of single MSI vector

Quoted 6 lines

I assume this is v2 of Carl's patchset:

https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/

Can you provide a changelog? No need to resend because of that, just a reply to this thread enough.

Hi Kalle, this is the changelog:

1. changes by Kalle based on Carl's v1:

* add a log message for MSI vector count
* add a log message when disabling ASPM
* patch 1: fix error handling in ath11k_pci_probe()
* patch 1: simplify ath11k_pci_config_msi_data()
* patch 2: convert booleans to set_bit() & co for atomic access
* patch 2:__ath11k_pci_ext_irq_disable(): fix compilation
* patch 4: bool vectors_32_capability to set_bit() for atomic access
* patch 4: ath11k_mhi_get_msi(): don't use ? operator
* improve commits logs a bit

2. changes by Baochen based on Kalle's version:

Quoted 10 lines

* add a new patch: "ath11k: Set IRQ affinity to CPU0 in case of one MSI vector"
* address Jeff's comments on "ath11k: do not restore ASPM in case of single MSI vector":
change debug info from "disabling PCI ASPM ..." to "leaving
PCI ASPM disabled ..."
* change error handling in patch "ath11k: get msi_data again after request_irq is called"
* address Vasanth's comments on "ath11k: refactor multiple msi vector implementation"

Thanks. I shortly tested this patchset (commit 5d9dd5b3db33 in master-pending) on a NUC x86 box and Dell XPS 13 9310 laptop using QCA6390 hw2.0, both with 32 MSI vectors (VT-d enabled in BIOS) and 1 MSI vector (VT-d disabled in BIOS). No issues found, and also suspend works fine for me. So I think we have solved all the stability issues.

Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
#4 lore raw
Quoted 57 lines · Kalle Valo
Quoted 44 lines · Baochen Qiang
Quoted 20 lines · Kalle Valo
Quoted 10 lines · Baochen Qiang

This patch set is to support one MSI vector for QCA6390.

Depends-On:
1. ath11k: Fix crash caused by uninitialized TX ring

https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/

Baochen Qiang (1):
ath11k: Set IRQ affinity to CPU0 in case of one MSI vector

Quoted 7 lines

Carl Huang (6):
ath11k: get msi_data again after request_irq is called
ath11k: add CE and ext IRQ flag to indicate irq_handler
ath11k: use ATH11K_PCI_IRQ_DP_OFFSET for DP IRQ
ath11k: refactor multiple MSI vector implementation
ath11k: supports one MSI vector
ath11k: do not restore ASPM in case of single MSI vector

Quoted 6 lines

I assume this is v2 of Carl's patchset:

https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/

Can you provide a changelog? No need to resend because of that, just a reply to this thread enough.

Hi Kalle, this is the changelog:

1. changes by Kalle based on Carl's v1:

* add a log message for MSI vector count
* add a log message when disabling ASPM
* patch 1: fix error handling in ath11k_pci_probe()
* patch 1: simplify ath11k_pci_config_msi_data()
* patch 2: convert booleans to set_bit() & co for atomic access
* patch 2:__ath11k_pci_ext_irq_disable(): fix compilation
* patch 4: bool vectors_32_capability to set_bit() for atomic access
* patch 4: ath11k_mhi_get_msi(): don't use ? operator
* improve commits logs a bit

2. changes by Baochen based on Kalle's version:

Quoted 10 lines

* add a new patch: "ath11k: Set IRQ affinity to CPU0 in case of one MSI vector"
* address Jeff's comments on "ath11k: do not restore ASPM in case of single MSI vector":
change debug info from "disabling PCI ASPM ..." to "leaving
PCI ASPM disabled ..."
* change error handling in patch "ath11k: get msi_data again after request_irq is called"
* address Vasanth's comments on "ath11k: refactor multiple msi vector implementation"

Quoted 5 lines

Thanks. I shortly tested this patchset (commit 5d9dd5b3db33 in master-pending) on a NUC x86 box and Dell XPS 13 9310 laptop using QCA6390 hw2.0, both with 32 MSI vectors (VT-d enabled in BIOS) and 1 MSI vector (VT-d disabled in BIOS). No issues found, and also suspend works fine for me. So I think we have solved all the stability issues.

Great to hear that. But one more thing Kalle, have you met the issue which is originally reported here https://jira-dc.qualcomm.com/jira/browse/LUW-3 ?