[PATCH RFC v1 00/15] XDP extend with knowledge of frame size

Jesper Dangaard Brouer
2020-03-17T17:29:22Z

Early RFC *before* I finish converting all drivers... so I can get
feedback that might affect the design...

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 not known. It also limited the BPF-helper
bpf_xdp_adjust_tail to only shrink the packet.

This patchset tries to 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.

---

Jesper Dangaard Brouer (15):
xdp: add frame size to xdp_buff
mvneta: add XDP frame size to driver
bnxt: add XDP frame size to driver
ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K
ixgbe: add XDP frame size to driver
sfc: fix XDP-redirect in this driver
sfc: add XDP frame size
xdp: allow bpf_xdp_adjust_tail() to grow packet size
xdp: clear grow memory in bpf_xdp_adjust_tail()
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
tun: add XDP frame size
veth: xdp using frame_sz in veth driver
dpaa2-eth: add XDP frame size

drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 1 +
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 17 ++++++++++++
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 17 +++++++-----
drivers/net/ethernet/marvell/mvneta.c | 1 +
drivers/net/ethernet/sfc/efx_common.c | 9 ++++--
drivers/net/ethernet/sfc/net_driver.h | 6 ++++
drivers/net/ethernet/sfc/rx.c | 3 +-
drivers/net/ethernet/sfc/rx_common.c | 6 ++--
drivers/net/tun.c | 2 +
drivers/net/veth.c | 15 +++++++++--
include/net/xdp.h | 31 +++++++++++++++++++++-
include/uapi/linux/bpf.h | 4 +--
kernel/bpf/cpumap.c | 21 ++-------------
net/core/dev.c | 14 ++++++----
net/core/filter.c | 24 ++++++++++++++++-
net/core/xdp.c | 7 +++++
17 files changed, 133 insertions(+), 46 deletions(-)

--