mirror_ubuntu-kernels/drivers/net/ethernet
Tariq Toukan f52ac7028b net/mlx5e: RX, Add XDP multi-buffer support in Striding RQ
Here we add support for multi-buffer XDP handling in Striding RQ, which
is our default out-of-the-box RQ type. Before this series, loading such
an XDP program would fail, until you switch to the legacy RQ (by
unsetting the rx_striding_rq priv-flag).

To overcome the lack of headroom and tailroom between the strides, we
allocate a side page to be used for the descriptor (xdp_buff / skb) and
the linear part. When an XDP program is attached, we structure the
xdp_buff so that it contains no data in the linear part, and the whole
packet resides in the fragments.

In case of XDP_PASS, where an SKB still needs to be created, we copy up
to 256 bytes to its linear part, to match the current behavior, and
satisfy functions that assume finding the packet headers in the SKB
linear part (like eth_type_trans).

Performance testing:

Packet rate test, 64 bytes, 32 channels, MTU 9000 bytes.
CPU: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz.
NIC: ConnectX-6 Dx, at 100 Gbps.

+----------+-------------+-------------+---------+
| Test     | Legacy RQ   | Striding RQ | Speedup |
+----------+-------------+-------------+---------+
| XDP_DROP | 101,615,544 | 117,191,020 | +15%    |
+----------+-------------+-------------+---------+
| XDP_TX   |  95,608,169 | 117,043,422 | +22%    |
+----------+-------------+-------------+---------+

Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-04-19 08:59:27 +01:00
..
3com
8390 net: ethernet: 8390: axnet_cs: remove unused xfer_count variable 2023-03-28 23:48:02 -07:00
actions
adaptec
adi
aeroflex
agere
alacritech
allwinner
alteon net: alteon: remove unused len variable 2023-04-02 13:43:43 +01:00
altera
amazon net: ena: removed unused tx_bytes variable 2023-03-29 21:39:35 -07:00
amd amd-xgbe: fix mismatched prototype 2023-02-06 22:33:18 -08:00
apm
apple
aquantia net: aquantia: constify pointers to hwmon_channel_info 2023-04-09 19:02:09 -07:00
arc
asix
atheros net: atheros: atl1c: remove unused atl1c_irq_reset function 2023-03-21 21:18:54 -07:00
broadcom bnxt: hook NAPIs to page pools 2023-04-14 18:56:12 -07:00
brocade
cadence net: macb: Optimize reading HW timestamp 2023-04-13 22:16:09 -07:00
calxeda
cavium net: liquidio: Remove redundant pci_clear_master 2023-03-24 09:09:27 +00:00
chelsio net: cxgb4vf: Remove redundant pci_clear_master 2023-03-24 09:09:27 +00:00
cirrus
cisco
cortina
davicom net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
dec
dlink
emulex be2net: Drop redundant pci_enable_pcie_error_reporting() 2023-03-08 23:34:38 -08:00
engleder ethernet: remove superfluous clearing of phydev 2023-03-22 20:47:27 -07:00
ezchip
faraday
freescale net: enetc: add support for preemptible traffic classes 2023-04-13 22:22:10 -07:00
fujitsu
fungible net/fungible: Remove redundant pci_clear_master 2023-03-24 09:09:27 +00:00
google gve: Unify duplicate GQ min pkt desc size constants 2023-04-11 15:47:14 +02:00
hisilicon net: hns3: support wake on lan configuration and query 2023-03-29 09:07:42 +01:00
huawei
i825xx i825xx: sni_82596: use eth_hw_addr_set() 2023-03-16 17:35:21 -07:00
ibm net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
intel Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-04-13 16:04:28 -07:00
litex
marvell net: ethernet: Add missing depends on MDIO_DEVRES 2023-04-12 20:38:48 -07:00
mediatek net: ethernet: mtk_eth_soc: use be32 type to store be32 values 2023-04-10 18:24:55 -07:00
mellanox net/mlx5e: RX, Add XDP multi-buffer support in Striding RQ 2023-04-19 08:59:27 +01:00
micrel ksz884x: Remove unused functions 2023-04-12 09:38:19 +01:00
microchip net: lan966x: Fix lan966x_ifh_get 2023-04-17 09:56:49 +01:00
microsoft net: mana: Add support for jumbo frame 2023-04-14 08:56:19 +01:00
moxa
mscc net: mscc: ocelot: remove incompatible prototypes 2023-04-18 21:13:23 -07:00
myricom
natsemi net/sonic: use dma_mapping_error() for error check 2023-03-21 21:29:34 -07:00
neterion
netronome net: nfp: constify pointers to hwmon_channel_info 2023-04-09 19:02:03 -07:00
ni net: ni: drop of_match_ptr for ID table 2023-03-15 08:02:45 +00:00
nvidia
nxp
oki-semi
packetengines
pasemi net: pasemi: Fix return type of pasemi_mac_start_tx() 2023-03-21 13:48:35 +01:00
pensando ionic: Don't overwrite the cyclecounter bitmask 2023-04-12 09:36:25 +01:00
qlogic Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-04-13 16:04:28 -07:00
qualcomm net: ethernet: Add missing depends on MDIO_DEVRES 2023-04-12 20:38:48 -07:00
rdc
realtek r8169: use new macro netif_subqueue_completed_wake in the tx cleanup path 2023-04-18 12:59:01 +02:00
renesas Revert "sh_eth: remove open coded netif_running()" 2023-03-28 19:23:32 -07:00
rocker
samsung net: samsung: sxgbe: drop of_match_ptr for ID table 2023-03-15 08:02:45 +00:00
seeq
sfc sfc: remove expired unicast PTP filters 2023-04-03 19:02:51 -07:00
sgi
silan
sis
smsc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-03-30 14:43:03 -07:00
socionext drivers: net: turn on XDP features 2023-02-02 20:48:23 -08:00
stmicro net: ethernet: stmmac: dwmac-sti: remove stih415/stih416/stid127 2023-04-18 21:29:19 -07:00
sun Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-04-13 16:04:28 -07:00
sunplus ethernet: remove superfluous clearing of phydev 2023-03-22 20:47:27 -07:00
synopsys
tehuti
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-04-13 16:04:28 -07:00
toshiba net/ps3_gelic_net: Use dma_mapping_error 2023-03-20 10:20:40 +00:00
tundra
vertexcom
via net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
wangxun Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-03-30 14:43:03 -07:00
wiznet
xilinx net: Use of_property_read_bool() for boolean properties 2023-03-16 17:41:28 +00:00
xircom xirc2ps_cs: Fix use after free bug in xirc2ps_detach 2023-03-19 10:42:02 +00:00
xscale
dnet.c
dnet.h
ec_bhf.c ethernet: ec_bhf: Remove redundant pci_clear_master 2023-03-24 09:09:28 +00:00
ethoc.c
fealnx.c eth: fealnx: bring back this old driver 2023-03-08 23:22:04 -08:00
jme.c
jme.h
Kconfig net: restore alpha order to Ethernet devices in config 2023-03-09 23:36:28 -08:00
korina.c
lantiq_etop.c
lantiq_xrx200.c
Makefile eth: fealnx: bring back this old driver 2023-03-08 23:22:04 -08:00