linux/drivers/net/ethernet/mellanox/mlx4
Jack Morgenstein 4cbe4dac82 net/mlx4_core: Avoid delays during VF driver device shutdown
Some Hypervisors detach VFs from VMs by instantly causing an FLR event
to be generated for a VF.

In the mlx4 case, this will cause that VF's comm channel to be disabled
before the VM has an opportunity to invoke the VF device's "shutdown"
method.

For such Hypervisors, there is a race condition between the VF's
shutdown method and its internal-error detection/reset thread.

The internal-error detection/reset thread (which runs every 5 seconds) also
detects a disabled comm channel. If the internal-error detection/reset
flow wins the race, we still get delays (while that flow tries repeatedly
to detect comm-channel recovery).

The cited commit fixed the command timeout problem when the
internal-error detection/reset flow loses the race.

This commit avoids the unneeded delays when the internal-error
detection/reset flow wins.

Fixes: d585df1c5c ("net/mlx4_core: Avoid command timeouts during VF driver device shutdown")
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Reported-by: Simon Xiao <sixiao@microsoft.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-03-16 20:14:51 -07:00
..
Kconfig ptp_clock: Allow for it to be optional 2016-11-16 09:26:34 +01:00
Makefile net/mlx4: New file for QoS related firmware commands 2015-04-02 16:25:02 -04:00
alloc.c net/mlx4: Avoid wrong virtual mappings 2016-05-05 23:23:05 -04:00
catas.c net/mlx4_core: Avoid command timeouts during VF driver device shutdown 2017-01-30 15:45:27 -05:00
cmd.c net/mlx4_core: Avoid delays during VF driver device shutdown 2017-03-16 20:14:51 -07:00
cq.c mlx4: do not fire tasklet unless necessary 2017-02-17 10:55:22 -05:00
en_clock.c net/mlx4_en: fix overflow in mlx4_en_init_timestamp() 2017-02-26 15:39:43 -05:00
en_cq.c net/mlx4_en: remove napi_hash_del() call 2016-11-17 11:17:05 -05:00
en_dcb_nl.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
en_ethtool.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-07 16:29:30 -05:00
en_main.c net/mlx4_en: Refactor the XDP forwarding rings scheme 2016-11-02 15:07:11 -04:00
en_netdev.c net/mlx4: Spoofcheck and zero MAC can't coexist 2017-02-23 10:57:56 -05:00
en_port.c mlx4: fix use-after-free in mlx4_en_fold_software_stats() 2016-12-02 13:33:32 -05:00
en_port.h net/mlx4_en: Check the enabling pptx/pprx flags in SET_PORT wrapper flow 2017-01-30 15:26:43 -05:00
en_resources.c net/mlx4: Avoid wrong virtual mappings 2016-05-05 23:23:05 -04:00
en_rx.c net/mlx4_en: Use __skb_fill_page_desc() 2017-02-23 10:57:57 -05:00
en_selftest.c mlx4: use reset to set mac header 2016-12-03 15:49:16 -05:00
en_tx.c net/mlx4_core: Get num_tc using netdev_get_num_tc 2017-01-30 15:26:42 -05:00
eq.c net/mlx4_core: Use cq quota in SRIOV when creating completion EQs 2017-02-23 10:57:57 -05:00
fw.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
fw.h mlx4: remove unused fields 2016-09-30 01:56:41 -04:00
fw_qos.c net/mlx4: Add mlx4_SET_VPORT_QOS implementation 2015-04-02 16:25:02 -04:00
fw_qos.h net/mlx4: Added qos_vport QP configuration in VST mode 2015-04-02 16:25:03 -04:00
icm.c net/mlx4: Remove BUG_ON from ICM allocation routine 2016-12-29 14:17:40 -05:00
icm.h
intf.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
main.c net/mlx4_core: Avoid delays during VF driver device shutdown 2017-03-16 20:14:51 -07:00
mcg.c net/mlx4: Fix uninitialized fields in rule when adding promiscuous mode to device managed flow steering 2016-11-28 15:33:46 -05:00
mlx4.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-02-02 16:54:00 -05:00
mlx4_en.h net/mlx4_en: fix overflow in mlx4_en_init_timestamp() 2017-02-26 15:39:43 -05:00
mlx4_stats.h net/mlx4_en: Add ethtool statistics for XDP cases 2016-11-02 15:07:11 -04:00
mr.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
pd.c io-mapping: Specify mapping size for io_mapping_map_wc() 2016-04-28 12:17:32 +01:00
port.c net/mlx4_en: fix a condition 2017-02-06 12:01:06 -05:00
profile.c net/mlx4_core: use swap() in mlx4_make_profile() 2015-06-11 15:19:41 -07:00
qp.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
reset.c net/mlx4_core: Maintain a persistent memory for mlx4 device 2015-01-25 14:43:13 -08:00
resource_tracker.c net/mlx4: Change ENOTSUPP to EOPNOTSUPP 2017-02-23 10:57:56 -05:00
sense.c
srq.c net/mlx4_core: Use RCU to perform radix tree lookup for SRQ 2016-09-21 21:52:43 -04:00