[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <f5ce5610-443c-a2d9-43ef-d203f9afb0d8@redhat.com>
Date: Tue, 29 Jun 2021 18:55:59 +0200
From: Jesper Dangaard Brouer <jbrouer@...hat.com>
To: Maciej Fijalkowski <maciej.fijalkowski@...el.com>,
Xuan Zhuo <xuanzhuo@...ux.alibaba.com>
Cc: bpf@...r.kernel.org, netdev@...r.kernel.org,
Jesse Brandeburg <jesse.brandeburg@...el.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Giuseppe Cavallaro <peppe.cavallaro@...com>,
Alexandre Torgue <alexandre.torgue@...s.st.com>,
Jose Abreu <joabreu@...opsys.com>,
Maxime Coquelin <mcoquelin.stm32@...il.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
Björn Töpel <bjorn@...nel.org>,
Jeff Kirsher <jeffrey.t.kirsher@...el.com>,
Krzysztof Kazimierczak <krzysztof.kazimierczak@...el.com>,
Ong Boon Leong <boon.leong.ong@...el.com>,
intel-wired-lan@...ts.osuosl.org,
linux-stm32@...md-mailman.stormreply.com,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH net v2] xdp, net: fix for construct skb by xdp inside xsk
zc rx
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;
> +}
Powered by blists - more mailing lists