All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Joseph, Jithu" <jithu.joseph@intel.com>
To: "kuba@kernel.org" <kuba@kernel.org>
Cc: "Karlsson, Magnus" <magnus.karlsson@intel.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"dvorax.fuxbrumer@linux.intel.com"
	<dvorax.fuxbrumer@linux.intel.com>,
	"Fijalkowski, Maciej" <maciej.fijalkowski@intel.com>,
	"sassmann@redhat.com" <sassmann@redhat.com>,
	"Gomes, Vinicius" <vinicius.gomes@intel.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"Neftin, Sasha" <sasha.neftin@intel.com>,
	"Lifshits, Vitaly" <vitaly.lifshits@intel.com>,
	"Nguyen, Anthony L" <anthony.l.nguyen@intel.com>,
	"Desouza, Ederson" <ederson.desouza@intel.com>,
	"bjorn.topel@intel.com" <bjorn.topel@intel.com>
Subject: Re: [PATCH net-next 8/9] igc: Enable RX via AF_XDP zero-copy
Date: Wed, 14 Apr 2021 23:59:22 +0000	[thread overview]
Message-ID: <3ca4bc81f52a50d91c2ec55906c934244ee397c9.camel@intel.com> (raw)
In-Reply-To: <20210414162500.397ddb7f@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>

On Wed, 2021-04-14 at 16:25 -0700, Jakub Kicinski wrote:
> On Wed, 14 Apr 2021 23:14:04 +0000 Joseph, Jithu wrote:
> > > > +static struct sk_buff *igc_construct_skb_zc(struct igc_ring
> > > > *ring,
> > > > +					    struct xdp_buff
> > > > *xdp)
> > > > +{
> > > > +	unsigned int metasize = xdp->data - xdp->data_meta;
> > > > +	unsigned int datasize = xdp->data_end - xdp->data;
> > > > +	struct sk_buff *skb;
> > > > +
> > > > +	skb = __napi_alloc_skb(&ring->q_vector->napi,
> > > > +			       xdp->data_end - xdp-
> > > > >data_hard_start,
> > > > +			       GFP_ATOMIC | __GFP_NOWARN);
> > > > +	if (unlikely(!skb))
> > > > +		return NULL;
> > > > +
> > > > +	skb_reserve(skb, xdp->data - xdp->data_hard_start);
> > > > +	memcpy(__skb_put(skb, datasize), xdp->data, datasize);
> > > > +	if (metasize)
> > > > +		skb_metadata_set(skb, metasize);  
> > > 
> > > But you haven't actually copied the matadata into the skb,
> > > the metadata is before xdp->data, right?  
> > 
> > Today the igc driver doesn’t add any metadata (except for hw time
> > stamps explained later) . So for most part, xdp->data and xdp-
> > > data_meta point to the same address . That could be why in this  
> > initial implementation we are not copying  the metadata into skb
> > (as
> > the driver doesn’t add any).  
> 
> I don't think the timestamp is supposed to be part of the metadata.
> We're talking about BPF metadata here (added by the XDP prog).
> 
> > If the XDP program adds some metadata before xdp->data (and  xdp-
> > > data_meta reflects this), that is NOT copied into the SKB as
> > > you  
> > mentioned .   Is the expectation that meta_data (if any added by
> > the
> > bpf program) , should also be copied to the skb  in this XDP_PASS
> > flow
> > ? If so I can revise this patch to do that. 
> 
> Yes, I believe so.
> 
> > If h/w time-stamp is added by the NIC, then metasize will be non
> > zero
> > (as  xdp->data is advanced by the driver ) .  h/w ts  is still
> > copied
> > into "skb_hwtstamps(skb)->hwtstamp" by  the caller of this function
> > igc_dispatch_skb_zc()  . Do you still want it to be copied into
> > __skb_put(skb, ) area too ? 
> 
> If TS is prepended to the frame it should be saved (e.g. on the
> stack)
> before XDP program is called and gets the chance to overwrite it. The
> metadata length when XDP program is called should be 0.

When you say metadata length should be 0 above, Do you mean that when
bpf_prog_run_xdp(prog, xdp) is invoked, xdp->data and xdp->data_meta
should point to the same address ?


  reply	other threads:[~2021-04-14 23:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-09 16:43 [PATCH net-next 0/9][pull request] 1GbE Intel Wired LAN Driver Updates 2021-04-09 Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 1/9] igc: Move igc_xdp_is_enabled() Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 2/9] igc: Refactor __igc_xdp_run_prog() Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 3/9] igc: Refactor igc_clean_rx_ring() Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 4/9] igc: Refactor XDP rxq info registration Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 5/9] igc: Introduce TX/RX stats helpers Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 6/9] igc: Introduce igc_unmap_tx_buffer() helper Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 7/9] igc: Replace IGC_TX_FLAGS_XDP flag by an enum Tony Nguyen
2021-04-09 16:43 ` [PATCH net-next 8/9] igc: Enable RX via AF_XDP zero-copy Tony Nguyen
2021-04-10  0:36   ` Jakub Kicinski
2021-04-14 23:14     ` Joseph, Jithu
2021-04-14 23:25       ` Jakub Kicinski
2021-04-14 23:59         ` Joseph, Jithu [this message]
2021-04-15  0:31           ` Jakub Kicinski
2021-04-09 16:43 ` [PATCH net-next 9/9] igc: Enable TX " Tony Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3ca4bc81f52a50d91c2ec55906c934244ee397c9.camel@intel.com \
    --to=jithu.joseph@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=bjorn.topel@intel.com \
    --cc=davem@davemloft.net \
    --cc=dvorax.fuxbrumer@linux.intel.com \
    --cc=ederson.desouza@intel.com \
    --cc=kuba@kernel.org \
    --cc=maciej.fijalkowski@intel.com \
    --cc=magnus.karlsson@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=sasha.neftin@intel.com \
    --cc=sassmann@redhat.com \
    --cc=vinicius.gomes@intel.com \
    --cc=vitaly.lifshits@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.