linux/drivers/net/ethernet/cavium/liquidio
Felix Manlunas bb54be589c liquidio: fix Octeon core watchdog timeout false alarm
Detection of watchdog timeout of Octeon cores is flawed and susceptible to
false alarms.  Refactor by removing the detection code, and in its place,
leverage existing code that monitors for an indication from the NIC
firmware that an Octeon core crashed; expand the meaning of the indication
to "an Octeon core crashed or its watchdog timer expired".  Detection of
watchdog timeout is now delegated to an exception handler in the NIC
firmware; this is free of false alarms.

Also if there's an Octeon core crash or watchdog timeout:
(1) Disable VF Ethernet links.
(2) Decrement the module refcount by an amount equal to the number of
    active VFs of the NIC whose Octeon core crashed or had a watchdog
    timeout.  The refcount will continue to reflect the active VFs of
    other liquidio NIC(s) (if present) whose Octeon cores are faultless.

Item (2) is needed to avoid the case of not being able to unload the driver
because the module refcount is stuck at some non-zero number.  There is
code that, in normal cases, decrements the refcount upon receiving a
message from the firmware that a VF driver was unloaded.  But in
exceptional cases like an Octeon core crash or watchdog timeout, arrival of
that particular message from the firmware might be unreliable.  That normal
case code is changed to not touch the refcount in the exceptional case to
avoid contention (over the refcount) with the liquidio_watchdog kernel
thread who will carry out item (2).

Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: Derek Chickles <derek.chickles@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-04-06 12:31:56 -07:00
..
cn23xx_pf_device.c liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
cn23xx_pf_device.h liquidio: allocate RX buffers in OOM conditions in PF and VF 2017-03-22 19:36:43 -07:00
cn23xx_pf_regs.h liquidio CN23XX: fix for new check patch errors 2016-11-15 22:24:40 -05:00
cn23xx_vf_device.c liquidio CN23XX: VF xmit 2016-12-08 13:21:39 -05:00
cn23xx_vf_device.h liquidio VF ethtool stats 2016-12-08 18:16:51 -05:00
cn23xx_vf_regs.h liquidio CN23XX: VF register definitions 2016-11-30 11:03:08 -05:00
cn66xx_device.c liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
cn66xx_device.h liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
cn66xx_regs.h liquidio CN23XX: fix for new check patch errors 2016-11-15 22:24:40 -05:00
cn68xx_device.c liquidio CN23XX: fix for new check patch errors 2016-11-15 22:24:40 -05:00
cn68xx_device.h liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
cn68xx_regs.h liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
lio_core.c liquidio: allocate RX buffers in OOM conditions in PF and VF 2017-03-22 19:36:43 -07:00
lio_ethtool.c liquidio: clear the correct memory 2017-04-05 06:53:42 -07:00
lio_main.c liquidio: fix Octeon core watchdog timeout false alarm 2017-04-06 12:31:56 -07:00
lio_vf_main.c drivers: add explicit interrupt.h includes 2017-03-30 11:05:34 -07:00
liquidio_common.h liquidio: refactor interrupt moderation code 2017-03-28 22:22:03 -07:00
liquidio_image.h liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
Makefile liquidio CN23XX: VF config setup 2016-11-30 11:03:08 -05:00
octeon_config.h liquidio: improve UDP TX performance 2017-03-09 13:07:00 -08:00
octeon_console.c net: liquidio: fix build errors when linux/phy*.h is removed from net/dsa.h 2017-02-10 13:51:03 -05:00
octeon_device.c liquidio: optimize DMA in NUMA systems 2017-03-12 23:17:00 -07:00
octeon_device.h liquidio: fix Octeon core watchdog timeout false alarm 2017-04-06 12:31:56 -07:00
octeon_droq.c liquidio: allocate RX buffers in OOM conditions in PF and VF 2017-03-22 19:36:43 -07:00
octeon_droq.h liquidio: allocate RX buffers in OOM conditions in PF and VF 2017-03-22 19:36:43 -07:00
octeon_iq.h liquidio: optimize DMA in NUMA systems 2017-03-12 23:17:00 -07:00
octeon_mailbox.c liquidio VF: reduce load time of module 2017-01-12 15:52:56 -05:00
octeon_mailbox.h liquidio VF: reduce load time of module 2017-01-12 15:52:56 -05:00
octeon_main.h liquidio: improve UDP TX performance 2017-03-09 13:07:00 -08:00
octeon_mem_ops.c liquidio: optimize reads from Octeon PCI console 2016-12-29 22:26:03 -05:00
octeon_mem_ops.h liquidio CN23XX: copyrights changes and alignment 2016-11-15 22:24:40 -05:00
octeon_network.h liquidio: fix Octeon core watchdog timeout false alarm 2017-04-06 12:31:56 -07:00
octeon_nic.c liquidio VF: fix incorrect struct being used 2017-01-06 15:31:24 -05:00
octeon_nic.h liquidio CN23XX: fix for new check patch errors 2016-11-15 22:24:40 -05:00
request_manager.c liquidio: optimize DMA in NUMA systems 2017-03-12 23:17:00 -07:00
response_manager.c liquidio: fix for vf mac addr command sent to nic firmware 2017-03-21 17:48:29 -07:00
response_manager.h liquidio: fix for vf mac addr command sent to nic firmware 2017-03-21 17:48:29 -07:00