linux-uconsole/drivers/net
Jesper Dangaard Brouer d4ecdbf7aa ice: Add XDP frame size to driver
This driver uses different memory models depending on PAGE_SIZE at
compile time. For PAGE_SIZE 4K it uses page splitting, meaning for
normal MTU frame size is 2048 bytes (and headroom 192 bytes). For
larger MTUs the driver still use page splitting, by allocating
order-1 pages (8192 bytes) for RX frames. For PAGE_SIZE larger than
4K, driver instead advance its rx_buffer->page_offset with the frame
size "truesize".

For XDP frame size calculations, this mean that in PAGE_SIZE larger
than 4K mode the frame_sz change on a per packet basis. For the page
split 4K PAGE_SIZE mode, xdp.frame_sz is more constant and can be
updated once outside the main NAPI loop.

The default setting in the driver uses build_skb(), which provides
the necessary headroom and tailroom for XDP-redirect in RX-frame
(in both modes).

There is one complication, which is legacy-rx mode (configurable via
ethtool priv-flags). There are zero headroom in this mode, which is a
requirement for XDP-redirect to work. The conversion to xdp_frame
(convert_to_xdp_frame) will detect this insufficient space, and
xdp_do_redirect() call will fail. This is deemed acceptable, as it
allows other XDP actions to still work in legacy-mode. In
legacy-mode + larger PAGE_SIZE due to lacking tailroom, we also
accept that xdp_adjust_tail shrink doesn't work.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Cc: intel-wired-lan@lists.osuosl.org
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Alexander Duyck <alexander.duyck@gmail.com>
Link: https://lore.kernel.org/bpf/158945347002.97035.328088795813704587.stgit@firesoul
2020-05-14 21:21:56 -07:00
..
appletalk docs: networking: convert ltpc.txt to ReST 2020-04-30 12:56:36 -07:00
arcnet docs: networking: convert arcnet.txt to ReST 2020-04-28 14:38:38 -07:00
bonding Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux 2020-05-09 01:05:30 -07:00
caif docs: networking: convert caif files to ReST 2020-04-28 14:38:38 -07:00
can
dsa net: dsa: felix: fix incorrect clamp calculation for burst 2020-05-14 18:02:02 -07:00
ethernet ice: Add XDP frame size to driver 2020-05-14 21:21:56 -07:00
fddi docs: networking: convert skfp.txt to ReST 2020-04-30 12:56:38 -07:00
fjes
hamradio net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
hippi
hyperv hv_netvsc: Add XDP frame size to driver 2020-05-14 21:21:54 -07:00
ieee802154
ipa net: ipa: Remove ipa_endpoint_stop{,_rx_dma} again 2020-05-08 22:35:56 -07:00
ipvlan net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
netdevsim
phy net: phy: mdio-moxart: remove unneeded include 2020-05-14 17:58:46 -07:00
plip docs: networking: convert PLIP.txt to ReST 2020-04-30 12:56:37 -07:00
ppp net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
slip
team net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
usb r8152: Use MAC address from device tree if available 2020-05-14 13:16:38 -07:00
vmxnet3
wan docs: networking: convert framerelay.txt to ReST 2020-04-28 14:39:46 -07:00
wimax
wireguard wireguard: send/receive: use explicit unlikely branch instead of implicit coalescing 2020-05-06 20:03:47 -07:00
wireless wireless-drivers-next patches for v5.8 2020-05-07 13:22:35 -07:00
xen-netback
bareudp.c
dummy.c
eql.c
geneve.c geneve: use the correct nlattr array in NL_SET_ERR_MSG_ATTR 2020-04-23 12:39:09 -07:00
gtp.c gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() 2020-05-01 15:34:09 -07:00
ifb.c
Kconfig docs: networking: device drivers: convert sb1000.txt to ReST 2020-05-01 12:24:42 -07:00
LICENSE.SRC
loopback.c
macsec.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-05-06 22:10:13 -07:00
macvlan.c netpoll: accept NULL np argument in netpoll_send_skb() 2020-05-07 18:11:07 -07:00
macvtap.c
Makefile
mdio.c
mii.c
net_failover.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c rionet: Fix use correct return type for ndo_start_xmit() 2020-04-30 12:15:13 -07:00
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c tun: Add XDP frame size 2020-05-14 21:21:55 -07:00
veth.c veth: Xdp using frame_sz in veth driver 2020-05-14 21:21:54 -07:00
virtio_net.c virtio_net: Add XDP frame size in two code paths 2020-05-14 21:21:55 -07:00
vrf.c net: partially revert dynamic lockdep key changes 2020-05-04 12:05:56 -07:00
vsockmon.c
vxlan.c vxlan: use the correct nlattr array in NL_SET_ERR_MSG_ATTR 2020-04-23 12:39:09 -07:00
xen-netfront.c