ath11k: QCN9074 public firmware stalls at QMI cap request on C-360
Christopher Griffin
christophergriffin05 at gmail.com
Thu Oct 8 19:26:54 PDT 2026
To: Jeff Johnson <jjohnson at kernel.org>
Cc: ath11k at lists.infradead.org, linux-wireless at vger.kernel.org
Subject: ath11k: QCN9074 public firmware stalls at QMI cap request on C-360
Hello Jeff, hello ath11k list,
I'm bringing up OpenWrt on the Arista C-360 access point (IPQ8076A with
two QCN9074 cards, 17cb:1104). The IPQ8074 radios run the public
firmware fine. The two QCN9074 cards don't, with any public QCN9074
build: 15 builds, WLAN.HK.2.5.0.1 to 2.9.0.1.
With every one of them, each card gets as far as:
- MHI mission mode;
- QMI connected;
- host-cap and the memory exchange completed;
- FW_MEM_READY.
Then it never answers the target-capability request.
The firmware Arista ships, WLAN.HK.2.5.r4-00683, works on the same
cards with the same ath11k: it answers in 3.7 ms and runs normally.
Swapping files shows that amss.bin decides it, not m3.bin: the vendor
amss.bin with a public m3.bin works, and a public amss.bin with the
vendor m3.bin fails.
It reproduces 100% (every boot, both cards) on:
- Linux 6.18.55 with ath11k from wireless 7.2 (OpenWrt main);
- linux-firmware 20260910 (WLAN.HK.2.9.0.1-02146).
It also fails on OpenWrt 25.12 (Linux 6.12, ath11k from 6.18.55).
Failing, 2.9.0.1-02146, debug_mask=0x1060, card 0001:01:00.0
(timestamps in seconds; "ath11k_pci 0001:01:00.0:" removed):
170.464 qmi wifi fw qmi service connected
170.466 qmi indication register request
170.467 qmi host cap request
170.472 qmi firmware request memory request
170.476 qmi mem seg type 1 size 36700160
170.476 qmi mem seg type 4 size 3784704
170.476 qmi mem seg type 3 size 1048576
170.476 qmi mem seg type 9 size 8388608
170.476 qmi mem seg type 10 size 8192
170.476 qmi ignore invalid mem req type 9
170.481 qmi ignore invalid mem req type 10
170.488 qmi req mem_seg[0] 0x0000000054800000 36700160 1
170.488 qmi req mem_seg[1] 0x0000000000000000 3784704 4
170.488 qmi req mem_seg[2] 0x0000000057500000 1048576 3
170.488 qmi respond memory request delayed 0
170.491 qmi firmware memory ready indication
170.491 qmi target cap request
180.975 failed to wait qmi cap request: -110
180.975 failed to request qmi target capabilities: -110
Working, the same system, driver and debug mask, with Arista's
WLAN.HK.2.5.r4-00683-QCAHKSWPL_SILICONZ-1.691405.6.706957.1:
229.140 qmi host cap request
229.148 qmi mem seg type 1 size 36700160
229.148 qmi mem seg type 4 size 3768320
229.148 qmi mem seg type 3 size 1048576
229.150 qmi firmware memory ready indication
229.150 qmi target cap request
229.153 fw_version 0x250affff fw_build_timestamp 2025-03-21 04:01
229.162 boot using board name 'bus=pci,qmi-chip-id=0,
qmi-board-id=255,variant=Arista-C360-pcie1'
229.263 qmi firmware init done
Hardware:
SoC IPQ8076A (soc_id 391, rev 2.0), 2 GiB RAM
card 0 0000:01:00.0, PCIe Gen3 x1 (root port 17cb:1002)
card 1 0001:01:00.0, PCIe Gen2 x1 (root port 17cb:0302)
cards 17cb:1104, subsystem 17cb:1104, revision 01
QMI chip_id 0x0 chip_family 0x0 board_id 0xff
soc_id 0xffffffff (as reported with the vendor firmware)
memory fixed regions (memory-region), fw memory mode 0:
card 0 0x51100000, card 1 0x54800000, 0x3700000 each;
M3 dump at 0x53e00000 and 0x57500000
The vendor system (QSDK, qca_ol.ko, Linux 4.4.60) describes each card
as "qcom,cnss-qcn9000" with:
base-addr 0x51100000 / 0x54800000
hremote-size 0x2d00000 (45 MiB)
m3-dump-addr 0x53e00000 / 0x57500000
etr-addr 0x53f00000 / 0x57600000
caldb-addr 0x54000000 / 0x57700000, caldb-size 0x800000
tgt-mem-mode 0
board_id 0xab / 0xaa
qrtr_node_id 0x20 / 0x21
It also gives each card's MHI a 24 MiB shared-dma-pool (0x57f00000,
0x59700000) and LOOPBACK, DIAG and IPCR channels. It has no pageable
region.
Firmware tested, every one failing the same way:
2.5.0.1 -01100 -01192 -01201 -01208 (SILICONZ-1), -03982 (SILICONZ-3)
2.6.0.1 -00861 -00883 -01081
2.7.0.1 -01744 -02409
2.9.0.1 -01837 -01862 -01890 -01977 -02146
(2.9.0.1-02175-SILICONZ-2 has 02146's amss.bin, so it was not tested
separately)
Ruled out, each tested with the same failure:
- memory mode 0 (fixed) and 2 (dynamic);
- CALDB at 0, and inside the region;
- the type 9 and 10 segments given inside the region;
- the reserved memory zeroed;
- host cap without m3_support and m3_cache_support (as cnss2);
- 1 and 16 MSI vectors;
- a single card on the bus;
- ath11k_ahb unloaded;
- the vendor's PCIe CLKREQ/WAKE and PTA pin functions;
- two ath11k versions.
For comparison, OpenWrt supports the Xiaomi AX9000 (IPQ8072A + QCN9074)
on the same ath11k with the public firmware. Its board data is keyed
qmi-board-id=255, so its card also has an unprogrammed board ID.
After the timeout the firmware is alive: MHI stays in mission mode M0
and the IPCR channels are up. A forced RDDM dump of each card (about
46 MB, ATH11K-FW-DUMP v2) shows a thread table with wlan_platform
(entry in a paged segment), DLPager_main, IPCRTR, diag_task and MHI
CORE, but none of the main WLAN threads. The rest is hashed ulog we
can't read.
Three questions:
1. What do the public QCN9074 builds wait for between FW_MEM_READY and
the capability response, and could someone decode the ulog in our
RDDM dumps? I can send them.
2. Is there a known board, module or host requirement that these
Arista modules don't meet and that the 2.5.r4 build doesn't need?
3. Would Qualcomm consider a QCN9074 build in linux-firmware that runs
on these modules? Today OpenWrt can use these radios only by copying
the vendor's firmware from the unit's own flash.
I can test any firmware build or debug option on the hardware. Full
logs are available on request.
Firmware files present during the failing run
(md5, path under /lib/firmware/ath11k/):
1f7baaccad424a768233eaabb684b5ad IPQ8074/hw2.0/board-2.bin
90654417600d4438918ec9e5e42fcd3b QCN9074/hw1.0/amss.bin
16c532c984d22895601d2107c11920be QCN9074/hw1.0/m3.bin
efcfc16a938d16875500bf9250bc5a52 QCN9074/hw1.0/board-2.bin
uname -a: Linux OpenWrt 6.18.55 #0 SMP aarch64 GNU/Linux
Thank you,
Christopher Griffin
More information about the ath11k
mailing list