From: Jesper Dangaard Brouer <brouer@redhat.com>
To: sameehj@amazon.com
Cc: "Jesper Dangaard Brouer" <brouer@redhat.com>,
netdev@vger.kernel.org, bpf@vger.kernel.org,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Daniel Borkmann" <borkmann@iogearbox.net>,
"Alexei Starovoitov" <alexei.starovoitov@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"John Fastabend" <john.fastabend@gmail.com>,
"Alexander Duyck" <alexander.duyck@gmail.com>,
"Jeff Kirsher" <jeffrey.t.kirsher@intel.com>,
"David Ahern" <dsahern@gmail.com>,
"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
"Lorenzo Bianconi" <lorenzo@kernel.org>,
"Saeed Mahameed" <saeedm@mellanox.com>,
"Tariq Toukan" <tariqt@mellanox.com>
Subject: [PATCH net-next v3 00/33] XDP extend with knowledge of frame size
Date: Fri, 08 May 2020 13:08:45 +0200 [thread overview]
Message-ID: <158893607924.2321140.16117992313983615627.stgit@firesoul> (raw)
(Send for net-next due to all the driver updates)
V3:
- Fix issue on virtio_net patch spotted by Jason Wang
- Adjust name for variable in mlx5 patch
- Collected more ACKs
V2:
- Fix bug in mlx5 for XDP_PASS case
- Collected nitpicks and ACKs from mailing list
V1:
- Fix bug in dpaa2
XDP have evolved to support several frame sizes, but xdp_buff was not
updated with this information. This have caused the side-effect that
XDP frame data hard end is unknown. This have limited the BPF-helper
bpf_xdp_adjust_tail to only shrink the packet. This patchset address
this and add packet tail extend/grow.
The purpose of the patchset is ALSO to reserve a memory area that can be
used for storing extra information, specifically for extending XDP with
multi-buffer support. One proposal is to use same layout as
skb_shared_info, which is why this area is currently 320 bytes.
When converting xdp_frame to SKB (veth and cpumap), the full tailroom
area can now be used and SKB truesize is now correct. For most
drivers this result in a much larger tailroom in SKB "head" data
area. The network stack can now take advantage of this when doing SKB
coalescing. Thus, a good driver test is to use xdp_redirect_cpu from
samples/bpf/ and do some TCP stream testing.
Use-cases for tail grow/extend:
(1) IPsec / XFRM needs a tail extend[1][2].
(2) DNS-cache responses in XDP.
(3) HAProxy ALOHA would need it to convert to XDP.
(4) Add tail info e.g. timestamp and collect via tcpdump
[1] http://vger.kernel.org/netconf2019_files/xfrm_xdp.pdf
[2] http://vger.kernel.org/netconf2019.html
---
Ilias Apalodimas (1):
net: netsec: Add support for XDP frame size
Jesper Dangaard Brouer (32):
xdp: add frame size to xdp_buff
bnxt: add XDP frame size to driver
sfc: add XDP frame size
mvneta: add XDP frame size to driver
net: XDP-generic determining XDP frame size
xdp: xdp_frame add member frame_sz and handle in convert_to_xdp_frame
xdp: cpumap redirect use frame_sz and increase skb_tailroom
veth: adjust hard_start offset on redirect XDP frames
veth: xdp using frame_sz in veth driver
dpaa2-eth: add XDP frame size
hv_netvsc: add XDP frame size to driver
qlogic/qede: add XDP frame size to driver
net: ethernet: ti: add XDP frame size to driver cpsw
ena: add XDP frame size to amazon NIC driver
mlx4: add XDP frame size and adjust max XDP MTU
net: thunderx: add XDP frame size
nfp: add XDP frame size to netronome driver
tun: add XDP frame size
vhost_net: also populate XDP frame size
virtio_net: add XDP frame size in two code paths
ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K
ixgbe: add XDP frame size to driver
ixgbevf: add XDP frame size to VF driver
i40e: add XDP frame size to driver
ice: add XDP frame size to driver
xdp: for Intel AF_XDP drivers add XDP frame_sz
mlx5: rx queue setup time determine frame_sz for XDP
xdp: allow bpf_xdp_adjust_tail() to grow packet size
xdp: clear grow memory in bpf_xdp_adjust_tail()
bpf: add xdp.frame_sz in bpf_prog_test_run_xdp().
selftests/bpf: adjust BPF selftest for xdp_adjust_tail
selftests/bpf: xdp_adjust_tail add grow tail tests
drivers/net/ethernet/amazon/ena/ena_netdev.c | 1
drivers/net/ethernet/amazon/ena/ena_netdev.h | 5 -
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 1
drivers/net/ethernet/cavium/thunder/nicvf_main.c | 1
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 7 +
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 30 ++++-
drivers/net/ethernet/intel/i40e/i40e_xsk.c | 2
drivers/net/ethernet/intel/ice/ice_txrx.c | 34 ++++--
drivers/net/ethernet/intel/ice/ice_xsk.c | 2
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 33 ++++-
drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 34 ++++--
drivers/net/ethernet/marvell/mvneta.c | 25 ++--
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 3
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 1
drivers/net/ethernet/mellanox/mlx5/core/en.h | 1
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 1
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 6 +
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 2
.../net/ethernet/netronome/nfp/nfp_net_common.c | 6 +
drivers/net/ethernet/qlogic/qede/qede_fp.c | 1
drivers/net/ethernet/qlogic/qede/qede_main.c | 2
drivers/net/ethernet/sfc/rx.c | 1
drivers/net/ethernet/socionext/netsec.c | 30 +++--
drivers/net/ethernet/ti/cpsw.c | 1
drivers/net/ethernet/ti/cpsw_new.c | 1
drivers/net/hyperv/netvsc_bpf.c | 1
drivers/net/hyperv/netvsc_drv.c | 2
drivers/net/tun.c | 2
drivers/net/veth.c | 28 +++--
drivers/net/virtio_net.c | 15 ++
drivers/vhost/net.c | 1
include/net/xdp.h | 27 ++++
include/net/xdp_sock.h | 11 ++
include/uapi/linux/bpf.h | 4 -
kernel/bpf/cpumap.c | 21 ---
net/bpf/test_run.c | 16 ++-
net/core/dev.c | 14 +-
net/core/filter.c | 15 ++
net/core/xdp.c | 7 +
.../selftests/bpf/prog_tests/xdp_adjust_tail.c | 123 +++++++++++++++++++-
.../testing/selftests/bpf/progs/test_adjust_tail.c | 30 -----
.../bpf/progs/test_xdp_adjust_tail_grow.c | 33 +++++
.../bpf/progs/test_xdp_adjust_tail_shrink.c | 30 +++++
44 files changed, 474 insertions(+), 139 deletions(-)
delete mode 100644 tools/testing/selftests/bpf/progs/test_adjust_tail.c
create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_adjust_tail_grow.c
create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_adjust_tail_shrink.c
--
next reply other threads:[~2020-05-08 11:09 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-08 11:08 Jesper Dangaard Brouer [this message]
2020-05-08 11:08 ` [PATCH net-next v3 01/33] xdp: add frame size to xdp_buff Jesper Dangaard Brouer
2020-05-08 11:08 ` [PATCH net-next v3 02/33] bnxt: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 03/33] sfc: add XDP frame size Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 04/33] mvneta: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 05/33] net: netsec: Add support for XDP frame size Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 06/33] net: XDP-generic determining " Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 07/33] xdp: xdp_frame add member frame_sz and handle in convert_to_xdp_frame Jesper Dangaard Brouer
2020-05-08 16:00 ` Jakub Kicinski
2020-05-08 11:09 ` [PATCH net-next v3 08/33] xdp: cpumap redirect use frame_sz and increase skb_tailroom Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 09/33] veth: adjust hard_start offset on redirect XDP frames Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 10/33] veth: xdp using frame_sz in veth driver Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 11/33] dpaa2-eth: add XDP frame size Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 12/33] hv_netvsc: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 13/33] qlogic/qede: " Jesper Dangaard Brouer
2020-05-08 11:09 ` [PATCH net-next v3 14/33] net: ethernet: ti: add XDP frame size to driver cpsw Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 15/33] ena: add XDP frame size to amazon NIC driver Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 16/33] mlx4: add XDP frame size and adjust max XDP MTU Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 17/33] net: thunderx: add XDP frame size Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 18/33] nfp: add XDP frame size to netronome driver Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 19/33] tun: add XDP frame size Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 20/33] vhost_net: also populate " Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 21/33] virtio_net: add XDP frame size in two code paths Jesper Dangaard Brouer
2020-05-09 2:15 ` Jason Wang
2020-05-08 11:10 ` [PATCH net-next v3 22/33] ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 23/33] ixgbe: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 24/33] ixgbevf: add XDP frame size to VF driver Jesper Dangaard Brouer
2020-05-08 16:01 ` Jakub Kicinski
2020-05-08 11:10 ` [PATCH net-next v3 25/33] i40e: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-08 11:10 ` [PATCH net-next v3 26/33] ice: " Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 27/33] xdp: for Intel AF_XDP drivers add XDP frame_sz Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 28/33] mlx5: rx queue setup time determine frame_sz for XDP Jesper Dangaard Brouer
2020-05-10 6:31 ` Tariq Toukan
2020-05-08 11:11 ` [PATCH net-next v3 29/33] xdp: allow bpf_xdp_adjust_tail() to grow packet size Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 30/33] xdp: clear grow memory in bpf_xdp_adjust_tail() Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 31/33] bpf: add xdp.frame_sz in bpf_prog_test_run_xdp() Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 32/33] selftests/bpf: adjust BPF selftest for xdp_adjust_tail Jesper Dangaard Brouer
2020-05-08 11:11 ` [PATCH net-next v3 33/33] selftests/bpf: xdp_adjust_tail add grow tail tests Jesper Dangaard Brouer
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=158893607924.2321140.16117992313983615627.stgit@firesoul \
--to=brouer@redhat.com \
--cc=alexander.duyck@gmail.com \
--cc=alexei.starovoitov@gmail.com \
--cc=borkmann@iogearbox.net \
--cc=bpf@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=dsahern@gmail.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jeffrey.t.kirsher@intel.com \
--cc=john.fastabend@gmail.com \
--cc=lorenzo@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=saeedm@mellanox.com \
--cc=sameehj@amazon.com \
--cc=tariqt@mellanox.com \
--cc=toke@redhat.com \
/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 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.