linux_dsm_epyc7002/drivers/net/ethernet
Manish Chopra 8a8633978b qede: Add build_skb() support.
This patch makes use of build_skb() throughout in driver's receieve
data path [HW gro flow and non HW gro flow]. With this, driver can
build skb directly from the page segments which are already mapped
to the hardware instead of allocating new SKB via netdev_alloc_skb()
and memcpy the data which is quite costly.

This really improves performance (keeping same or slight gain in rx
throughput) in terms of CPU utilization which is significantly reduced
[almost half] in non HW gro flow where for every incoming MTU sized
packet driver had to allocate skb, memcpy headers etc. Additionally
in that flow, it also gets rid of bunch of additional overheads
[eth_get_headlen() etc.] to split headers and data in the skb.

Tested with:
system: 2 sockets, 4 cores per socket, hyperthreading, 2x4x2=16 cores
iperf [server]: iperf -s
iperf [client]: iperf -c <server_ip> -t 500 -i 10 -P 32

HW GRO off – w/o build_skb(), throughput: 36.8 Gbits/sec

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.59    0.00   32.93    0.00    0.00   43.07    0.00    0.00   23.42

HW GRO off - with build_skb(), throughput: 36.9 Gbits/sec

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.70    0.00   31.70    0.00    0.00   25.68    0.00    0.00   41.92

HW GRO on - w/o build_skb(), throughput: 36.9 Gbits/sec

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.86    0.00   24.14    0.00    0.00    6.59    0.00    0.00   68.41

HW GRO on - with build_skb(), throughput: 37.5 Gbits/sec

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
Average:     all    0.87    0.00   23.75    0.00    0.00    6.19    0.00    0.00   69.19

Signed-off-by: Ariel Elior <ariel.elior@cavium.com>
Signed-off-by: Manish Chopra <manish.chopra@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-05-17 17:06:53 -04:00
..
3com net: 3com: 3c59x: irq save variant of ISR 2018-05-07 23:25:25 -04:00
8390 net-next: New ax88796 platform driver for Amiga X-Surf 100 Zorro board (m68k) 2018-04-19 16:11:11 -04:00
adaptec
aeroflex
agere
alacritech
allwinner
alteon
altera ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
amazon net: ena: Eliminate duplicate barriers on weakly-ordered archs 2018-03-26 12:47:56 -04:00
amd net: amd8111e: remove redundant duplicated if statement 2018-04-25 14:11:27 -04:00
apm
apple
aquantia net: aquantia: Limit number of vectors to actually allocated irqs 2018-05-08 00:06:44 -04:00
arc
atheros
aurora
broadcom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-11 20:53:22 -04:00
brocade ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
cadence drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
calxeda
cavium liquidio: bump up driver version to 1.7.2 to match newer NIC firmware 2018-05-10 17:32:18 -04:00
chelsio cxgb4: update LE-TCAM collection for T6 2018-05-16 15:01:30 -04:00
cirrus
cisco
cortina
davicom treewide: simplify Kconfig dependencies for removed archs 2018-03-26 15:55:57 +02:00
dec
dlink
emulex ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
ezchip
faraday
freescale drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
fujitsu
hisilicon net: hns3: Fixes the missing PCI iounmap for various legs 2018-05-16 11:33:08 -04:00
hp
huawei net-next/hinic: add pci device ids for 25ge and 100ge card 2018-05-08 00:07:42 -04:00
i825xx
ibm ibmvnic: Clean actual number of RX or TX pools 2018-04-22 21:13:30 -04:00
intel ice: Update NVM AQ command functions 2018-05-17 09:14:09 -07:00
marvell net: mvpp2: print rx error with rate-limit 2018-05-17 16:18:55 -04:00
mediatek net: mediatek: use of_device_get_match_data() 2018-04-16 13:43:07 -04:00
mellanox net/mlx5e: Remove MLX5E_TEST_BIT macro 2018-05-14 15:10:21 -07:00
micrel
microchip
moxa
mscc net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
myricom ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
natsemi
neterion
netronome nfp: flower: fix error path during representor creation 2018-05-17 16:23:29 -04:00
ni net: nixge: Address compiler warnings about signedness 2018-05-07 23:30:03 -04:00
nuvoton
nvidia
nxp
oki-semi
packetengines
pasemi
qlogic qede: Add build_skb() support. 2018-05-17 17:06:53 -04:00
qualcomm net: qcom/emac: Encapsulate sgmii ops under one structure 2018-05-16 14:33:27 -04:00
rdc
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-11 20:53:22 -04:00
renesas drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
rocker rocker: Postpone filtering of !added_by_user FDB 2018-05-10 17:54:57 -04:00
samsung ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
seeq
sfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-04 09:58:56 -04:00
sgi
silan
sis
smsc arch: remove obsolete architecture ports 2018-04-02 20:20:12 -07:00
socionext net: ethernet: ave: add support for phy-mode setting of system controller 2018-04-20 10:49:41 -04:00
stmicro net: stmmac: Remove useless test before clk_disable_unprepare 2018-05-16 14:43:54 -04:00
sun net: ethernet: sun: niu set correct packet size in skb 2018-05-04 13:20:46 -04:00
synopsys
tehuti
ti net: ethernet: ti: cpsw: disable mq feature for "AM33xx ES1.0" devices 2018-05-17 15:11:55 -04:00
toshiba
tundra
via
wiznet
xilinx
xircom
xscale
dnet.c
dnet.h
ec_bhf.c ethernet: Use octal not symbolic permissions 2018-03-26 12:07:49 -04:00
ethoc.c net: ethoc: Remove useless test before clk_disable_unprepare 2018-05-16 14:44:29 -04:00
fealnx.c
jme.c
jme.h
Kconfig net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
korina.c
lantiq_etop.c
Makefile net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
netx-eth.c