> -----Original Message----- > From: Ioana Ciocoi Radulescu > Sent: Friday, December 7, 2018 8:08 PM > To: 'Ilias Apalodimas' <ilias.apalodi...@linaro.org> > Cc: Jesper Dangaard Brouer <bro...@redhat.com>; > netdev@vger.kernel.org; da...@davemloft.net; Ioana Ciornei > <ioana.cior...@nxp.com>; dsah...@gmail.com; Camelia Alexandra Groza > <camelia.gr...@nxp.com> > Subject: RE: [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support > > > -----Original Message----- > > From: Ilias Apalodimas <ilias.apalodi...@linaro.org> > > Sent: Friday, December 7, 2018 7:52 PM > > To: Ioana Ciocoi Radulescu <ruxandra.radule...@nxp.com> > > Cc: Jesper Dangaard Brouer <bro...@redhat.com>; > > netdev@vger.kernel.org; da...@davemloft.net; Ioana Ciornei > > <ioana.cior...@nxp.com>; dsah...@gmail.com; Camelia Alexandra Groza > > <camelia.gr...@nxp.com> > > Subject: Re: [PATCH v2 net-next 0/8] dpaa2-eth: Introduce XDP support > > > > Hi Ioana, > > > > > > > > > > I only did a quick grep around the driver so i might be missing > something, > > > > but i can only see allocations via napi_alloc_frag(). XDP requires pages > > > > (either a single page per packet or a driver that does the page > > management > > > > of > > > > its own and fits 2 frames in a single page, assuming 4kb pages). > > > > Am i missing something on the driver? > > > > > > No, I guess I'm the one missing stuff, I didn't realise single page per > packet > > > is a hard requirement for XDP. Could you point me to more info on this? > > > > > > > Well if you don't have to use 64kb pages you can use the page_pool API > (only > > used from mlx5 atm) and get the xdp recycling for free. The memory > 'waste' > > for > > 4kb pages isn't too much if the platforms the driver sits on have decent > > amounts > > of memory (and the number of descriptors used is not too high). > > We still have work in progress with Jesper (just posted an RFC)with > > improvements > > on the API. > > Using it is fairly straightforward. This is a patchset on marvell's mvneta > > driver with the API changes needed: > > https://www.spinics.net/lists/netdev/msg538285.html > > > > If you need 64kb pages you would have to introduce page recycling and > > sharing > > like intel/mlx drivers on your driver. > > 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.
After a quick glance, not sure we can use page_pool API. The problem is our driver is not ring-based: we have a single buffer pool used by all Rx queues, so using page_pool allocations would imply adding a layer of synchronization in our driver. I'm still trying to figure out how deep is the trouble we're in for not using single page per packet in our driver, considering we don't support XDP_REDIRECT yet. Guess I'll wait for Jasper's answer for this. Thanks, Ioana