From: Laatz, Kevin <kevin.laatz@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH bpf-next v4 07/11] mlx5e: modify driver for handling offsets
Date: Mon, 19 Aug 2019 15:47:52 +0100 [thread overview]
Message-ID: <68cc44b5-7846-ec0b-4cb1-99dbe7faabcc@intel.com> (raw)
In-Reply-To: <390f80fc-3f8a-a9ed-6ac7-8a1a41621559@mellanox.com>
On 19/08/2019 15:36, Maxim Mikityanskiy wrote:
> On 2019-08-01 13:05, Maxim Mikityanskiy wrote:
>> On 2019-07-30 11:53, Kevin Laatz wrote:
>>> With the addition of the unaligned chunks option, we need to make sure we
>>> handle the offsets accordingly based on the mode we are currently running
>>> in. This patch modifies the driver to appropriately mask the address for
>>> each case.
>>>
>>> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
>> Please note that this patch doesn't actually add the support for the new
>> feature, because the validation checks in mlx5e_rx_get_linear_frag_sz
>> and mlx5e_validate_xsk_param need to be relaxed. Currently the frame
>> size of PAGE_SIZE is forced, and the fragment size is increased to
>> PAGE_SIZE in case of XDP (including XSK).
>>
>> After making the changes required to permit frame sizes smaller than
>> PAGE_SIZE, our Striding RQ feature will be used in a way we haven't used
>> it before, so we need to verify with the hardware team that this usage
>> is legitimate.
> After discussing it internally, we found a way to support unaligned XSK
> with Striding RQ, and the hardware is compatible with this way. I have
> performed some testing, and it looks working.
Great news! :-)
>
> Your patch only adds support for the new handle format to our driver,
> and I've made another patch that actually enables the new feature (makes
> mlx5e accept frame sizes different from PAGE_SIZE). It's currently on
> internal review.
Thanks for taking the time to prepare the patch!
>
> Please also don't forget to fix the s/_handle_/_adjust_/ typo.
I have fixed it in the next version (also currently on internal review).
Regards,
Kevin
>
>>> ---
>>> v3:
>>> ?? - Use new helper function to handle offset
>>>
>>> v4:
>>> ?? - fixed headroom addition to handle. Using xsk_umem_adjust_headroom()
>>> ???? now.
>>> ---
>>> ? drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c??? | 8 ++++++--
>>> ? drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 3 ++-
>>> ? 2 files changed, 8 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
>>> b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
>>> index b0b982cf69bb..d5245893d2c8 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
>>> @@ -122,6 +122,7 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct
>>> mlx5e_dma_info *di,
>>> ??????????????? void *va, u16 *rx_headroom, u32 *len, bool xsk)
>>> ? {
>>> ????? struct bpf_prog *prog = READ_ONCE(rq->xdp_prog);
>>> +??? struct xdp_umem *umem = rq->umem;
>>> ????? struct xdp_buff xdp;
>>> ????? u32 act;
>>> ????? int err;
>>> @@ -138,8 +139,11 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct
>>> mlx5e_dma_info *di,
>>> ????? xdp.rxq = &rq->xdp_rxq;
>>> ????? act = bpf_prog_run_xdp(prog, &xdp);
>>> -??? if (xsk)
>>> -??????? xdp.handle += xdp.data - xdp.data_hard_start;
>>> +??? if (xsk) {
>>> +??????? u64 off = xdp.data - xdp.data_hard_start;
>>> +
>>> +??????? xdp.handle = xsk_umem_handle_offset(umem, xdp.handle, off);
>>> +??? }
>>> ????? switch (act) {
>>> ????? case XDP_PASS:
>>> ????????? *rx_headroom = xdp.data - xdp.data_hard_start;
>>> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
>>> b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
>>> index 6a55573ec8f2..7c49a66d28c9 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
>>> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
>>> @@ -24,7 +24,8 @@ int mlx5e_xsk_page_alloc_umem(struct mlx5e_rq *rq,
>>> ????? if (!xsk_umem_peek_addr_rq(umem, &handle))
>>> ????????? return -ENOMEM;
>>> -??? dma_info->xsk.handle = handle + rq->buff.umem_headroom;
>>> +??? dma_info->xsk.handle = xsk_umem_adjust_offset(umem, handle,
>>> +????????????????????????????? rq->buff.umem_headroom);
>>> ????? dma_info->xsk.data = xdp_umem_get_data(umem, dma_info->xsk.handle);
>>> ????? /* No need to add headroom to the DMA address. In striding RQ
>>> case, we
>>>
next prev parent reply other threads:[~2019-08-19 14:47 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-20 9:09 [Intel-wired-lan] [PATCH 00/11] XDP unaligned chunk placement support Kevin Laatz
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-06-24 14:29 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 02/11] ixgbe: " Kevin Laatz
2019-06-24 14:30 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 03/11] xdp: add offset param to zero_copy_allocator Kevin Laatz
2019-06-24 14:31 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-24 19:23 ` Jakub Kicinski
2019-06-25 13:14 ` Laatz, Kevin
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 04/11] i40e: add offset to zca_free Kevin Laatz
2019-06-24 14:32 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 05/11] ixgbe: " Kevin Laatz
2019-06-24 14:32 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 06/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-06-24 15:29 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 07/11] libbpf: add flags to umem config Kevin Laatz
2019-06-24 15:30 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-06-24 15:31 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-06-24 15:35 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-06-24 15:36 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-06-20 9:09 ` [Intel-wired-lan] [PATCH 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-06-24 15:34 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 00/10] XDP unaligned chunk placement support Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 01/10] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-19 17:19 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 02/10] ixgbe: " Kevin Laatz
2019-07-19 17:20 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 03/10] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-19 17:21 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 04/10] i40e: modify driver for handling offsets Kevin Laatz
2019-07-19 17:22 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 05/10] ixgbe: " Kevin Laatz
2019-07-19 17:22 ` Bowers, AndrewX
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 06/10] libbpf: add flags to umem config Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 07/10] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 08/10] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 09/10] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-16 3:06 ` [Intel-wired-lan] [PATCH v2 10/10] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-07-23 21:08 ` [Intel-wired-lan] [PATCH v2 00/10] XDP unaligned chunk placement support Alexei Starovoitov
2019-07-24 13:25 ` Magnus Karlsson
2019-07-25 15:43 ` Jonathan Lemon
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 00/11] " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 02/11] ixgbe: " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 03/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-25 2:22 ` Jakub Kicinski
2019-07-25 17:01 ` Laatz, Kevin
2019-07-25 9:27 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-25 10:08 ` Maxim Mikityanskiy
2019-07-25 15:39 ` Jonathan Lemon
2019-07-26 9:47 ` Laatz, Kevin
2019-07-26 9:58 ` Laatz, Kevin
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 04/11] i40e: modify driver for handling offsets Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 05/11] ixgbe: " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 06/11] mlx5e: " Kevin Laatz
2019-07-25 10:15 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 07/11] libbpf: add flags to umem config Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-25 9:43 ` Maxim Mikityanskiy
2019-07-25 17:00 ` Laatz, Kevin
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-24 5:10 ` [Intel-wired-lan] [PATCH bpf-next v3 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-07-25 15:39 ` [Intel-wired-lan] [PATCH bpf-next v3 00/11] XDP unaligned chunk placement support Jonathan Lemon
2019-07-25 15:56 ` Richardson, Bruce
2019-07-25 17:30 ` Jonathan Lemon
2019-07-26 8:41 ` Bruce Richardson
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 02/11] ixgbe: " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 03/11] libbpf: add flags to umem config Kevin Laatz
2019-07-31 12:45 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-31 14:25 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-08-01 6:59 ` Andrii Nakryiko
2019-08-01 7:34 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-08-02 7:19 ` Andrii Nakryiko
2019-08-02 7:26 ` =?unknown-8bit?q?Bj=C3=B6rn_T=C3=B6pel?=
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 04/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-07-31 18:11 ` Jonathan Lemon
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 05/11] i40e: modify driver for handling offsets Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 06/11] ixgbe: " Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 07/11] mlx5e: " Kevin Laatz
2019-07-31 18:10 ` Jonathan Lemon
2019-08-01 10:05 ` Maxim Mikityanskiy
2019-08-19 14:36 ` Maxim Mikityanskiy
2019-08-19 14:47 ` Laatz, Kevin [this message]
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-07-31 18:26 ` Jonathan Lemon
2019-07-30 8:53 ` [Intel-wired-lan] [PATCH bpf-next v4 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-07-30 8:54 ` [Intel-wired-lan] [PATCH bpf-next v4 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 00/11] XDP unaligned chunk placement support Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 01/11] i40e: simplify Rx buffer recycle Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 02/11] ixgbe: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 03/11] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-08-22 18:43 ` Jonathan Lemon
2019-08-23 13:35 ` Laatz, Kevin
2019-08-27 7:36 ` Maxim Mikityanskiy
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 04/11] i40e: modify driver for handling offsets Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 05/11] ixgbe: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 06/11] mlx5e: " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 07/11] libbpf: add flags to umem config Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 08/11] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 09/11] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 10/11] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-08-22 1:44 ` [Intel-wired-lan] [PATCH bpf-next v5 11/11] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 00/12] XDP unaligned chunk placement support Kevin Laatz
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 01/12] i40e: simplify Rx buffer recycle Kevin Laatz
2019-08-30 15:37 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 02/12] ixgbe: " Kevin Laatz
2019-08-30 15:39 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 03/12] xsk: add support to allow unaligned chunk placement Kevin Laatz
2019-08-30 15:41 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 04/12] i40e: modify driver for handling offsets Kevin Laatz
2019-08-30 15:42 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 05/12] ixgbe: " Kevin Laatz
2019-08-30 15:42 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 06/12] mlx5e: " Kevin Laatz
2019-08-30 15:43 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 07/12] net/mlx5e: Allow XSK frames smaller than a page Kevin Laatz
2019-08-30 15:45 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 08/12] libbpf: add flags to umem config Kevin Laatz
2019-08-30 15:46 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 09/12] samples/bpf: add unaligned chunks mode support to xdpsock Kevin Laatz
2019-08-30 15:47 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 10/12] samples/bpf: add buffer recycling for unaligned chunks " Kevin Laatz
2019-08-30 15:49 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 11/12] samples/bpf: use hugepages in xdpsock app Kevin Laatz
2019-08-30 15:51 ` Jonathan Lemon
2019-08-27 2:25 ` [Intel-wired-lan] [PATCH bpf-next v6 12/12] doc/af_xdp: include unaligned chunk case Kevin Laatz
2019-08-30 15:51 ` Jonathan Lemon
2019-08-30 15:52 ` [Intel-wired-lan] [PATCH bpf-next v6 00/12] XDP unaligned chunk placement support Jonathan Lemon
2019-08-30 23:29 ` Daniel Borkmann
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=68cc44b5-7846-ec0b-4cb1-99dbe7faabcc@intel.com \
--to=kevin.laatz@intel.com \
--cc=intel-wired-lan@osuosl.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