Re: [PATCH v8] net: airoha: npu: use cacheline-sized buffers for mailbox DMA
Daniel Pawlik <[email protected]>
| Newsgroups | org.infradead.lists.linux-mediatek,org.infradead.lists.linux-arm-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <CALC2Apj7rQv=6uUqaqBjfJ9yO+VCddQqHB=yDhXH7+QUCh2JyA@mail.gmail.com> |
Hi Kuba, You may be right that the underlying issue is the SWIOTLB/bounce path on EN7581 rather than DMA_BIDIRECTIONAL being wrong in general. W1700K does show SWIOTLB enabled at boot. v8 does not switch to coherent DMA; it only rounds up mailbox payload allocations (dma_get_cache_alignment() in v9) and maps the same rounded length with DMA_BIDIRECTIONAL, while the mailbox length register still uses the original payload size. On this board, mapping only the payload size regresses probe back to 0.0 even with the larger allocation, so the rounded map length seems required here. I have not bisected whether that avoids SWIOTLB entirely or just makes the bounce/sync path behave. I agree a platform fix would be better if the bounce implementation is broken. For now this restores NPU probe on W1700K after 6f884eb. I'm happy to gather more data (dma mapping debug, swiotlb usage, etc.) if that helps track the root cause. Thanks, Daniel wt., 18 sie 2026 o 01:17 Jakub Kicinski <[email protected]> napisał(a): > > On Mon, 17 Aug 2026 11:06:01 +0200 Daniel Pawlik wrote: > > On EN7581 + MT7996 (Gemtek W1700K), mapping small caller buffers with > > DMA_BIDIRECTIONAL regresses NPU version probe: the mailbox completes > > successfully but WLAN_FUNC_GET_WAIT_NPU_VERSION reads as 0.0 instead of > > 0.1111. > > > > Allocate at least SMP_CACHE_BYTES for each mailbox payload and map > > ALIGN(len, SMP_CACHE_BYTES) with DMA_BIDIRECTIONAL while programming > > the original payload length into the mailbox length register. > > > > Tested on Quantum Fiber / Gemtek W1700K (EN7581 + MT7996), kernel > > 6.18.44, including two cold reboots and sustained WiFi use. > > To me the fact that this patch helps only proves that the swiotlb > implementation on this platform is wonky, no? > IOW AFAIU we are avoiding the bounce buffer so things work, but > the bounce buffer is still broken? -- Z poważaniem, Daniel Pawlik