AnsweredAssumed Answered

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

Question asked by Yuvarajesh Valleru on May 11, 2020
Latest reply on Jun 1, 2020 by ufedor

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

 

 

 

Outcomes