From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,FROM_EXCESS_BASE64, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06215C32751 for ; Wed, 31 Jul 2019 14:25:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C4D0720679 for ; Wed, 31 Jul 2019 14:25:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iYCmpv1T" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726369AbfGaOZn (ORCPT ); Wed, 31 Jul 2019 10:25:43 -0400 Received: from mail-qt1-f193.google.com ([209.85.160.193]:40415 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726079AbfGaOZn (ORCPT ); Wed, 31 Jul 2019 10:25:43 -0400 Received: by mail-qt1-f193.google.com with SMTP id a15so66709538qtn.7; Wed, 31 Jul 2019 07:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=ilmbv3LwU3n/nvyIEEtNJYwKwa9nTuuolqGHBIVjFFI=; b=iYCmpv1Tqh1NkgYy767EfDxhSa80zx8RiW4kNKouex1nvzWg72oJ9X7GJM6K07ifwt 6VRnzR/m3gr3cd/1aWsA+gM62VS2ESES9PoHN8mEubZoj/YD4AX3/tL6YRGDjtW+Iqv8 fDq6mSefDaWt3FIU4QaUg+O4Ou6AFTxKdpLsBjA4Pk1lfkGPU4fFSGug2GMUNjRM/HJQ cLx/EFgiS2gna/Jxl9XCLTzfgWAZQhd0DdGevNnfcQ+3nnGURsS8xnwQ753P8ygP7rKA I5exc7qLGwULM20inqfhdqfinkrQJVPFDWGCImQgr3kf/Pd0JxFDDQoTGvwC9ZFxbdXj Mh4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=ilmbv3LwU3n/nvyIEEtNJYwKwa9nTuuolqGHBIVjFFI=; b=U6t65St2Aa9Qe48VjQS4f+tMQIMPC72v6CRJH1E6zS8Fl7gqcEXKP1JdwVcYFGBsDe UHO38U1jfcdMrJYXna0PrC0z5GtMaEI8dv78ebrjrhYmM71ApIM1uuHcJRcpzYUIv9/E XFpxAZx6MxG35jbB4pb2aqCa8L6UD8T3/KQw9dYqQyUcw2+5qiV+V5ILe5qhYsBy2ZAf AkmdYHZA2lZFkY+ODdlM/8V1tcieTM2he7hoV+tfXEyXnN5gHMqhtXIxfXFTTHcQRj0O 5lyRbNY6KI+6cGBby7ofI4pL3EdJ4zfn5LXiFSggwSQRinlQl+hTd1jG8BgzWKLnKhns 98CQ== X-Gm-Message-State: APjAAAUjmct9WUc1Ar9cOTmDWYqliTHw46Z1QuIzpx/iXcEoNkwLBIQB GX8cv4FLPqdsjQbSfHyi12sYBO24yClN26fXXUI= X-Google-Smtp-Source: APXvYqzxWgjc02cLAA2WDeeksryUHOXoxBOcJOOm7Xcnx36Do8x4tszpKdz8ALRxPxYQzxxL2NLzPIhRg0cfd5GDdNY= X-Received: by 2002:aed:2ca3:: with SMTP id g32mr87786724qtd.359.1564583141992; Wed, 31 Jul 2019 07:25:41 -0700 (PDT) MIME-Version: 1.0 References: <20190724051043.14348-1-kevin.laatz@intel.com> <20190730085400.10376-1-kevin.laatz@intel.com> <20190730085400.10376-4-kevin.laatz@intel.com> In-Reply-To: <20190730085400.10376-4-kevin.laatz@intel.com> From: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= Date: Wed, 31 Jul 2019 16:25:30 +0200 Message-ID: Subject: Re: [Intel-wired-lan] [PATCH bpf-next v4 03/11] libbpf: add flags to umem config To: Kevin Laatz Cc: Netdev , Alexei Starovoitov , Daniel Borkmann , =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , "Karlsson, Magnus" , Jakub Kicinski , Jonathan Lemon , Saeed Mahameed , Maxim Mikityanskiy , Stephen Hemminger , Bruce Richardson , ciara.loftus@intel.com, intel-wired-lan , bpf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On Tue, 30 Jul 2019 at 19:43, Kevin Laatz wrote: > > This patch adds a 'flags' field to the umem_config and umem_reg structs. > This will allow for more options to be added for configuring umems. > > The first use for the flags field is to add a flag for unaligned chunks > mode. These flags can either be user-provided or filled with a default. > > Signed-off-by: Kevin Laatz > Signed-off-by: Ciara Loftus > > --- > v2: > - Removed the headroom check from this patch. It has moved to the > previous patch. > > v4: > - modified chunk flag define > --- > tools/include/uapi/linux/if_xdp.h | 9 +++++++-- > tools/lib/bpf/xsk.c | 3 +++ > tools/lib/bpf/xsk.h | 2 ++ > 3 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/tools/include/uapi/linux/if_xdp.h b/tools/include/uapi/linux= /if_xdp.h > index faaa5ca2a117..a691802d7915 100644 > --- a/tools/include/uapi/linux/if_xdp.h > +++ b/tools/include/uapi/linux/if_xdp.h > @@ -17,6 +17,10 @@ > #define XDP_COPY (1 << 1) /* Force copy-mode */ > #define XDP_ZEROCOPY (1 << 2) /* Force zero-copy mode */ > > +/* Flags for xsk_umem_config flags */ > +#define XDP_UMEM_UNALIGNED_CHUNK_FLAG_SHIFT 15 > +#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << XDP_UMEM_UNALIGNED_CHUNK_FLA= G_SHIFT) > + > struct sockaddr_xdp { > __u16 sxdp_family; > __u16 sxdp_flags; > @@ -49,8 +53,9 @@ struct xdp_mmap_offsets { > #define XDP_OPTIONS 8 > > struct xdp_umem_reg { > - __u64 addr; /* Start of packet data area */ > - __u64 len; /* Length of packet data area */ > + __u64 addr; /* Start of packet data area */ > + __u64 len:48; /* Length of packet data area */ > + __u64 flags:16; /* Flags for umem */ > __u32 chunk_size; > __u32 headroom; > }; > diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c > index 5007b5d4fd2c..5e7e4d420ee0 100644 > --- a/tools/lib/bpf/xsk.c > +++ b/tools/lib/bpf/xsk.c > @@ -116,6 +116,7 @@ static void xsk_set_umem_config(struct xsk_umem_confi= g *cfg, > cfg->comp_size =3D XSK_RING_CONS__DEFAULT_NUM_DESCS; > cfg->frame_size =3D XSK_UMEM__DEFAULT_FRAME_SIZE; > cfg->frame_headroom =3D XSK_UMEM__DEFAULT_FRAME_HEADROOM; > + cfg->flags =3D XSK_UMEM__DEFAULT_FLAGS; > return; > } > > @@ -123,6 +124,7 @@ static void xsk_set_umem_config(struct xsk_umem_confi= g *cfg, > cfg->comp_size =3D usr_cfg->comp_size; > cfg->frame_size =3D usr_cfg->frame_size; > cfg->frame_headroom =3D usr_cfg->frame_headroom; > + cfg->flags =3D usr_cfg->flags; > } > > static int xsk_set_xdp_socket_config(struct xsk_socket_config *cfg, > @@ -182,6 +184,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void= *umem_area, __u64 size, > mr.len =3D size; > mr.chunk_size =3D umem->config.frame_size; > mr.headroom =3D umem->config.frame_headroom; > + mr.flags =3D umem->config.flags; > > err =3D setsockopt(umem->fd, SOL_XDP, XDP_UMEM_REG, &mr, sizeof(m= r)); > if (err) { > diff --git a/tools/lib/bpf/xsk.h b/tools/lib/bpf/xsk.h > index 833a6e60d065..44a03d8c34b9 100644 > --- a/tools/lib/bpf/xsk.h > +++ b/tools/lib/bpf/xsk.h > @@ -170,12 +170,14 @@ LIBBPF_API int xsk_socket__fd(const struct xsk_sock= et *xsk); > #define XSK_UMEM__DEFAULT_FRAME_SHIFT 12 /* 4096 bytes */ > #define XSK_UMEM__DEFAULT_FRAME_SIZE (1 << XSK_UMEM__DEFAULT_FRAME_S= HIFT) > #define XSK_UMEM__DEFAULT_FRAME_HEADROOM 0 > +#define XSK_UMEM__DEFAULT_FLAGS 0 > > struct xsk_umem_config { > __u32 fill_size; > __u32 comp_size; > __u32 frame_size; > __u32 frame_headroom; > + __u32 flags; And the flags addition here, unfortunately, requires symbol versioning of xsk_umem__create(). That'll be the first in libbpf! :-) Bj=C3=B6rn > }; > > /* Flags for the libbpf_flags field. */ > -- > 2.17.1 > > _______________________________________________ > Intel-wired-lan mailing list > Intel-wired-lan@osuosl.org > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?= Date: Wed, 31 Jul 2019 16:25:30 +0200 Subject: [Intel-wired-lan] [PATCH bpf-next v4 03/11] libbpf: add flags to umem config In-Reply-To: <20190730085400.10376-4-kevin.laatz@intel.com> References: <20190724051043.14348-1-kevin.laatz@intel.com> <20190730085400.10376-1-kevin.laatz@intel.com> <20190730085400.10376-4-kevin.laatz@intel.com> Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: On Tue, 30 Jul 2019 at 19:43, Kevin Laatz wrote: > > This patch adds a 'flags' field to the umem_config and umem_reg structs. > This will allow for more options to be added for configuring umems. > > The first use for the flags field is to add a flag for unaligned chunks > mode. These flags can either be user-provided or filled with a default. > > Signed-off-by: Kevin Laatz > Signed-off-by: Ciara Loftus > > --- > v2: > - Removed the headroom check from this patch. It has moved to the > previous patch. > > v4: > - modified chunk flag define > --- > tools/include/uapi/linux/if_xdp.h | 9 +++++++-- > tools/lib/bpf/xsk.c | 3 +++ > tools/lib/bpf/xsk.h | 2 ++ > 3 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/tools/include/uapi/linux/if_xdp.h b/tools/include/uapi/linux/if_xdp.h > index faaa5ca2a117..a691802d7915 100644 > --- a/tools/include/uapi/linux/if_xdp.h > +++ b/tools/include/uapi/linux/if_xdp.h > @@ -17,6 +17,10 @@ > #define XDP_COPY (1 << 1) /* Force copy-mode */ > #define XDP_ZEROCOPY (1 << 2) /* Force zero-copy mode */ > > +/* Flags for xsk_umem_config flags */ > +#define XDP_UMEM_UNALIGNED_CHUNK_FLAG_SHIFT 15 > +#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << XDP_UMEM_UNALIGNED_CHUNK_FLAG_SHIFT) > + > struct sockaddr_xdp { > __u16 sxdp_family; > __u16 sxdp_flags; > @@ -49,8 +53,9 @@ struct xdp_mmap_offsets { > #define XDP_OPTIONS 8 > > struct xdp_umem_reg { > - __u64 addr; /* Start of packet data area */ > - __u64 len; /* Length of packet data area */ > + __u64 addr; /* Start of packet data area */ > + __u64 len:48; /* Length of packet data area */ > + __u64 flags:16; /* Flags for umem */ > __u32 chunk_size; > __u32 headroom; > }; > diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c > index 5007b5d4fd2c..5e7e4d420ee0 100644 > --- a/tools/lib/bpf/xsk.c > +++ b/tools/lib/bpf/xsk.c > @@ -116,6 +116,7 @@ static void xsk_set_umem_config(struct xsk_umem_config *cfg, > cfg->comp_size = XSK_RING_CONS__DEFAULT_NUM_DESCS; > cfg->frame_size = XSK_UMEM__DEFAULT_FRAME_SIZE; > cfg->frame_headroom = XSK_UMEM__DEFAULT_FRAME_HEADROOM; > + cfg->flags = XSK_UMEM__DEFAULT_FLAGS; > return; > } > > @@ -123,6 +124,7 @@ static void xsk_set_umem_config(struct xsk_umem_config *cfg, > cfg->comp_size = usr_cfg->comp_size; > cfg->frame_size = usr_cfg->frame_size; > cfg->frame_headroom = usr_cfg->frame_headroom; > + cfg->flags = usr_cfg->flags; > } > > static int xsk_set_xdp_socket_config(struct xsk_socket_config *cfg, > @@ -182,6 +184,7 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area, __u64 size, > mr.len = size; > mr.chunk_size = umem->config.frame_size; > mr.headroom = umem->config.frame_headroom; > + mr.flags = umem->config.flags; > > err = setsockopt(umem->fd, SOL_XDP, XDP_UMEM_REG, &mr, sizeof(mr)); > if (err) { > diff --git a/tools/lib/bpf/xsk.h b/tools/lib/bpf/xsk.h > index 833a6e60d065..44a03d8c34b9 100644 > --- a/tools/lib/bpf/xsk.h > +++ b/tools/lib/bpf/xsk.h > @@ -170,12 +170,14 @@ LIBBPF_API int xsk_socket__fd(const struct xsk_socket *xsk); > #define XSK_UMEM__DEFAULT_FRAME_SHIFT 12 /* 4096 bytes */ > #define XSK_UMEM__DEFAULT_FRAME_SIZE (1 << XSK_UMEM__DEFAULT_FRAME_SHIFT) > #define XSK_UMEM__DEFAULT_FRAME_HEADROOM 0 > +#define XSK_UMEM__DEFAULT_FLAGS 0 > > struct xsk_umem_config { > __u32 fill_size; > __u32 comp_size; > __u32 frame_size; > __u32 frame_headroom; > + __u32 flags; And the flags addition here, unfortunately, requires symbol versioning of xsk_umem__create(). That'll be the first in libbpf! :-) Bj?rn > }; > > /* Flags for the libbpf_flags field. */ > -- > 2.17.1 > > _______________________________________________ > Intel-wired-lan mailing list > Intel-wired-lan at osuosl.org > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan