From: Kevin Laatz <kevin.laatz@intel.com>
To: netdev@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net,
bjorn.topel@intel.com, magnus.karlsson@intel.com
Cc: bpf@vger.kernel.com, intel-wired-lan@lists.osuosl.org,
bruce.richardson@intel.com, ciara.loftus@intel.com,
Kevin Laatz <kevin.laatz@intel.com>
Subject: [PATCH 00/11] XDP unaligned chunk placement support
Date: Thu, 20 Jun 2019 08:39:13 +0000 [thread overview]
Message-ID: <20190620083924.1996-1-kevin.laatz@intel.com> (raw)
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.
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 reply other threads:[~2019-06-20 16:53 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-20 8:39 Kevin Laatz [this message]
2019-06-20 8:39 ` [PATCH 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-06-20 8:39 ` [PATCH 02/11] ixgbe: " 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 ` [PATCH 04/11] i40e: add offset to zca_free Kevin Laatz
2019-06-20 8:39 ` [PATCH 05/11] ixgbe: " 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 ` [PATCH 07/11] libbpf: add flags to umem config 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 ` [PATCH 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-06-20 8:39 ` [PATCH 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-06-20 8:39 ` [PATCH 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-06-24 15:38 ` [PATCH 00/11] XDP unaligned chunk placement support Björn Töpel
2019-06-25 13:12 ` Laatz, Kevin
2019-06-25 18:44 ` Jonathan Lemon
2019-06-27 11:14 ` Laatz, Kevin
2019-06-27 21:25 ` Jakub Kicinski
2019-06-28 16:19 ` Laatz, Kevin
2019-06-28 16:51 ` Björn Töpel
2019-06-28 20:08 ` Jakub Kicinski
2019-06-28 20:25 ` Jakub Kicinski
2019-06-28 20:29 ` Jonathan Lemon
2019-07-01 14:58 ` Laatz, Kevin
[not found] ` <07e404eb-f712-b15a-4884-315aff3f7c7d@intel.com>
2019-07-01 21:20 ` Jakub Kicinski
2019-07-02 9:27 ` Richardson, Bruce
2019-07-02 16:33 ` Jonathan Lemon
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=20190620083924.1996-1-kevin.laatz@intel.com \
--to=kevin.laatz@intel.com \
--cc=ast@kernel.org \
--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: 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).