On 6/21/25 4:49 PM, Bui Quang Minh wrote:
> This commit does not do any functional changes. It moves xdp->data
> adjustment for buffer other than first buffer to buf_to_xdp() helper so
> that the xdp_buff adjustment does not scatter over different functions.
> 
> Signed-off-by: Bui Quang Minh <minhquangbu...@gmail.com>
> ---
>  drivers/net/virtio_net.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 1eb237cd5d0b..4e942ea1bfa3 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -1159,7 +1159,19 @@ static struct xdp_buff *buf_to_xdp(struct virtnet_info 
> *vi,
>               return NULL;
>       }
>  
> -     xsk_buff_set_size(xdp, len);
> +     if (first_buf) {
> +             xsk_buff_set_size(xdp, len);
> +     } else {
> +             /* This is the same as xsk_buff_set_size but with the adjusted
> +              * xdp->data.
> +              */
> +             xdp->data = xdp->data_hard_start + XDP_PACKET_HEADROOM;
> +             xdp->data -= vi->hdr_len;
> +             xdp->data_meta = xdp->data;
> +             xdp->data_end = xdp->data + len;
> +             xdp->flags = 0;
> +     }
> +
>       xsk_buff_dma_sync_for_cpu(xdp);
>  
>       return xdp;
> @@ -1284,7 +1296,7 @@ static int xsk_append_merge_buffer(struct virtnet_info 
> *vi,
>                       goto err;
>               }
>  
> -             memcpy(buf, xdp->data - vi->hdr_len, len);
> +             memcpy(buf, xdp->data, len);
>  
>               xsk_buff_free(xdp);
>  

I'm unsure if this change is in the right direction because it almost
open-code the existing xsk_buff_set_size() helper - any changes there
should be reflected here, too.

Also AFAICS xdp->data will now carry a different value, and I guess such
change is user-visible from the attached xdp program. The commit message
should at least mentions such fact.

Thanks,

Paolo


Reply via email to