On Wed, Jan 08, 2025 at 04:34:36PM -0800, Stanislav Fomichev wrote: > Commit 86e25f40aa1e ("net: napi: Add napi_config") moved napi->napi_id > assignment to a later point in time (napi_hash_add_with_id). This breaks > __xdp_rxq_info_reg which copies napi_id at an earlier time and now > stores 0 napi_id. It also makes sk_mark_napi_id_once_xdp and > __sk_mark_napi_id_once useless because they now work against 0 napi_id. > Since sk_busy_loop requires valid napi_id to busy-poll on, there is no way > to busy-poll AF_XDP sockets anymore. > > Bring back the ability to busy-poll on XSK by resolving socket's napi_id > at bind time. This relies on relatively recent netif_queue_set_napi, > but (assume) at this point most popular drivers should have been converted. > This also removes per-tx/rx cycles which used to check and/or set > the napi_id value. > > Confirmed by running a busy-polling AF_XDP socket > (github.com/fomichev/xskrtt) on mlx5 and looking at BusyPollRxPackets > from /proc/net/netstat. Thanks Stanislav for finding and fixing this. I've CC'd Alex who reported a bug a couple weeks ago that might be fixed by this change. Alex: would you mind applying this patch to your tree to see if this solves the issue you reported [1] ? [1]: https://lore.kernel.org/netdev/DM8PR12MB5447837576EA58F490D6D4BFAD052@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/