linux/drivers/net/ethernet
Alexander Duyck 2d37490b82 i40e/i40evf: Rewrite logic for 8 descriptor per packet check
This patch is meant to rewrite the logic for how we determine if we can
transmit the frame or if it needs to be linearized.

The previous code for this function was using a mix of division and modulus
division as a part of computing if we need to take the slow path.  Instead
I have replaced this by simply working with a sliding window which will
tell us if the frame would be capable of causing a single packet to span
several descriptors.

The logic for the scan is fairly simple.  If any given group of 6 fragments
is less than gso_size - 1 then it is possible for us to have one byte
coming out of the first fragment, 6 fragments, and one or more bytes coming
out of the last fragment.  This gives us a total of 8 fragments
which exceeds what we can allow so we send such frames to be linearized.

Arguably the use of modulus might be more exact as the approach I propose
may generate some false positives.  However the likelihood of us taking much
of a hit for those false positives is fairly low, and I would rather not
add more overhead in the case where we are receiving a frame composed of 4K
pages.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2016-02-18 23:27:05 -08:00
..
3com 3c59x: fix another page map/single unmap imbalance 2016-01-13 14:55:18 -05:00
8390 mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
adaptec
adi net: bfin_mac: Use phy_find_first() instead of open-coding it 2016-01-11 00:00:34 -05:00
aeroflex mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
agere phy: Add an mdio_device structure 2016-01-07 14:31:26 -05:00
allwinner
alteon
altera phy: Add an mdio_device structure 2016-01-07 14:31:26 -05:00
amd amd-xgbe: Mask auto-negotiation interrupts in ISR 2016-02-17 15:22:20 -05:00
apm drivers: net: xgene: Add support for multiple queues 2016-02-17 22:08:34 -05:00
apple
arc net: ethernet: arc: Add support emac for RK3036 2016-01-10 22:21:31 -05:00
atheros ethernet/atheros/alx: sanitize buffer sizing and padding 2016-01-06 15:05:25 -05:00
aurora net: nb8800: avoid uninitialized variable warning 2016-01-29 20:33:39 -08:00
broadcom bnx2x: Add missing HSI for big-endian machines 2016-02-18 23:33:23 -05:00
brocade bna: fix Rx data corruption with VLAN stripping enabled and MTU > 4096 2016-01-15 21:49:25 -05:00
cadence net: macb: add wake-on-lan support via magic packet 2016-02-11 09:56:02 -05:00
calxeda
cavium net: thunderx: Alloc higher order pages when pagesize is small 2016-02-11 11:30:26 -05:00
chelsio cxgb4vf: Use __dev_uc_sync/__dev_mc_sync to sync MAC address 2016-02-18 14:16:12 -05:00
cirrus
cisco
davicom
dec drivers/net: fix eisa_driver probe section mismatch 2015-12-14 00:24:22 -05:00
dlink
emulex be2net: don't report EVB for older chipsets when SR-IOV is disabled 2016-02-11 11:35:31 -05:00
ezchip net: Fix dependencies for !HAS_IOMEM archs 2016-01-28 16:03:19 -08:00
faraday net: ethernet: faraday: Use phy_find_first() instead of open coding it 2016-01-10 22:05:30 -05:00
freescale net: fec: Add "phy-reset-active-low" property to DT 2016-02-16 15:15:40 -05:00
fujitsu
hisilicon net: hns: enet specifies a reference to dsaf 2016-01-21 12:02:31 -08:00
hp net: hp100: remove unnecessary #ifdefs 2016-01-29 20:33:38 -08:00
i825xx
ibm Driver for IBM System i/p VNIC protocol 2015-12-28 00:12:13 -05:00
intel i40e/i40evf: Rewrite logic for 8 descriptor per packet check 2016-02-18 23:27:05 -08:00
marvell net: mv643xx_eth: fix packet corruption with TSO and tiny unaligned packets. 2016-01-28 16:08:01 -08:00
mellanox net: rework setup_tc ndo op to consume general tc operand 2016-02-17 09:47:35 -05:00
micrel
microchip
moxa net: moxart: use correct accessors for DMA memory 2016-01-29 19:40:02 -08:00
myricom
natsemi natsemi: add checks for dma mapping errors 2015-12-19 12:58:46 -05:00
neterion net: vxge: avoid unused function warnings 2016-01-29 20:33:39 -08:00
netronome nfp: call netif_carrier_off() during init 2015-12-18 15:31:36 -05:00
nuvoton
nvidia
nxp net: lpc_eth: Remove unused variables 2016-01-10 22:50:14 -05:00
octeon
oki-semi net: Rename NETIF_F_ALL_CSUM to NETIF_F_CSUM_MASK 2015-12-15 16:50:08 -05:00
packetengines
pasemi pasemi_mac: Replace LRO with GRO 2016-02-17 16:15:45 -05:00
qlogic qede: Add vlan filtering offload support 2016-02-18 16:07:45 -05:00
qualcomm net: qca_spi: fix transmit queue timeout handling 2015-12-06 12:02:24 -05:00
rdc mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
realtek r8169:Correct the way of setting RTL8168DP ephy 2016-01-04 16:50:49 -05:00
renesas sh_eth: kill useless *switch* defaults 2016-02-17 15:30:23 -05:00
rocker rocker: return -EOPNOTSUPP for undefined world ops 2016-02-17 23:08:35 -05:00
samsung sxgbe: remove unused code 2016-02-10 06:10:17 -05:00
seeq
sfc net: rework setup_tc ndo op to consume general tc operand 2016-02-17 09:47:35 -05:00
sgi
silan
sis
smsc net: smsc: Add support h8300 2016-01-15 15:14:23 -05:00
stmicro stmmac: Don't exit mdio registration when mdio subnode is not found in the DTS 2016-01-10 18:02:33 -05:00
sun sunvnet: perf tracepoint invocations to trace LDC state machine 2016-02-07 14:13:06 -05:00
synopsys dwc_eth_qos: Fix dma address for multi-fragment skbs 2016-01-12 12:03:30 -05:00
tehuti
ti net: rework setup_tc ndo op to consume general tc operand 2016-02-17 09:47:35 -05:00
tile tilepro: use to_delayed_work 2016-01-04 16:07:16 -05:00
toshiba net: tc35815: Drop unused variable 2016-01-10 23:31:25 -05:00
tundra
via
wiznet
xilinx phy: Add an mdio_device structure 2016-01-07 14:31:26 -05:00
xircom
xscale
dnet.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
dnet.h
ec_bhf.c
ethoc.c phy: Add API for {un}registering an mdio device to a bus. 2016-01-07 14:31:26 -05:00
fealnx.c
jme.c net: Rename NETIF_F_ALL_CSUM to NETIF_F_CSUM_MASK 2015-12-15 16:50:08 -05:00
jme.h
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
korina.c
lantiq_etop.c net: lantiq_etop.c: Use helper to find first phy 2016-01-10 18:03:47 -05:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00
netx-eth.c