From: "Laatz, Kevin" <kevin.laatz@intel.com> To: "Björn Töpel" <bjorn.topel@gmail.com> Cc: Netdev <netdev@vger.kernel.org>, "Alexei Starovoitov" <ast@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Björn Töpel" <bjorn.topel@intel.com>, "Karlsson, Magnus" <magnus.karlsson@intel.com>, bpf@vger.kernel.com, intel-wired-lan <intel-wired-lan@lists.osuosl.org>, "Bruce Richardson" <bruce.richardson@intel.com>, ciara.loftus@intel.com Subject: Re: [PATCH 00/11] XDP unaligned chunk placement support Date: Tue, 25 Jun 2019 14:12:24 +0100 [thread overview] Message-ID: <e90c81b0-a419-49b0-4e2a-3d20956feb6e@intel.com> (raw) In-Reply-To: <CAJ+HfNijp8BgMgiOuohiuqDPz+spAutdG34gUqKzepYo2noE-w@mail.gmail.com> On 24/06/2019 16:38, Björn Töpel wrote: > On Thu, 20 Jun 2019 at 18:55, Kevin Laatz <kevin.laatz@intel.com> wrote: >> >> This patchset adds the ability to use unaligned chunks in the XDP umem. >> >> Currently, all chunk addresses passed to the umem are masked to be chunk >> size aligned (default is 2k, max is PAGE_SIZE). This limits where we can >> place chunks within the umem as well as limiting the packet sizes >> that are >> supported. >> >> The changes in this patchset removes these restrictions, allowing XDP >> to be >> more flexible in where it can place a chunk within a umem. By >> relaxing where >> the chunks can be placed, it allows us to use an arbitrary buffer >> size and >> place that wherever we have a free address in the umem. These changes >> add the >> ability to support jumboframes and make it easy to integrate with other >> existing frameworks that have their own memory management systems, >> such as >> DPDK. >> > > Thanks for working on this, Kevin and Ciara! > > I have some minor comments on the series, but in general I think it's > in good shape! > > For some reason the series was submitted twice (at least on my side)? Apologies for the confusion... The first set had a typo in the bpf mailing list address (.com vs .org). Will fix for the v2. > > > Thanks, > Björn Thanks for reviewing. Will address your comments in the v2. > >> Structure of the patchset: >> Patch 1: >> - Remove unnecessary masking and headroom addition during zero-copy Rx >> buffer recycling in i40e. This change is required in order for the >> buffer recycling to work in the unaligned chunk mode. >> >> Patch 2: >> - Remove unnecessary masking and headroom addition during >> zero-copy Rx buffer recycling in ixgbe. This change is required in >> order for the buffer recycling to work in the unaligned chunk mode. >> >> Patch 3: >> - Adds an offset parameter to zero_copy_allocator. This change will >> enable us to calculate the original handle in zca_free. This will be >> required for unaligned chunk mode since we can't easily mask back to >> the original handle. >> >> Patch 4: >> - Adds the offset parameter to i40e_zca_free. This change is needed >> for >> calculating the handle since we can't easily mask back to the >> original >> handle like we can in the aligned case. >> >> Patch 5: >> - Adds the offset parameter to ixgbe_zca_free. This change is >> needed for >> calculating the handle since we can't easily mask back to the >> original >> handle like we can in the aligned case. >> >> >> Patch 6: >> - Add infrastructure for unaligned chunks. Since we are dealing >> with unaligned chunks that could potentially cross a physical page >> boundary, we add checks to keep track of that information. We can >> later use this information to correctly handle buffers that are >> placed at an address where they cross a page boundary. >> >> Patch 7: >> - Add flags for umem configuration to libbpf >> >> Patch 8: >> - Modify xdpsock application to add a command line option for >> unaligned chunks >> >> Patch 9: >> - Addition of command line argument to pass in a desired buffer size >> and buffer recycling for unaligned mode. Passing in a buffer size >> will >> allow the application to use unaligned chunks with the unaligned >> chunk >> mode. Since we are now using unaligned chunks, we need to recycle >> our >> buffers in a slightly different way. >> >> Patch 10: >> - Adds hugepage support to the xdpsock application >> >> Patch 11: >> - Documentation update to include the unaligned chunk scenario. We >> need >> to explicitly state that the incoming addresses are only masked >> in the >> aligned chunk mode and not the unaligned chunk mode. >> >> Kevin Laatz (11): >> i40e: simplify Rx buffer recycle >> ixgbe: simplify Rx buffer recycle >> xdp: add offset param to zero_copy_allocator >> i40e: add offset to zca_free >> ixgbe: add offset to zca_free >> xsk: add support to allow unaligned chunk placement >> libbpf: add flags to umem config >> samples/bpf: add unaligned chunks mode support to xdpsock >> samples/bpf: add buffer recycling for unaligned chunks to xdpsock >> samples/bpf: use hugepages in xdpsock app >> doc/af_xdp: include unaligned chunk case >> >> Documentation/networking/af_xdp.rst | 10 +- >> drivers/net/ethernet/intel/i40e/i40e_xsk.c | 21 ++-- >> drivers/net/ethernet/intel/i40e/i40e_xsk.h | 3 +- >> .../ethernet/intel/ixgbe/ixgbe_txrx_common.h | 3 +- >> drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 21 ++-- >> include/net/xdp.h | 3 +- >> include/net/xdp_sock.h | 2 + >> include/uapi/linux/if_xdp.h | 4 + >> net/core/xdp.c | 11 ++- >> net/xdp/xdp_umem.c | 17 ++-- >> net/xdp/xsk.c | 60 +++++++++-- >> net/xdp/xsk_queue.h | 60 +++++++++-- >> samples/bpf/xdpsock_user.c | 99 ++++++++++++++----- >> tools/include/uapi/linux/if_xdp.h | 4 + >> tools/lib/bpf/xsk.c | 7 ++ >> tools/lib/bpf/xsk.h | 2 + >> 16 files changed, 241 insertions(+), 86 deletions(-) >> >> -- >> 2.17.1 >> >
WARNING: multiple messages have this Message-ID (diff)
From: Laatz, Kevin <kevin.laatz@intel.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [PATCH 00/11] XDP unaligned chunk placement support Date: Tue, 25 Jun 2019 14:12:24 +0100 [thread overview] Message-ID: <e90c81b0-a419-49b0-4e2a-3d20956feb6e@intel.com> (raw) In-Reply-To: <CAJ+HfNijp8BgMgiOuohiuqDPz+spAutdG34gUqKzepYo2noE-w@mail.gmail.com> On 24/06/2019 16:38, Bj?rn T?pel wrote: > On Thu, 20 Jun 2019 at 18:55, Kevin Laatz <kevin.laatz@intel.com> wrote: >> >> This patchset adds the ability to use unaligned chunks in the XDP umem. >> >> Currently, all chunk addresses passed to the umem are masked to be chunk >> size aligned (default is 2k, max is PAGE_SIZE). This limits where we can >> place chunks within the umem as well as limiting the packet sizes >> that are >> supported. >> >> The changes in this patchset removes these restrictions, allowing XDP >> to be >> more flexible in where it can place a chunk within a umem. By >> relaxing where >> the chunks can be placed, it allows us to use an arbitrary buffer >> size and >> place that wherever we have a free address in the umem. These changes >> add the >> ability to support jumboframes and make it easy to integrate with other >> existing frameworks that have their own memory management systems, >> such as >> DPDK. >> > > Thanks for working on this, Kevin and Ciara! > > I have some minor comments on the series, but in general I think it's > in good shape! > > For some reason the series was submitted twice (at least on my side)? Apologies for the confusion... The first set had a typo in the bpf mailing list address (.com vs .org). Will fix for the v2. > > > Thanks, > Bj?rn Thanks for reviewing. Will address your comments in the v2. > >> Structure of the patchset: >> Patch 1: >> ? - Remove unnecessary masking and headroom addition during zero-copy Rx >> ??? buffer recycling in i40e. This change is required in order for the >> ??? buffer recycling to work in the unaligned chunk mode. >> >> Patch 2: >> ? - Remove unnecessary masking and headroom addition during >> ??? zero-copy Rx buffer recycling in ixgbe. This change is required in >> ??? order for the? buffer recycling to work in the unaligned chunk mode. >> >> Patch 3: >> ? - Adds an offset parameter to zero_copy_allocator. This change will >> ??? enable us to calculate the original handle in zca_free. This will be >> ??? required for unaligned chunk mode since we can't easily mask back to >> ??? the original handle. >> >> Patch 4: >> ? - Adds the offset parameter to i40e_zca_free. This change is needed >> for >> ??? calculating the handle since we can't easily mask back to the >> original >> ??? handle like we can in the aligned case. >> >> Patch 5: >> ? - Adds the offset parameter to ixgbe_zca_free. This change is >> needed for >> ??? calculating the handle since we can't easily mask back to the >> original >> ??? handle like we can in the aligned case. >> >> >> Patch 6: >> ? - Add infrastructure for unaligned chunks. Since we are dealing >> ??? with unaligned chunks that could potentially cross a physical page >> ??? boundary, we add checks to keep track of that information. We can >> ??? later use this information to correctly handle buffers that are >> ??? placed at an address where they cross a page boundary. >> >> Patch 7: >> ? - Add flags for umem configuration to libbpf >> >> Patch 8: >> ? - Modify xdpsock application to add a command line option for >> ??? unaligned chunks >> >> Patch 9: >> ? - Addition of command line argument to pass in a desired buffer size >> ??? and buffer recycling for unaligned mode. Passing in a buffer size >> will >> ??? allow the application to use unaligned chunks with the unaligned >> chunk >> ??? mode. Since we are now using unaligned chunks, we need to recycle >> our >> ??? buffers in a slightly different way. >> >> Patch 10: >> ? - Adds hugepage support to the xdpsock application >> >> Patch 11: >> ? - Documentation update to include the unaligned chunk scenario. We >> need >> ??? to explicitly state that the incoming addresses are only masked >> in the >> ??? aligned chunk mode and not the unaligned chunk mode. >> >> Kevin Laatz (11): >> ? i40e: simplify Rx buffer recycle >> ? ixgbe: simplify Rx buffer recycle >> ? xdp: add offset param to zero_copy_allocator >> ? i40e: add offset to zca_free >> ? ixgbe: add offset to zca_free >> ? xsk: add support to allow unaligned chunk placement >> ? libbpf: add flags to umem config >> ? samples/bpf: add unaligned chunks mode support to xdpsock >> ? samples/bpf: add buffer recycling for unaligned chunks to xdpsock >> ? samples/bpf: use hugepages in xdpsock app >> ? doc/af_xdp: include unaligned chunk case >> >> ?Documentation/networking/af_xdp.rst?????????? | 10 +- >> ?drivers/net/ethernet/intel/i40e/i40e_xsk.c??? | 21 ++-- >> ?drivers/net/ethernet/intel/i40e/i40e_xsk.h??? |? 3 +- >> ?.../ethernet/intel/ixgbe/ixgbe_txrx_common.h? |? 3 +- >> ?drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c? | 21 ++-- >> ?include/net/xdp.h???????????????????????????? |? 3 +- >> ?include/net/xdp_sock.h??????????????????????? |? 2 + >> ?include/uapi/linux/if_xdp.h?????????????????? |? 4 + >> ?net/core/xdp.c??????????????????????????????? | 11 ++- >> ?net/xdp/xdp_umem.c??????????????????????????? | 17 ++-- >> ?net/xdp/xsk.c???????????????????????????????? | 60 +++++++++-- >> ?net/xdp/xsk_queue.h?????????????????????????? | 60 +++++++++-- >> ?samples/bpf/xdpsock_user.c??????????????????? | 99 ++++++++++++++----- >> ?tools/include/uapi/linux/if_xdp.h???????????? |? 4 + >> ?tools/lib/bpf/xsk.c?????????????????????????? |? 7 ++ >> ?tools/lib/bpf/xsk.h?????????????????????????? |? 2 + >> ?16 files changed, 241 insertions(+), 86 deletions(-) >> >> -- >> 2.17.1 >> >
next prev parent reply other threads:[~2019-06-25 13:12 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-20 8:39 [PATCH 00/11] XDP unaligned chunk placement support Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 01/11] i40e: simplify Rx buffer recycle Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 02/11] ixgbe: " Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 03/11] xdp: add offset param to zero_copy_allocator Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 04/11] i40e: add offset to zca_free Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 05/11] ixgbe: " Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 06/11] xsk: add support to allow unaligned chunk placement Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 07/11] libbpf: add flags to umem config Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-20 8:39 ` [PATCH 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz 2019-06-20 8:39 ` [Intel-wired-lan] " Kevin Laatz 2019-06-24 15:38 ` [PATCH 00/11] XDP unaligned chunk placement support Björn Töpel 2019-06-24 15:38 ` [Intel-wired-lan] " =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?= 2019-06-25 13:12 ` Laatz, Kevin [this message] 2019-06-25 13:12 ` Laatz, Kevin 2019-06-25 18:44 ` Jonathan Lemon 2019-06-25 18:44 ` [Intel-wired-lan] " Jonathan Lemon 2019-06-27 11:14 ` Laatz, Kevin 2019-06-27 11:14 ` [Intel-wired-lan] " Laatz, Kevin 2019-06-27 21:25 ` Jakub Kicinski 2019-06-27 21:25 ` [Intel-wired-lan] " Jakub Kicinski 2019-06-28 16:19 ` Laatz, Kevin 2019-06-28 16:19 ` [Intel-wired-lan] " Laatz, Kevin 2019-06-28 16:51 ` Björn Töpel 2019-06-28 16:51 ` [Intel-wired-lan] " =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?= 2019-06-28 20:08 ` Jakub Kicinski 2019-06-28 20:08 ` [Intel-wired-lan] " Jakub Kicinski 2019-06-28 20:25 ` Jakub Kicinski 2019-06-28 20:25 ` [Intel-wired-lan] " Jakub Kicinski 2019-06-28 20:29 ` Jonathan Lemon 2019-06-28 20:29 ` [Intel-wired-lan] " Jonathan Lemon 2019-07-01 14:44 ` Laatz, Kevin 2019-07-01 21:20 ` Jakub Kicinski 2019-07-01 21:20 ` [Intel-wired-lan] " Jakub Kicinski 2019-07-02 9:27 ` Richardson, Bruce 2019-07-02 9:27 ` [Intel-wired-lan] " Richardson, Bruce 2019-07-02 16:33 ` Jonathan Lemon 2019-07-02 16:33 ` [Intel-wired-lan] " Jonathan Lemon 2019-07-01 14:58 ` Laatz, Kevin 2019-07-01 14:58 ` [Intel-wired-lan] " Laatz, Kevin 2019-06-20 9:09 Kevin Laatz
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=e90c81b0-a419-49b0-4e2a-3d20956feb6e@intel.com \ --to=kevin.laatz@intel.com \ --cc=ast@kernel.org \ --cc=bjorn.topel@gmail.com \ --cc=bjorn.topel@intel.com \ --cc=bpf@vger.kernel.com \ --cc=bruce.richardson@intel.com \ --cc=ciara.loftus@intel.com \ --cc=daniel@iogearbox.net \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=magnus.karlsson@intel.com \ --cc=netdev@vger.kernel.org \ /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: linkBe 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.