linux/drivers/net/ethernet/intel/fm10k
Jacob Keller 5c66d1251d fm10k: stop spurious link down messages when Tx FIFO is full
In fm10k_get_host_state_generic, we check the mailbox tx_read() function
to ensure that the mailbox is still open. This function also checks to
make sure we have space to transmit another message. Unfortunately, if
we just recently sent a bunch of messages (such as enabling hundreds of
VLANs on a VF) this can result in a race where the watchdog task thinks
the link went down just because we haven't had time to process all these
messages yet.

Instead, lets just check whether the mailbox is still open. This ensures
that we don't race with the Tx FIFO, and we only link down once the
mailbox is not open.

This is safe, because if the FIFO fills up and we're unable to send
a message for too long, we'll end up triggering the timeout detection
which results in a reset. Additionally, since we still check to ensure
the mailbox state is OPEN, we'll transition to link down whenever the
mailbox closes as well.

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-02 07:40:31 -07:00
..
fm10k_common.c fm10k: stop spurious link down messages when Tx FIFO is full 2017-10-02 07:40:31 -07:00
fm10k_common.h fm10k: prefer READ_ONCE instead of ACCESS_ONCE 2016-08-29 01:31:03 -07:00
fm10k_dcbnl.c fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00
fm10k_debugfs.c fm10k: Use seq_putc() in fm10k_dbg_desc_break() 2017-10-02 07:28:57 -07:00
fm10k_ethtool.c fm10k: future-proof state bitmaps using DECLARE_BITMAP 2017-04-05 22:47:30 -07:00
fm10k_iov.c fm10k: reschedule service event if we stall the PF<->SM mailbox 2017-10-02 07:25:47 -07:00
fm10k_main.c fm10k: future-proof state bitmaps using DECLARE_BITMAP 2017-04-05 22:47:30 -07:00
fm10k_mbx.c fm10k: request reset when mbx->state changes 2017-01-08 01:33:43 -08:00
fm10k_mbx.h fm10k: Reset mailbox global interrupts 2016-07-20 15:22:10 -07:00
fm10k_netdev.c net: sched: get rid of struct tc_to_netdev 2017-08-07 09:42:37 -07:00
fm10k_pci.c PCI: Split ->reset_notify() method into ->reset_prepare() and ->reset_done() 2017-07-03 07:58:30 -05:00
fm10k_pf.c fm10k: do not clear global mailbox interrupt bits 2017-01-08 01:35:19 -08:00
fm10k_pf.h fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00
fm10k_tlv.c fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00
fm10k_tlv.h fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00
fm10k_type.h fm10k: add support for Rx offloads on one Geneve tunnel 2016-08-29 01:31:03 -07:00
fm10k_vf.c fm10k: don't stop reset due to FM10K_ERR_REQUESTS_PENDING 2016-07-20 15:22:11 -07:00
fm10k_vf.h fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00
fm10k.h fm10k: allow service task to reschedule itself 2017-04-05 22:47:30 -07:00
Makefile fm10k: consistently use Intel(R) for driver names 2016-04-20 23:07:34 -07:00