linux_dsm_epyc7002/drivers/net/ethernet
Maxim Mikityanskiy a7bd4018d6 net/mlx5e: Add AF_XDP need_wakeup support
This commit adds support for the new need_wakeup feature of AF_XDP. The
applications can opt-in by using the XDP_USE_NEED_WAKEUP bind() flag.
When this feature is enabled, some behavior changes:

RX side: If the Fill Ring is empty, instead of busy-polling, set the
flag to tell the application to kick the driver when it refills the Fill
Ring.

TX side: If there are pending completions or packets queued for
transmission, set the flag to tell the application that it can skip the
sendto() syscall and save time.

The performance testing was performed on a machine with the following
configuration:

- 24 cores of Intel Xeon E5-2620 v3 @ 2.40 GHz
- Mellanox ConnectX-5 Ex with 100 Gbit/s link

The results with retpoline disabled:

       | without need_wakeup  | with need_wakeup     |
       |----------------------|----------------------|
       | one core | two cores | one core | two cores |
-------|----------|-----------|----------|-----------|
txonly | 20.1     | 33.5      | 29.0     | 34.2      |
rxdrop | 0.065    | 14.1      | 12.0     | 14.1      |
l2fwd  | 0.032    | 7.3       | 6.6      | 7.2       |

"One core" means the application and NAPI run on the same core. "Two
cores" means they are pinned to different cores.

Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Saeed Mahameed <saeedm@mellanox.com>
Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2019-08-17 23:07:32 +02:00
..
3com net: 3com: 3c59x: Use dev_get_drvdata 2019-07-23 13:02:41 -07:00
8390 net: 8390: Fix manufacturer name in Kconfig help text 2019-08-01 13:45:48 -04:00
adaptec
aeroflex Build fixes for skb_frag_size conversion 2019-07-24 11:46:03 -07:00
agere Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
alacritech treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 235 2019-06-19 17:09:07 +02:00
allwinner net: ethernet: sun4i-emac: Support phy-handle property for finding PHYs 2019-08-06 11:29:16 -07:00
alteon
altera
amazon Revert "net: ena: ethtool: add extra properties retrieval via get_priv_flags" 2019-06-26 09:07:39 -07:00
amd xgbe: no need to check return value of debugfs_create functions 2019-08-10 15:25:47 -07:00
apm net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
apple net: delete "register" keyword 2019-08-08 18:03:42 -07:00
aquantia Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-06-27 21:06:39 -07:00
arc treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
atheros Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
aurora net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
broadcom bnxt: no need to check return value of debugfs_create functions 2019-08-10 15:25:47 -07:00
brocade net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
cadence Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-07-08 19:48:57 -07:00
calxeda net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
cavium liquidio: Use pcie_flr() instead of reimplementing it 2019-08-08 22:41:02 -07:00
chelsio cxgb4: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
cirrus
cisco
cortina net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
davicom net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
dec
dlink
emulex Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
ezchip treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 291 2019-06-05 17:36:38 +02:00
faraday net: ftgmac100: Select ASPEED MDIO driver for the AST2600 2019-08-02 17:56:28 -07:00
freescale dpaa2: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
fujitsu
google gve: Fix case where desc_cnt and data_cnt can get out of sync 2019-08-05 13:18:53 -07:00
hisilicon net: hns3: Make hclge_func_reset_sync_vf static 2019-08-13 16:18:12 -07:00
hp
huawei net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
i825xx treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
intel ixgbe: add support for AF_XDP need_wakeup feature 2019-08-17 23:07:32 +02:00
marvell mvpp2: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
mediatek Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-06 18:44:57 -07:00
mellanox net/mlx5e: Add AF_XDP need_wakeup support 2019-08-17 23:07:32 +02:00
micrel treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
microchip net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
moxa
mscc ocelot: Cancel delayed work before wq destruction 2019-07-26 14:11:30 -07:00
myricom myri10ge: remove unneeded variable 2019-07-31 08:44:00 -07:00
natsemi
neterion ethernet: remove redundant memset 2019-07-15 11:06:27 -07:00
netronome nfp: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
ni net: nixge: Spelling s/Instrument/Instruments/ 2019-08-01 13:45:49 -04:00
nuvoton net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
nvidia forcedeth: Use dev_get_drvdata where possible 2019-07-24 11:44:46 -07:00
nxp
oki-semi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
packetengines net: packetengines: Fix manufacturer spelling and capitalization 2019-08-01 13:45:49 -04:00
pasemi net: pasemi: fix an use-after-free in pasemi_mac_phy_init() 2019-07-08 16:33:02 -07:00
qlogic qed: Add new ethtool supported port types based on media. 2019-08-08 18:14:07 -07:00
qualcomm qca: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
rdc
realtek r8169: inline rtl8169_free_rx_databuff 2019-08-11 21:25:30 -07:00
renesas
rocker rocker: fix memory leaks of fib_work on two error return paths 2019-07-29 10:58:06 -07:00
samsung net: samsung: Spelling s/case/cause/ 2019-08-01 13:45:49 -04:00
seeq treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
sfc sfc: falcon: don't score irq moderation points for GRO 2019-08-08 18:22:29 -07:00
sgi
silan
sis sis900: add support for ethtool's EEPROM dump 2019-07-26 14:24:48 -07:00
smsc net: smc911x: Mark expected switch fall-through 2019-07-29 15:13:10 -07:00
socionext net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
stmicro stmmac: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
sun net: Use skb_frag_off accessors 2019-07-30 14:21:32 -07:00
synopsys net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
tehuti net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
ti net: Use skb_frag_off accessors 2019-07-30 14:21:32 -07:00
toshiba net: spider_net: Mark expected switch fall-through 2019-07-29 11:12:21 -07:00
tundra
via
wiznet net: ethernet: wiznet: w5X00 add device tree support 2019-06-12 09:52:04 -07:00
xilinx net: axienet: fix a potential double free in axienet_probe() 2019-07-08 16:28:32 -07:00
xircom
xscale net: ixp4xx: Spelling s/XSacle/XScale/ 2019-08-01 13:45:49 -04:00
dnet.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dnet.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ec_bhf.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
ethoc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
fealnx.c
jme.c net: Use skb_frag_off accessors 2019-07-30 14:21:32 -07:00
jme.h
Kconfig gve: Add basic driver framework for Compute Engine Virtual NIC 2019-07-01 19:36:35 -07:00
korina.c
lantiq_etop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
lantiq_xrx200.c net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
Makefile gve: Add basic driver framework for Compute Engine Virtual NIC 2019-07-01 19:36:35 -07:00
netx-eth.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00