On Wed, Sep 22, 2021 at 09:56:06AM +0200, Magnus Karlsson wrote: > From: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> > > Optimize for the aligned case by precomputing the parameter values of > the xdp_buff_xsk and xdp_buff structures in the heads array. We can do > this as the heads array size is equal to the number of chunks in the > umem for the aligned case. Then every entry in this array will reflect > a certain chunk/frame and can therefore be prepopulated with the > correct values and we can drop the use of the free_heads stack. Note > that it is not possible to allocate more buffers than what has been > allocated in the aligned case since each chunk can only contain a > single buffer. > > We can unfortunately not do this in the unaligned case as one chunk > might contain multiple buffers. In this case, we keep the old scheme > of populating a heads entry every time it is used and using > the free_heads stack. > > Also move xp_release() and xp_get_handle() to xsk_buff_pool.h. They > were for some reason in xsk.c even though they are buffer pool > operations. > > Signed-off-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> My apologies if this has already been reported (I have not seen a report on netdev nor a report from Intel around it) but this patch as commit 94033cd8e73b ("xsk: Optimize for aligned case") in -next causes the following build failure with clang + x86_64 allmodconfig: net/xdp/xsk_buff_pool.c:465:15: error: variable 'xskb' is uninitialized when used here [-Werror,-Wuninitialized] xp_release(xskb); ^~~~ net/xdp/xsk_buff_pool.c:455:27: note: initialize the variable 'xskb' to silence this warning struct xdp_buff_xsk *xskb; ^ = NULL 1 error generated. Cheers, Nathan