linux_dsm_epyc7002/drivers/net/ethernet/intel
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
..
e1000 net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
e1000e net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
fm10k fm10k: don't protect fm10k_queue_mac_request by fm10k_host_mbx_ready 2018-05-09 09:02:48 -07:00
i40e xdp: change ndo_xdp_xmit API to support bulking 2018-05-24 18:36:15 -07:00
i40evf i40evf: Fix a hardware reset support in VF driver 2018-05-14 07:05:16 -07:00
ice ice: Set rq_last_status when cleaning rq 2018-05-11 11:43:17 -07:00
igb net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
igbvf net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgb net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe xdp: change ndo_xdp_xmit API to support bulking 2018-05-24 18:36:15 -07:00
ixgbevf Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-11 20:53:22 -04:00
e100.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
Kconfig ice: Add basic driver framework for Intel(R) E800 Series 2018-03-26 08:28:02 -07:00
Makefile ice: Add basic driver framework for Intel(R) E800 Series 2018-03-26 08:28:02 -07:00