Re: [PATCH iwl-next] idpf: add flow-based XDP fallback for FWs without Tx FIFO support
From: YiFei Zhu <hidden>
Date: 2026-07-14 22:54:38
Also in:
intel-wired-lan, lkml
From the first days of XDP implementation in idpf, it relied and worked solely on top of the queue-based scheduling Tx mode, which basically means simple FIFO. However, turned out not every firmware supports this mode and XDP doesn't work there at all. Since the flow-based scheduling Tx mode is mandatory and supported by every FW, introduce a simple fallback guarded by a static key to not hurt the more performant mode. The FB mode generates a completion for each Tx descriptor and never guarantees that there won't be any out-of-order completions. Serialize that using a bitmap of completed descriptors and report contiguous blocks of free bits to match XDP and XSk expectations and avoid further code complication. The usage of a bitmap on hotpath might sound scary, but this fallback is able to reach around 70% of the QB mode's performance, which is comparable to what ice gives us. The main bottlenecks are unlikely()s and one completion per each descriptor, while in the QB mode we have one completion per batch (which might contain 64 or even 128 frames), plus the size of the completion descriptor is 8 bytes in this mode (4 bytes in the QB mode), which means a lot of additional PCI traffic. bloat-o-meter shows .text increase in about 2 Kb without adding new functions or uninlining any of the existing ones. I played a bunch with inlining and uninlining certain pieces or the whole fallback, but the compiler collapses and optimizes libeth templates so hardly so that each additional external call only makes things worse. Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Tested-by: YiFei Zhu <redacted>