netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <brouer@redhat.com>
To: Alexander Duyck <alexander.duyck@gmail.com>
Cc: Netdev <netdev@vger.kernel.org>,
	BjörnTöpel <bjorn.topel@intel.com>,
	"Karlsson, Magnus" <magnus.karlsson@intel.com>,
	"Eugenia Emantayev" <eugenia@mellanox.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"John Fastabend" <john.fastabend@gmail.com>,
	"Eran Ben Elisha" <eranbe@mellanox.com>,
	"Saeed Mahameed" <saeedm@mellanox.com>,
	"Gal Pressman" <galp@mellanox.com>,
	"Daniel Borkmann" <borkmann@iogearbox.net>,
	"Alexei Starovoitov" <alexei.starovoitov@gmail.com>,
	"Tariq Toukan" <tariqt@mellanox.com>,
	brouer@redhat.com
Subject: Re: [bpf-next V5 PATCH 02/15] xdp: introduce xdp_return_frame API and use in cpumap
Date: Mon, 26 Mar 2018 21:06:48 +0200	[thread overview]
Message-ID: <20180326210648.5bc47fd9@redhat.com> (raw)
In-Reply-To: <CAKgT0UeZRHWOW4gsQD7OGWAD99ObHEqSUkvEdZjDG-iUY3wpSg@mail.gmail.com>

On Fri, 23 Mar 2018 09:35:47 -0700
Alexander Duyck <alexander.duyck@gmail.com> wrote:

