[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e90c81b0-a419-49b0-4e2a-3d20956feb6e@intel.com>
Date: Tue, 25 Jun 2019 14:12:24 +0100
From: "Laatz, Kevin" <kevin.laatz@...el.com>
To: Björn Töpel <bjorn.topel@...il.com>
Cc: Netdev <netdev@...r.kernel.org>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Björn Töpel <bjorn.topel@...el.com>,
"Karlsson, Magnus" <magnus.karlsson@...el.com>,
bpf@...r.kernel.com,
intel-wired-lan <intel-wired-lan@...ts.osuosl.org>,
Bruce Richardson <bruce.richardson@...el.com>,
ciara.loftus@...el.com
Subject: Re: [PATCH 00/11] XDP unaligned chunk placement support
On 24/06/2019 16:38, Björn Töpel wrote:
> On Thu, 20 Jun 2019 at 18:55, Kevin Laatz <kevin.laatz@...el.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
>>
>
Powered by blists - more mailing lists