I’m working on device with a Xavier NX on a custom board. The board has an EWM-W306 WiFi/BT chip (SoC 88W8997) configured to use the WiFi over the PCIe interface.
I’m getting errors using the default WiFi drivers (L4T 32.7.1: Linux_for_Tegra/sources/kernel/kernel-4.9/drivers/net/wireless/marvell/mwifiex) and different versions of WiFi firmware:
[ 4.098841] using random host ethernet address
[ 4.199826] mwifiex_pcie: try set_consistent_dma_mask(32)
[ 4.200160] mwifiex_pcie: PCI memory map Virt0: ffffff8012200000 PCI memory map Virt2: f fffff8012400000
[ 4.203279] mwifiex: rx work enabled, cpus 6
[ 4.349799] using random self ethernet address
[ 4.349924] using random host ethernet address
[ 6.035082] random: crng init done
[ 6.035194] random: 7 urandom warning(s) missed due to ratelimiting
[ 6.184893] irq 88: nobody cared (try booting with the "irqpoll" option)
[ 6.185293] handlers:
[ 6.185353] [<ffffff8008c5b250>] tegra_mcerr_hard_irq threaded [<ffffff8008c5b400>] tegr a_mcerr_thread
[ 6.185552] Disabling IRQ #88
[ 6.185640] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffa898 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 6.186344] mc-err: vpr base=0:c6000000, size=20, ctrl=3, override:(a01a8340, fcee10c1, 1, 0)
[ 6.186537] mc-err: (255) csw_pcie4w: MC request violates VPR requirements
[ 6.186688] mc-err: status = 0x0ff740e1; addr = 0xffffffff00; hi_adr_reg=008
[ 6.186825] mc-err: secure: yes, access-type: write
[ 9.789065] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffb298 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
Ubuntu 18.04.6 LTS FOCUS-XXXXXX ttyTCU0
FOCUS-XXXXXX login: [ 36.773035] t19x-arm-smmu 12000000.iommu: Unhandled context fault: s mmu1, iova=0xfffa2980, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c 003, pmd=27125d003, pte=0
[ 69.779205] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffa098 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 112.784135] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffa098 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 165.813728] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffb298 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 228.824723] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffa298 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 417.787403] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfffb698 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 556.871657] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfff9c98 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 578.937986] t19x-arm-smmu 12000000.iommu: Unhandled context fault: smmu1, iova=0xfff8e98 0, fsynr=0x10013, cb=0, sid=90(0x5a - PCIE4), pgd=27125c003, pud=27125c003, pmd=27125d003, pte=0
[ 580.047981] Internal error: Oops - SP/PC alignment exception: 8a000000 [#1] PREEMPT SMP
[ 580.047993] Unable to handle kernel read from unreadable memory at virtual address fffff fc1f6b72a00
[ 580.048003] Mem abort info:
[ 580.048006] ESR = 0x8600000d
[ 580.048009] Exception class = IABT (current EL), IL = 32 bits
[ 580.048012] SET = 0, FnV = 0
[ 580.048014] EA = 0, S1PTW = 0
[ 580.048021] swapper pgtable: 4k pages, 39-bit VAs, pgd = ffffff800a210000
[ 580.048028] [ffffffc1f6b72a00] *pgd=00e8000240000711, *pud=00e8000240000711
I ported some of the latest commits from the WiFi directory (marvell) and I don’t see the above errors anymore, but the WiFi is unstable when configured in Access Point mode (it is crashing when I’m bringing the interface up and down fast).
I tried to port commits from the Linux_for_Tegra/sources/kernel/kernel-4.9/drivers/net/wireless/marvell/mwifiex, one by one but some of them require changes in the kernel core, which require changes on other modules also => hard or impossible to port.
My question is: How should I port commits of a driver on top of the latest L4T sources?
Thanks!