All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Cc: Jesper Dangaard Brouer <brouer@redhat.com>,
	Ioana Ciocoi Radulescu <ruxandra.radulescu@nxp.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"davem@davemloft.net" <davem@davemloft.net>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	"dsahern@gmail.com" <dsahern@gmail.com>,
	Camelia Alexandra Groza <camelia.groza@nxp.com>
Subject: Re: Explaining the XDP page-requirement (Was: [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support)
Date: Wed, 9 Jan 2019 16:25:11 +0200	[thread overview]
Message-ID: <20190109142511.GA26002@apalos> (raw)
In-Reply-To: <AM0PR04MB555472BCD12F50E30DCBCCDBEC8B0@AM0PR04MB5554.eurprd04.prod.outlook.com>

Hi Madalin,

> > > Thanks a lot for the info, will look into this. Do you have any
> > > pointers as to why the full page restriction exists in the first
> > > place? Sorry if it's a dumb question, but I haven't found details on
> > > this and I'd really like to understand it.
> > 
> > Hi Ioana,
> > 
> > I promised (offlist) that I would get back to you explaining the XDP
> > page-requirement...
> > 
> > There are several reasons for XDP to require frames are backed by a
> > page.  It started out with a focus on gaining speed via simplicity.
> > 
> > The overall requirement is: XDP frame in physical contigious memory
> >  - which is a requirement from BPF Direct-Access, for validating
> > correcness.
> >  - Implying you cannot split packet data over several pages.
> > 
> > An important part of the page-requirement is to allow creating SKB's
> > outside the driver code.  This happen today in both cpumap and veth
> > (when doing XDP_REDIRECT).  And we need to control and limit the
> > variations, to avoid having to handle all kind of SKB schemes.
> > Specifically we need enough tailroom for the skb-shared-info.
> > 
> > In the beginning we had the requirement of: 1-page per XDP frame.
> >  - Gave us a simplified memory model
> >  - Allow us to not touch atomic refcnt on page (always 1)
> >  - Fixed 256 bytes headroom
> >  - This gave us a lot of tailroom, expanding tail was trivial.
> > 
> > Eventually ixgbe+i40e force us to use a split-page model, allowing two
> > frames per page.
> >  - This started to complicate memory model
> >  - This unfortunately gave issue of unknown tailroom, which killed the
> >    tailroom expand option.
> >  - Changes XDP headroom to be variable (192 or 256 bytes)
> 
> Hi Jesper,
> 
> is the split page memory model supported now (with two frames per page)?

Yes, both Intel on their ixgbe and i40e driver and mellanox on mlx5 support
this.

Cheers
/Ilias

      reply	other threads:[~2019-01-09 14:25 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-26 16:27 [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 1/8] dpaa2-eth: Add basic " Ioana Ciocoi Radulescu
2018-11-27 15:45   ` Camelia Alexandra Groza
2018-11-28 16:11   ` David Ahern
2018-11-26 16:27 ` [PATCH v2 net-next 2/8] dpaa2-eth: Allow XDP header adjustments Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 4/8] dpaa2-eth: Release buffers back to pool on XDP_DROP Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 3/8] dpaa2-eth: Move function Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 5/8] dpaa2-eth: Map Rx buffers as bidirectional Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 6/8] dpaa2-eth: Add support for XDP_TX Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 7/8] dpaa2-eth: Cleanup channel stats Ioana Ciocoi Radulescu
2018-11-26 16:27 ` [PATCH v2 net-next 8/8] dpaa2-eth: Add xdp counters Ioana Ciocoi Radulescu
2018-11-28 16:11   ` David Ahern
2018-11-28  0:24 ` [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support David Miller
2018-11-28  9:18   ` Ioana Ciocoi Radulescu
2018-11-28 16:10     ` David Ahern
2018-11-28 18:57     ` David Miller
2018-12-05 15:45 ` Jesper Dangaard Brouer
2018-12-07 16:54   ` Ioana Ciocoi Radulescu
2018-12-07 17:20     ` Ilias Apalodimas
2018-12-07 17:42       ` Ioana Ciocoi Radulescu
2018-12-07 17:51         ` Ilias Apalodimas
2018-12-07 18:07           ` Ioana Ciocoi Radulescu
2018-12-13 17:43             ` Ioana Ciocoi Radulescu
2018-12-13 18:47               ` Ilias Apalodimas
2018-12-21 15:31             ` Explaining the XDP page-requirement (Was: [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support) Jesper Dangaard Brouer
2019-01-07 10:34               ` Ioana Ciocoi Radulescu
2019-01-07 10:45                 ` Ilias Apalodimas
2019-01-07 10:49                   ` Ioana Ciocoi Radulescu
2019-01-07 10:53                     ` Ilias Apalodimas
2019-01-09 14:22               ` Madalin-cristian Bucur
2019-01-09 14:25                 ` Ilias Apalodimas [this message]

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=20190109142511.GA26002@apalos \
    --to=ilias.apalodimas@linaro.org \
    --cc=brouer@redhat.com \
    --cc=camelia.groza@nxp.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=madalin.bucur@nxp.com \
    --cc=netdev@vger.kernel.org \
    --cc=ruxandra.radulescu@nxp.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.