[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20191016081843.GA11653@apalos.home>
Date: Wed, 16 Oct 2019 11:18:43 +0300
From: Ilias Apalodimas <ilias.apalodimas@...aro.org>
To: Jakub Kicinski <jakub.kicinski@...ronome.com>
Cc: Lorenzo Bianconi <lorenzo@...nel.org>, netdev@...r.kernel.org,
lorenzo.bianconi@...hat.com, davem@...emloft.net,
thomas.petazzoni@...tlin.com, brouer@...hat.com,
matteo.croce@...hat.com, mw@...ihalf.com
Subject: Re: [PATCH v3 net-next 7/8] net: mvneta: make tx buffer array
agnostic
Hi Jakub,
On Tue, Oct 15, 2019 at 05:03:53PM -0700, Jakub Kicinski wrote:
> On Mon, 14 Oct 2019 12:49:54 +0200, Lorenzo Bianconi wrote:
> > Allow tx buffer array to contain both skb and xdp buffers in order to
> > enable xdp frame recycling adding XDP_TX verdict support
> >
> > Signed-off-by: Lorenzo Bianconi <lorenzo@...nel.org>
> > ---
> > drivers/net/ethernet/marvell/mvneta.c | 66 +++++++++++++++++----------
> > 1 file changed, 43 insertions(+), 23 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
> > index a79d81c9be7a..477ae6592fa3 100644
> > --- a/drivers/net/ethernet/marvell/mvneta.c
> > +++ b/drivers/net/ethernet/marvell/mvneta.c
> > @@ -561,6 +561,20 @@ struct mvneta_rx_desc {
> > };
> > #endif
> >
> > +enum mvneta_tx_buf_type {
> > + MVNETA_TYPE_SKB,
> > + MVNETA_TYPE_XDP_TX,
> > + MVNETA_TYPE_XDP_NDO,
> > +};
> > +
> > +struct mvneta_tx_buf {
> > + enum mvneta_tx_buf_type type;
>
> I'd be tempted to try to encode type on the low bits of the pointer,
> otherwise you're increasing the cache pressure here. I'm not 100% sure
> it's worth the hassle, perhaps could be a future optimization.
>
Since this is already offering a performance boost (since buffers are not
unmapped, but recycled and synced), we'll consider adding the buffer tracking
capability to the page_pool API. I don't think you'll see any performance
benefits on this device specifically (or any 1gbit interface), but your idea is
nice, if we add it on the page_pool API we'll try implementing it like that.
> > + union {
> > + struct xdp_frame *xdpf;
> > + struct sk_buff *skb;
> > + };
> > +};
>
Thanks
/Ilias
Powered by blists - more mailing lists