On Fri, 9 Aug 2024 14:20:25 +0200 Alexander Lobakin wrote: > But I think one solution could be: > > 1. We create some generic structure for cpumap, like > > struct cpumap_meta { > u32 magic; > u32 hash; > } > > 2. We add such check in the cpumap code > > if (xdpf->metalen == sizeof(struct cpumap_meta) && > <here we check magic>) > skb->hash = meta->hash; > > 3. In XDP prog, you call Rx hints kfuncs when they're available, obtain > RSS hash and then put it in the struct cpumap_meta as XDP frame metadata. I wonder what the overhead of skb metadata allocation is in practice. With Eric's "return skb to the CPU of origin" we can feed the lockless skb cache one the right CPU, and also feed the lockless page pool cache. I wonder if batched RFS wouldn't be faster than the XDP thing that requires all the groundwork.