> > diff --git a/include/net/xdp.h b/include/net/xdp.h
> > index b2362ddfa694..15b546325e31 100644
> > --- a/include/net/xdp.h
> > +++ b/include/net/xdp.h
> > @@ -33,16 +33,44 @@
> >   * also mandatory during RX-ring setup.
> >   */
> >
> > +enum mem_type {
> > +       MEM_TYPE_PAGE_SHARED = 0, /* Split-page refcnt based model */
> > +       MEM_TYPE_PAGE_ORDER0,     /* Orig XDP full page model */
> > +       MEM_TYPE_MAX,
> > +};
> > +
> > +struct xdp_mem_info {
> > +       u32 type; /* enum mem_type, but known size type */  
> 
> Do you really need to make t his a full u32 value for something that
> is likely never going to exceed a single digit value?

Could we please save these kind of optimizations for later, please?

I do have a plan for state compression later.  If you noticed, later
I'll add an 'id' member.   And in the ID patch, I'm actually
limiting the IDs to max 16-bit.  Thus, the plan is to allow for storing
type+id in e.g. a u32.  BUT I see no reason do this now and complicate
the patchset further. (When we do this state compression, I actually
want to run some perf tests, that kind of work can cause unfortunate
compiler and assembler level constructs what are slower...)

> > +       /* u32 id; will be added later in this patchset */  
> 
> Wouldn't it be better to just hold off and add it then instead of
> adding it as a comment?

I was trying to help the reviewer see where this was going.  The line
will be updated within the patchset, like the comment promise, so there
is not real danger of having it here.

[...]
> > +static inline
> > +void xdp_return_frame(void *data, struct xdp_mem_info *mem)
> > +{
> > +       if (mem->type == MEM_TYPE_PAGE_SHARED)
> > +               page_frag_free(data);
> > +
> > +       if (mem->type == MEM_TYPE_PAGE_ORDER0) {
> > +               struct page *page = virt_to_page(data); /* Assumes order0 page*/
> > +
> > +               put_page(page);
> > +       }  
> 
> Actually page_frag_free would probably work for either one.  Also is it
> safe to assume that the page is order 0? Are the only users of
> compound pages that support XDP also only supporting the page fragment
> setup?
> 
> Also you probably don't need put_page. It might be better to use
> __free_page if you are certain the pages are coming from the Rx path
> of drivers and don't have any special destructors associated with
> them.

Can we also keep these kind of optimization for later, please? (p.s. I
do know this, e.g. I put a comment in page_pool of using __free_pages()).


-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer

  reply	other threads:[~2018-03-26 19:06 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-23 12:17 [bpf-next V5 PATCH 00/15] XDP redirect memory return API Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 01/15] mlx5: basic XDP_REDIRECT forward support Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 02/15] xdp: introduce xdp_return_frame API and use in cpumap Jesper Dangaard Brouer
2018-03-23 16:35   ` Alexander Duyck
2018-03-26 19:06     ` Jesper Dangaard Brouer [this message]
2018-03-23 12:18 ` [bpf-next V5 PATCH 03/15] ixgbe: use xdp_return_frame API Jesper Dangaard Brouer
2018-03-23 16:46   ` Alexander Duyck
2018-03-23 12:18 ` [bpf-next V5 PATCH 04/15] xdp: move struct xdp_buff from filter.h to xdp.h Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 05/15] xdp: introduce a new xdp_frame type Jesper Dangaard Brouer
2018-03-23 17:11   ` Alexander Duyck
2018-03-23 12:18 ` [bpf-next V5 PATCH 06/15] tun: convert to use generic xdp_frame and xdp_return_frame API Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 07/15] virtio_net: " Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 08/15] bpf: cpumap convert to use generic xdp_frame Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 09/15] mlx5: register a memory model when XDP is enabled Jesper Dangaard Brouer
2018-03-23 16:18   ` Sergei Shtylyov
2018-03-23 12:18 ` [bpf-next V5 PATCH 10/15] xdp: rhashtable with allocator ID to pointer mapping Jesper Dangaard Brouer
2018-03-23 16:56   ` Alexander Duyck
2018-03-23 18:15     ` Jesper Dangaard Brouer
2018-03-23 18:22       ` Alexander Duyck
2018-03-26 21:04     ` Jesper Dangaard Brouer
2018-03-23 12:18 ` [bpf-next V5 PATCH 11/15] page_pool: refurbish version of page_pool code Jesper Dangaard Brouer
2018-03-23 13:28   ` Eric Dumazet
2018-03-26 14:09     ` Jesper Dangaard Brouer
2018-03-23 13:29   ` Eric Dumazet
2018-03-23 14:15     ` Jesper Dangaard Brouer
2018-03-23 14:55       ` Eric Dumazet
2018-03-26 15:19         ` Jesper Dangaard Brouer
2018-03-23 13:37   ` Eric Dumazet
2018-03-23 12:18 ` [bpf-next V5 PATCH 12/15] xdp: allow page_pool as an allocator type in xdp_return_frame Jesper Dangaard Brouer
2018-03-23 17:02   ` Alexander Duyck
2018-03-23 12:19 ` [bpf-next V5 PATCH 13/15] mlx5: use page_pool for xdp_return_frame call Jesper Dangaard Brouer
2018-03-23 12:19 ` [bpf-next V5 PATCH 14/15] xdp: transition into using xdp_frame for return API Jesper Dangaard Brouer
2018-03-23 17:29   ` Alexander Duyck
2018-03-26 11:42     ` Jesper Dangaard Brouer
2018-03-23 12:19 ` [bpf-next V5 PATCH 15/15] xdp: transition into using xdp_frame for ndo_xdp_xmit Jesper Dangaard Brouer

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=20180326210648.5bc47fd9@redhat.com \
    --to=brouer@redhat.com \
    --cc=alexander.duyck@gmail.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bjorn.topel@intel.com \
    --cc=borkmann@iogearbox.net \
    --cc=eranbe@mellanox.com \
    --cc=eugenia@mellanox.com \
    --cc=galp@mellanox.com \
    --cc=jasowang@redhat.com \
    --cc=john.fastabend@gmail.com \
    --cc=magnus.karlsson@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=saeedm@mellanox.com \
    --cc=tariqt@mellanox.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).