linux/drivers/net/ethernet
Govindarajulu Varadarajan 9fe1c98ac9 enic: fix rq disable
When MTU is changed from 9000 to 1500 while there is burst of inbound 9000
bytes packets, adaptor sometimes delivers 9000 bytes packets to 1500 bytes
buffers. This causes memory corruption and sometimes crash.

This is because of a race condition in adaptor between "RQ disable"
clearing descriptor mini-cache and mini-cache valid bit being set by
completion of descriptor fetch. This can result in stale RQ desc being
cached and used when packets arrive. In this case, the stale descriptor
have old MTU value.

Solution is to write RQ->disable twice. The first write will stop any
further desc fetches, allowing the second disable to clear the mini-cache
valid bit without danger of a race.

Also, the check for rq->running becoming 0 after writing rq->enable to 0
is not done properly. When incoming packets are flooding the interface,
rq->running will pulse high for each dropped packet. Since the driver was
waiting for 10us between each poll, it is possible to see rq->running = 1
1000 times in a row, even though it is not actually stuck running.
This results in false failure of vnic_rq_disable(). Fix is to try more
than 1000 time without delay between polls to ensure we do not miss when
running goes low.

In old adaptors rq->enable needs to be re-written to 0 when posted_index
is reset in vnic_rq_clean() in order to keep rq->prefetch_index in sync.

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-29 17:23:39 -04:00
..
3com 3c59x: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:57 -07:00
8390 net: ethernet: ax88796: avoid null pointer dereference 2016-08-01 13:32:51 -07:00
adaptec starfire: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:57 -07:00
adi net: bfin_mac: Fix a few spelling fixes 2016-08-13 15:14:56 -07:00
aeroflex net: ethernet: greth: use phy_ethtool_{get|set}_link_ksettings 2016-08-08 15:42:21 -07:00
agere net: ethernet: et131x: constify ethtool_ops structures 2016-08-31 09:22:30 -07:00
allwinner
alteon
altera ethernet: altera: add missing of_node_put 2016-08-01 21:42:57 -07:00
amazon net: ena: change the return type of ena_set_push_mode() to be void. 2016-08-23 17:42:33 -07:00
amd ethernet: amd: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:58 -07:00
apm drivers: net: xgene: Fix MSS programming 2016-09-23 08:38:38 -04:00
apple
arc net: arc_emac: mark arc_mdio_reset() static 2016-09-06 15:58:59 -07:00
atheros alx: fix error handling in __alx_open 2016-09-15 20:15:26 -04:00
aurora net: ethernet: nb8800: Fix module autoload 2016-10-17 13:03:02 -04:00
broadcom net: bgmac: fix spelling mistake: "connecton" -> "connection" 2016-10-27 16:37:24 -04:00
brocade Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-09-23 06:46:57 -04:00
cadence net: macb: NULL out phydev after removing mdio bus 2016-10-07 23:55:59 -04:00
calxeda
cavium liquidio: CN23XX: fix a loop timeout 2016-10-13 12:12:50 -04:00
chelsio cxgb4: Fix error handling in alloc_uld_rxqs(). 2016-10-29 14:56:26 -04:00
cirrus
cisco enic: fix rq disable 2016-10-29 17:23:39 -04:00
davicom dm9000: Fix irq trigger type setup on non-dt platforms 2016-08-09 15:08:22 -07:00
dec net: fix up a few missing hashtable.h conflict resolutions 2016-08-13 14:51:02 -07:00
dlink sundance: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:58 -07:00
emulex be2net: Enable VF link state setting for BE3 2016-10-09 09:30:39 -04:00
ezchip net: nps_enet: Fix module autoload 2016-10-17 13:03:02 -04:00
faraday net/faraday: Stop NCSI device on shutdown 2016-10-04 02:11:51 -04:00
freescale net: fec: Call swap_buffer() prior to IP header alignment 2016-10-23 17:41:41 -04:00
fujitsu
hisilicon net: hisilicon: Fix hns_mdio module autoload for OF registration 2016-10-17 13:03:03 -04:00
hp
i825xx i825xx: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:58 -07:00
ibm ibmvnic: Fix missing brackets in init_sub_crq_irqs 2016-10-29 17:18:46 -04:00
intel i40e: fix call of ndo_dflt_bridge_getlink() 2016-10-27 14:12:52 -07:00
marvell net: mv643xx_eth: Fetch the phy connection type from DT 2016-10-29 15:11:36 -04:00
mediatek net: ethernet: mediatek: get hw lro capability by the chip id instead of by the dtsi 2016-10-06 21:08:08 -04:00
mellanox net/mlx4_en: Save slave ethtool stats command 2016-10-29 16:23:48 -04:00
micrel
microchip kthread: kthread worker API cleanup 2016-10-11 15:06:33 -07:00
moxa
myricom
natsemi natsemi: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:59 -07:00
neterion net: s2io: simplify logical constraint 2016-08-01 13:32:52 -07:00
netronome nfp: bpf: zero extend 4 byte context loads 2016-09-30 02:10:15 -04:00
nuvoton net: ethernet: nuvoton: fix spelling mistake: "aligment" -> "alignment" 2016-08-18 23:29:43 -07:00
nvidia
nxp net: lpc_eth: Check clk_prepare_enable() error 2016-08-23 17:10:16 -07:00
oki-semi
packetengines
pasemi
qlogic qede: Fix incorrrect usage of APIs for un-mapping DMA memory 2016-10-22 17:08:07 -04:00
qualcomm net: qcom/emac: Fix module autoload for OF registration 2016-10-17 13:03:03 -04:00
rdc net: r6040: add in missing white space in error message text 2016-09-18 22:22:16 -04:00
realtek r8169: set coherent DMA mask as well as streaming DMA mask 2016-10-15 17:29:38 -04:00
renesas sh_eth: add R8A7743/5 support 2016-09-28 05:01:50 -04:00
rocker rocker: fix error return code in rocker_world_check_init() 2016-10-26 17:20:36 -04:00
samsung
seeq
sfc net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
sgi
silan
sis sis900: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:59 -07:00
smsc net: smc91x: take into account register shift 2016-09-25 23:45:32 -04:00
stmicro stmmac: display the descriptors if DES0 = 0 2016-10-20 11:27:25 -04:00
sun treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
synopsys dwc_eth_qos: enable flow control by default 2016-10-18 10:29:17 -04:00
tehuti net: tehuti: fix typo: "eneble" -> "enable" 2016-08-21 15:21:36 -07:00
ti tlan: avoid unused label with PCI=n 2016-10-13 09:56:00 -04:00
tile
toshiba net: ps3_gelic: Add missing \n to end of deb_dbg message 2016-10-06 20:41:16 -04:00
tundra net/ethernet: tundra: fix dump_eth_one warning in tsi108_eth 2016-08-08 13:08:21 -07:00
via via-velocity: remove null pointer check on array tdinfo->skb_dma 2016-09-09 18:17:33 -07:00
wiznet treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
xilinx net: axienet: Remove unused parameter from __axienet_device_reset 2016-10-13 12:15:28 -04:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
fealnx.c
jme.c
jme.h
Kconfig net: ena: Add a driver for Amazon Elastic Network Adapters (ENA) 2016-08-12 17:12:08 -07:00
korina.c
lantiq_etop.c
Makefile net: ena: Add a driver for Amazon Elastic Network Adapters (ENA) 2016-08-12 17:12:08 -07:00
netx-eth.c