[PATCH net v2] xdp, net: fix for construct skb by xdp inside xsk zc rx
Jesper Dangaard Brouer
jbrouer at redhat.com
Tue Jun 29 09:55:59 PDT 2021
On 28/06/2021 12.47, Maciej Fijalkowski wrote:
> +static __always_inline struct sk_buff *
> +xdp_construct_skb(struct xdp_buff *xdp, struct napi_struct *napi)
> +{
I don't like the generic name "xdp_construct_skb".
What about calling it "xdp_copy_construct_skb", because below is
memcpy'ing the data.
Functions that use this call free (or recycle) the memory backing the
packet, after calling this function.
(I'm open to other naming suggestions)
> + unsigned int metasize;
> + unsigned int datasize;
> + unsigned int headroom;
> + struct sk_buff *skb;
> + unsigned int len;
> +
> + /* this include metasize */
> + datasize = xdp->data_end - xdp->data_meta;
> + metasize = xdp->data - xdp->data_meta;
> + headroom = xdp->data_meta - xdp->data_hard_start;
> + len = xdp->data_end - xdp->data_hard_start;
> +
> + /* allocate a skb to store the frags */
> + skb = __napi_alloc_skb(napi, len, GFP_ATOMIC | __GFP_NOWARN);
> + if (unlikely(!skb))
> + return NULL;
> +
> + skb_reserve(skb, headroom);
> + memcpy(__skb_put(skb, datasize), xdp->data_meta, datasize);
> + if (metasize) {
> + __skb_pull(skb, metasize);
> + skb_metadata_set(skb, metasize);
> + }
> +
> + return skb;
> +}
More information about the linux-arm-kernel
mailing list