On Thu, 30 Mar 2023 12:48:22 +0200, Paolo Abeni <pabeni@xxxxxxxxxx> wrote: > On Tue, 2023-03-28 at 20:04 +0800, Xuan Zhuo wrote: > > @@ -949,15 +1042,11 @@ static struct sk_buff *receive_small(struct net_device *dev, > > { > > struct sk_buff *skb; > > struct bpf_prog *xdp_prog; > > - unsigned int xdp_headroom = (unsigned long)ctx; > > - unsigned int header_offset = VIRTNET_RX_PAD + xdp_headroom; > > + unsigned int header_offset = VIRTNET_RX_PAD; > > unsigned int headroom = vi->hdr_len + header_offset; > > This changes (reduces) the headroom for non-xpd-pass skbs. > > [...] > > + buf += header_offset; > > + memcpy(skb_vnet_hdr(skb), buf, vi->hdr_len); > > AFAICS, that also means that receive_small(), for such packets, will > look for the virtio header in a different location. Is that expected? That is a mistake. Will fix. Thanks. > > Thanks. > > Paolo >