On 09/12/2021 18.33, Alexander Lobakin wrote:
From: Jesper Dangaard Brouer <jbrouer@xxxxxxxxxx>
Date: Thu, 9 Dec 2021 09:19:46 +0100
On 08/12/2021 15.06, Alexander Lobakin wrote:
{__,}napi_alloc_skb() allocates and reserves additional NET_SKB_PAD
+ NET_IP_ALIGN for any skb.
OTOH, i40e_construct_skb_zc() currently allocates and reserves
additional `xdp->data - xdp->data_hard_start`, which is
XDP_PACKET_HEADROOM for XSK frames.
There's no need for that at all as the frame is post-XDP and will
go only to the networking stack core.
I disagree with this assumption, that headroom is not needed by netstack.
Why "no need for that at all" for netstack?
napi_alloc_skb() in our particular case will reserve 64 bytes, it is
sufficient for {TCP,UDP,SCTP,...}/IPv{4,6} etc.
My bad, I misunderstood you. I now see (looking at code) that (as you
say) 64 bytes of headroom *is* reserved (in bottom of __napi_alloc_skb).
Thus, the SKB *do* have headroom, so this patch should be fine.
Acked-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx>
Do watch out that 64 bytes is not always enough. Notice the define
LL_MAX_HEADER and MAX_HEADER in include/linux/netdevice.h (that tries to
determine worst-case header length) which is above 64 bytes. It is also
affected by HyperV and WiFi configs.