linux_dsm_epyc7002/drivers/net/ethernet
Jacob Keller fc9173682d fm10k: introduce a message queue for MAC/VLAN messages
Under some circumstances, when dealing with a large number of MAC
address or VLAN updates at once, the fm10k driver, particularly the VFs
can overload the mailbox with too many messages at once.

This results in a mailbox timeout, which causes the driver to initiate
a reset. During the reset, we re-send all the same messages that
originally caused the timeout. This results in a cycle of resets each
triggering a future reset.

To fix or avoid this, we introduce a workqueue item which monitors
a queue of MAC and VLAN requests. These requests are queued to the end
of the list, and we process as a FIFO periodically.

Initially we only handle requests for the netdev, but we do handle
unicast MAC addresses, multicast MAC addresses, and update VLAN
requests.

A future patch will add support to use this queue for handling MAC
update requests from the VF<->PF mailbox.

The MAC/VLAN work item will keep checking to make sure that each request
does not overflow the mailbox and cause a timeout. If it might, then the
work item will reschedule itself a short time later. This avoids any
reset cycle, since we never send the message if the mailbox is not
ready.

As an alternative, we tried increasing the mailbox message FIFO, but
this just delays the problem and results in needless memory waste on the
system. Our new message queue is dynamically allocated so only uses as
much memory as it needs. Additionally, it need not be contiguous like
the Tx and Rx FIFOs.

Note that this patch chose to only create a queue for MAC and VLAN
messages, since these are the only messages sent in a large enough
volume to cause the reset loop. Other messages are very unlikely to
overflow the mailbox Tx FIFO so easily.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-10-03 08:25:36 -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
arc
atheros
aurora
broadcom bcm63xx_enet: remove unneeded include 2017-10-01 23:05:11 -07:00
brocade
cadence
calxeda
cavium bpf: add meta pointer for direct access 2017-09-26 13:36:44 -07:00
chelsio cxgb4: make function ch_flower_stats_cb, fixes warning 2017-09-28 10:21:37 -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
freescale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-09-23 10:16:53 -07:00
fujitsu
hisilicon net: hns3: fix null pointer dereference before null check 2017-10-01 04:12:45 +01: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 fm10k: introduce a message queue for MAC/VLAN messages 2017-10-03 08:25:36 -07:00
marvell drivers: net: pxa168: use setup_timer() helper. 2017-09-21 11:44:42 -07:00
mediatek
mellanox mlxsw: spectrum_router: Drop a redundant condition 2017-10-02 11:20: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: add software control for pause frame mode 2017-09-21 15:19:30 -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
rocker rocker: fix kcalloc parameter order 2017-09-05 14:52:31 -07:00
samsung
seeq
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-09-23 10:16:53 -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