linux/drivers/net
Jesper Dangaard Brouer 735fc4054b xdp: change ndo_xdp_xmit API to support bulking
This patch change the API for ndo_xdp_xmit to support bulking
xdp_frames.

When kernel is compiled with CONFIG_RETPOLINE, XDP sees a huge slowdown.
Most of the slowdown is caused by DMA API indirect function calls, but
also the net_device->ndo_xdp_xmit() call.

Benchmarked patch with CONFIG_RETPOLINE, using xdp_redirect_map with
single flow/core test (CPU E5-1650 v4 @ 3.60GHz), showed
performance improved:
 for driver ixgbe: 6,042,682 pps -> 6,853,768 pps = +811,086 pps
 for driver i40e : 6,187,169 pps -> 6,724,519 pps = +537,350 pps

With frames avail as a bulk inside the driver ndo_xdp_xmit call,
further optimizations are possible, like bulk DMA-mapping for TX.

Testing without CONFIG_RETPOLINE show the same performance for
physical NIC drivers.

The virtual NIC driver tun sees a huge performance boost, as it can
avoid doing per frame producer locking, but instead amortize the
locking cost over the bulk.

V2: Fix compile errors reported by kbuild test robot <lkp@intel.com>
V4: Isolated ndo, driver changes and callers.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2018-05-24 18:36:15 -07:00
..
appletalk
arcnet
bonding Revert "bonding: allow carrier and link status to determine link state" 2018-05-16 14:03:50 -04:00
caif drivers/net: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
can can: hi311x: Work around TX complete interrupt erratum 2018-05-10 18:25:30 +02:00
dsa drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
ethernet xdp: change ndo_xdp_xmit API to support bulking 2018-05-24 18:36:15 -07:00
fddi
fjes
hamradio mkiss: remove redundant check for len > 0 2018-04-25 14:12:06 -04:00
hippi
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-11 20:53:22 -04:00
ieee802154 net: ieee802154: mcr20a: do not leak resources on error path 2018-04-23 20:56:23 +02:00
ipvlan net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
netdevsim devlink: convert occ_get op to separate registration 2018-04-08 12:45:57 -04:00
phy drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
plip
ppp pppoe: check sockaddr length in pppoe_connect() 2018-04-23 21:12:15 -04:00
slip slip: Check if rstate is initialized before uncompressing 2018-04-11 10:33:46 -04:00
team Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-04-24 23:59:11 -04:00
usb drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
vmxnet3 vmxnet3: fix incorrect dereference when rxvlan is disabled 2018-04-19 13:59:05 -04:00
wan
wimax net: drivers/net: Remove unnecessary skb_copy_expand OOM messages 2018-03-15 14:28:03 -04:00
wireless We only have a few fixes this time: 2018-05-10 17:34:50 -04:00
xen-netback drivers/net: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
dummy.c net: Do not take net_rwsem in __rtnl_link_unregister() 2018-03-31 22:24:58 -04:00
eql.c
geneve.c geneve: configure MTU based on a lower device 2018-04-20 11:20:05 -04:00
gtp.c net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
ifb.c net: Do not take net_rwsem in __rtnl_link_unregister() 2018-03-31 22:24:58 -04:00
Kconfig geneve: fix build with modular IPV6 2018-04-27 13:52:09 -04:00
LICENSE.SRC
loopback.c net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
macsec.c Revert "macsec: missing dev_put() on error in macsec_newlink()" 2018-04-16 10:01:12 -04:00
macvlan.c macvlan: Use software path for offloaded local, broadcast, and multicast traffic 2018-04-25 08:26:19 -07:00
macvtap.c
Makefile net: remove cris etrax ethernet driver 2018-03-26 15:56:24 +02:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c
thunderbolt.c
tun.c xdp: change ndo_xdp_xmit API to support bulking 2018-05-24 18:36:15 -07:00
veth.c
virtio_net.c xdp: change ndo_xdp_xmit API to support bulking 2018-05-24 18:36:15 -07:00
vrf.c vrf: Move fib6_table into net_vrf 2018-04-17 23:41:15 -04:00
vsockmon.c
vxlan.c vxlan: add ttl inherit support 2018-04-17 13:53:13 -04:00
xen-netfront.c drivers/net: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00