How to get PCIe MSI running instead of LEGACY mode (LS1028A)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to get PCIe MSI running instead of LEGACY mode (LS1028A)

1,672 Views
yuvarajesh_vall
Contributor II

Hi NXP team,

we are using a custom board based on LS1028A and linux(LSDK-19.09-update-311219-V4.14). The board uses a wifi modem(WLE600VX with Qualcomm-Atheros QCA9882 chipset) attached to PCIe. The driver(ath10k_pci) is required and loaded. Till here everything works fine. 

However, the driver is not running, because there is no wlan0, and moreover after system prompt was printed, there are additional driver errors from ath10_pci. please find the log below:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[ 9.271600] ath10k_pci 0002:04:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[ 9.279405] mengenbmc_hwmon mengenbmc_hwmon.0: MEN 1702_MEN_BMC hwmon device added
[ 9.424704] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
[ 9.510501] ath10k_pci 0002:04:00.0: Direct firmware load for ath10k/pre-cal-pci-0002:04:00.0.bin failed with error -2
[ 9.521292] ath10k_pci 0002:04:00.0: Falling back to user helper
[ 9.528843] ath10k_pci 0002:04:00.0: Direct firmware load for ath10k/cal-pci-0002:04:00.0.bin failed with error -2
[ 9.539247] ath10k_pci 0002:04:00.0: Falling back to user helper
[ 9.548190] ath10k_pci 0002:04:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/firmware-6.bin failed with error -2
[ 9.558943] ath10k_pci 0002:04:00.0: Falling back to user helper
[ 9.569473] ath10k_pci 0002:04:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043222ff sub 0000:0000
[ 9.578824] ath10k_pci 0002:04:00.0: kconfig debug 0 debugfs 0 tracing 0 dfs 0 testmode 0
[ 9.587787] ath10k_pci 0002:04:00.0: firmware ver 10.2.4-1.0-00037 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 a4a52adb
[ 9.632814] ath10k_pci 0002:04:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2
[ 9.643384] ath10k_pci 0002:04:00.0: Falling back to user helper
[ 9.651331] ath10k_pci 0002:04:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08

...

[ 11.826480] ath10k_pci 0002:04:00.0: failed to receive control response completion, polling..

[ 12.866479] ath10k_pci 0002:04:00.0: Service connect timeout
[ 12.872165] ath10k_pci 0002:04:00.0: failed to connect htt (-110)
[ 12.987618] ath10k_pci 0002:04:00.0: could not init core (-110)
[ 12.993637] ath10k_pci 0002:04:00.0: could not probe fw (-110)

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We contacted the manufacturer for missing binaries. They suggested us to change the interrupt mode(LEGACY) in driver

(drivers/net/wireless/ath/ath10k/pci.c). The issue is due to the platform requires this Interrupt with Legacy in order to bring up the WLE600VX modem.

From:

static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_AUTO;

To:

static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_LEGACY;

-------------------------------------------------------------------------------------------------------------------------------

diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index d790ea20b95d..b60e7779b9ff 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -38,7 +38,8 @@ enum ath10k_pci_reset_mode {
ATH10K_PCI_RESET_WARM_ONLY = 1,
};

-static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_AUTO;
+//static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_AUTO;
+static unsigned int ath10k_pci_irq_mode = ATH10K_PCI_IRQ_LEGACY;
static unsigned int ath10k_pci_reset_mode = ATH10K_PCI_RESET_AUTO;

module_param_named(irq_mode, ath10k_pci_irq_mode, uint, 0644);
--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

After changing IRQ mode to LEGACY allows to access the card and also SSIDs can be seen. 

Now the question is do you know where to look in order to get MSI running instead of using LEGACY interrupts?

Thank you in advance and have a nice day

Regards,

Rajesh

 

Tags (2)
0 Kudos
5 Replies

1,566 Views
ufedor
NXP Employee
NXP Employee

MSI is enabled by default in the NXP PCIe Linux driver - refer to the LSDK Documentation:

PCIe Linux Driver 

Please continue the issue discussion with the WiFi chipset manufacturer.

0 Kudos

1,566 Views
yuvarajesh_vall
Contributor II

Hi Fedor,

Thank you for your reply and sorry for late respond. 

As mentioned in the LSDK documentation. I did not find any source code for pci-layerscape.c under linux drivers. 

pci\drivers - qoriq-components/linux - Linux Tree for QorIQ support

can your share the link for the source code so that i will try wil 5.4 kernel.

Thank you 

0 Kudos

1,566 Views
ufedor
NXP Employee
NXP Employee

> As mentioned in the LSDK documentation

Sorry, what exactly is mentioned?

0 Kudos

1,566 Views
yuvarajesh_vall
Contributor II

I mean the source code file (pci-layerscape.c) which is mentioned in PCIe Linux Driver is exactly missing in LSDK2004. 

Is there any specified branch or tag for these sources?

0 Kudos