linux/drivers/net/ethernet
Jacob Keller a5340d933e i40e: ignore skb->xmit_more when deciding to set RS bit
Since commit 6a7fded776 ("i40e: Fix RS bit update in Tx path and
disable force WB workaround") we've tried to "optimize" setting the
RS bit based around skb->xmit_more. This same logic was refactored
in commit 1dc8b53879 ("i40e: Reorder logic for coalescing RS bits"),
but ultimately was not functionally changed.

Using skb->xmit_more in this way is incorrect, because in certain
circumstances we may see a large number of skbs in sequence with
xmit_more set. This leads to a performance loss as the hardware does not
writeback anything for those packets, which delays the time it takes for
us to respond to the stack transmit requests. This significantly impacts
UDP performance, especially when layered with multiple devices, such as
bonding, VLANs, and vnet setups.

This was not noticed until now because it is difficult to create a setup
which reproduces the issue. It was discovered in a UDP_STREAM test in
a VM, connected using a vnet device to a bridge, which is connected to
a bonded pair of X710 ports in active-backup mode with a VLAN. These
layered devices seem to compound the number of skbs transmitted at once
by the qdisc. Additionally, the problem can be masked by reducing the
ITR value.

Since the original commit does not provide strong justification for this
RS bit "optimization", revert to the previous behavior of setting the RS
bit every 4th packet.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-10-06 08:11:32 -07:00
..
3com
8390
adaptec
adi drivers: net: adi: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
aeroflex
agere drivers: net: et131x: use setup_timer() helper. 2017-09-21 11:44:39 -07:00
alacritech
allwinner
alteon
altera
amazon net: ena: Remove redundant unlikely() 2017-09-26 09:54:06 -07:00
amd drivers: net: amd: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
apm drivers: net: xgene: Remove return statement from void function 2017-09-05 14:58:25 -07:00
apple
aquantia atlantic: fix iommu errors 2017-09-26 13:44:31 -07:00
arc
atheros
aurora
broadcom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-05 18:19:22 -07:00
brocade
cadence
calxeda
cavium bpf: add meta pointer for direct access 2017-09-26 13:36:44 -07:00
chelsio cxgb4vf: make a couple of functions static 2017-10-04 10:31:55 -07:00
cirrus
cisco drivers: net: enic: use setup_timer() helper. 2017-09-21 11:44:44 -07:00
davicom davicom: Display proper debug level up to 6 2017-09-08 20:53:10 -07:00
dec drivers: net: uli526x: use setup_timer() helper. 2017-09-21 11:44:44 -07:00
dlink drivers: net: sundance: use setup_timer() helper. 2017-09-21 11:44:40 -07:00
emulex be2net: fix TSO6/GSO issue causing TX-stall on Lancer/BEx 2017-09-13 09:28:18 -07:00
ezchip
faraday Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-01 17:42:05 -07:00
freescale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-23 10:16:53 -07:00
fujitsu
hisilicon Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-05 18:19:22 -07:00
hp
huawei net-next/hinic: Fix a case of Tx Queue is Stopped forever 2017-09-28 10:26:50 -07:00
i825xx dma-mapping updates for 4.14: 2017-09-12 13:30:06 -07:00
ibm ibmvnic: Set state UP 2017-10-01 04:02:35 +01:00
intel i40e: ignore skb->xmit_more when deciding to set RS bit 2017-10-06 08:11:32 -07:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-05 18:19:22 -07:00
mediatek
mellanox Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-05 18:19:22 -07:00
micrel
microchip
moxa
myricom
natsemi drivers: net: natsemi: use setup_timer() helper. 2017-09-21 11:44:40 -07:00
neterion
netronome nfp: flower vxlan neighbour keep-alive 2017-09-26 21:27:36 -07:00
nuvoton w90p910_ether: include linux/interrupt.h 2017-09-12 20:59:19 -07:00
nvidia forcedeth: optimize the xmit/rx with unlikely 2017-09-23 20:04:23 -07:00
nxp
oki-semi
packetengines drivers: net: packetengines: use setup_timer() helper. 2017-09-21 11:44:44 -07:00
pasemi
qlogic bpf: add meta pointer for direct access 2017-09-26 13:36:44 -07:00
qualcomm net: qcom/emac: make function emac_isr static 2017-10-05 21:27:02 -07:00
rdc
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-23 10:16:53 -07:00
renesas ravb: RX checksum offload 2017-10-04 10:26:05 -07:00
rocker rocker: fix rocker_tlv_put_* functions for KASAN 2017-09-25 20:18:27 -07:00
samsung
seeq sgiseeq: switch to dma_alloc_attrs 2017-08-29 10:02:54 +02:00
sfc
sgi
silan
sis drivers: net: sis900: use setup_timer() helper. 2017-09-21 11:44:42 -07:00
smsc drivers: net: smsc: use setup_timer() helper. 2017-09-21 11:44:41 -07:00
stmicro Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-05 18:19:22 -07:00
sun ldmvsw: Remove redundant unlikely() 2017-09-26 10:15:44 -07:00
synopsys
tehuti
ti net: ti: netcp: use setup_timer 2017-09-21 15:48:46 -07:00
tile
toshiba drivers: net: spider_net: use setup_timer() helper. 2017-09-21 11:44:40 -07:00
tundra
via dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
wiznet
xilinx
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c
fealnx.c drivers: net: fealnx: use setup_timer() helper. 2017-09-21 11:44:43 -07:00
jme.c
jme.h
Kconfig
korina.c net: korina: bump version 2017-09-18 16:50:07 -07:00
lantiq_etop.c
Makefile
netx-eth.c