linux/drivers/net/ethernet
Jacob Keller 9e3f23f44f i40e: reduce wait time for adminq command completion
When sending an adminq command, we wait for the command to complete in
a loop. This loop waits for an entire millisecond, when in practice the
adminq command is processed often much faster.

Change the loop to use i40e_usec_delay instead, and wait for 50 usecs
each time instead. This appears to be about the minimum time required,
based on some manual observation and testing.

The primary benefit of this change is reducing latency of various
operations in the PF driver, especially when related to having a large
number of VFs enabled.

For example, on Linux, when instantiating 128 VFs, the time to finish
the operation dropped from about 9 seconds down to under 6 seconds.
Additionally, the time it takes to finish a PF reset with 128 VFs
dropped from 5.1 seconds down to 0.7 seconds.

As the examples above show, a significant portion of the delay is wasted
waiting for admiqn operations which have already finished.

This patch shouldn't cause impact to functionality, as we still check
and keep waiting until the command does get processed. The only expected
change is an increase in CPU utilization as we now check for completion
far more times. However, in practice the commands appear to generally be
complete within the first delay window anyways.

Change-ID: If8af8388e100da0a14eaf9e1af3afadf73a958cf
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-04-19 17:38:25 -07:00
..
3com net: typhoon: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
8390
adaptec
adi net: bfin_mac: Remove unused stats member from struct bfin_mac_local 2017-03-27 16:01:59 -07:00
aeroflex net: greth: Utilize of_get_mac_address() 2017-03-22 12:00:39 -07:00
agere
alacritech
allwinner
alteon
altera
amazon net/ena: switch to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
amd net: nmlan_cs: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
apm drivers: net: xgene-v2: Extend ethtool statistics 2017-04-18 15:55:13 -04:00
apple
aquantia net:ethernet:aquantia: Reset is_gso flag when EOP reached. 2017-03-24 12:32:19 -07:00
arc
atheros net: alx: switch to pci_alloc_irq_vectors 2017-04-11 11:16:02 -04:00
aurora
broadcom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
brocade bna: avoid writing uninitialized data into hw registers 2017-03-24 12:49:12 -07:00
cadence net: macb: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
calxeda
cavium net: thunderx: Switch to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
chelsio cxgb4: save tid while creating server filter 2017-04-13 12:37:57 -04:00
cirrus net: cx89x0: move attribute declaration before struct keyword 2017-04-18 16:00:34 -04:00
cisco enic: add vxlan offload on tx path 2017-02-09 17:24:29 -05:00
davicom
dec net: tulip: de2104x: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
dlink net: dl2k: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
emulex be2net: VxLAN offload should be re-enabled when only 1 UDP port is left 2017-04-18 15:56:25 -04:00
ezchip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
faraday ftgmac100: Fix potential ordering issue in NAPI poll 2017-04-18 14:11:09 -04:00
freescale net: fec: add ERR007885 for i.MX6ul enet IP 2017-04-11 14:36:28 -04:00
fujitsu
hisilicon Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
hp
i825xx
ibm net: emac: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
intel i40e: reduce wait time for adminq command completion 2017-04-19 17:38:25 -07:00
marvell sky2: Use seq_puts() in sky2_debug_show() 2017-04-18 13:55:11 -04:00
mediatek net-next: ethernet: mediatek: add device_node of GMAC pointing into the netdev instance 2017-04-07 13:50:55 -07:00
mellanox net/mlx5e: E-switch vport manager is valid for ethernet only 2017-04-17 11:08:32 -04:00
micrel net: ks8851: Added support for half-duplex SPI 2017-03-09 18:18:37 -08:00
microchip net: microchip: encx24j600: use new api ethtool_{get|set}_link_ksettings 2017-02-12 22:32:17 -05:00
moxa net: moxa: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
myricom net: myricom: myri10ge: use new api ethtool_{get|set}_link_ksettings 2017-02-12 22:32:17 -05:00
natsemi net: natsemi: ns83820: use new api ethtool_{get|set}_link_ksettings 2017-02-12 22:32:17 -05:00
neterion net: s2io: fix typo argumnet argument 2017-02-26 11:57:58 -05:00
netronome nfp: don't dereference a null nn->eth_port to print a warning 2017-04-08 08:15:34 -07:00
nuvoton net: nuvoton: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
nvidia forcedeth: Remove return from a void function 2017-02-23 10:55:07 -05:00
nxp
oki-semi net: oki-semi: pch_gbe: use new api ethtool_{get|set}_link_ksettings 2017-02-17 12:00:14 -05:00
packetengines net: hamachi: use new api ethtool_{get|set}_link_ksettings 2017-02-17 14:06:41 -05:00
pasemi
qlogic qede: Add aRFS support 2017-04-17 13:06:18 -04:00
qualcomm drivers: add explicit interrupt.h includes 2017-03-30 11:05:34 -07:00
rdc
realtek r8169: replace init_timer with setup_timer 2017-03-12 23:55:03 -07:00
renesas
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
samsung
seeq drivers: net: ethernet: remove incorrect __exit markups 2017-03-02 14:33:49 -08:00
sfc sfc: don't insert mc_list on low-latency firmware if it's too long 2017-04-05 18:35:21 -07:00
sgi net: sgi: ioc3-eth: use new api ethtool_{get|set}_link_ksettings 2017-03-06 17:05:39 -08:00
silan net: silan: sc92031: use new api ethtool_{get|set}_link_ksettings 2017-03-06 17:05:39 -08:00
sis net: sis: sis900: use new api ethtool_{get|set}_link_ksettings 2017-03-06 17:05:39 -08:00
smsc net: smsc: smc91x: use new api ethtool_{get|set}_link_ksettings 2017-03-08 22:18:05 -08:00
stmicro net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
sun net: sunhme: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
synopsys net: dwc-xlgmac: add the initial ethtool support 2017-04-13 13:46:38 -04:00
tehuti net: tehuti: use new api ethtool_{get|set}_link_ksettings 2017-03-27 16:00:07 -07:00
ti Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
tile
toshiba net: toshiba: spider_net: use new api ethtool_{get|set}_link_ksettings 2017-03-08 22:18:05 -08:00
tundra net: tundra: tsi108: use new api ethtool_{get|set}_link_ksettings 2017-03-12 19:28:07 -07:00
via net: via: via-velocity: use new api ethtool_{get|set}_link_ksettings 2017-03-12 19:28:07 -07:00
wiznet net: ethernet: wiznet: avoid format string exposure 2017-04-06 13:38:11 -07:00
xilinx net: axienet: use eth_hw_addr_random() 2017-03-06 17:15:41 -08:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c net: ethoc: Use ether_addr_copy() 2017-03-21 17:16:56 -07:00
fealnx.c
jme.c
jme.h
Kconfig net: dwc-xlgmac: Initial driver for DesignWare Enterprise Ethernet 2017-03-09 13:29:27 -08:00
korina.c
lantiq_etop.c
Makefile net: dwc-xlgmac: Initial driver for DesignWare Enterprise Ethernet 2017-03-09 13:29:27 -08:00
netx-eth.c