linux/drivers/net/ethernet/broadcom/bnx2x
Guilherme G. Piccoli b44e108b6f bnx2x: don't reset chip on cleanup if PCI function is offline
When PCI error is detected, in some architectures (like PowerPC) a slot
reset is performed - the driver's error handlers are in charge of "disable"
device before the reset, and re-enable it after a successful slot reset.

There are two cases though that another path is taken on the code: if the
slot reset is not successful or if too many errors already happened in the
specific adapter (meaning that possibly the device is experiencing a HW
failure that slot reset is not able to solve), the core PCI error mechanism
(called EEH in PowerPC) will remove the adapter from the system, since it
will consider this as a permanent failure on device. In this case, a path
is taken that leads to bnx2x_chip_cleanup() calling bnx2x_reset_hw(), which
then tries to perform a HW reset on chip. This reset won't succeed since
the HW is in a fault state, which can be seen by multiple messages on
kernel log like below:

	bnx2x: [bnx2x_issue_dmae_with_comp:552(eth1)]DMAE timeout!
	bnx2x: [bnx2x_write_dmae:600(eth1)]DMAE returned failure -1

After some time, the PCI error mechanism gives up on waiting the driver's
correct removal procedure and forcibly remove the adapter from the system.
We can see soft lockup while core PCI error mechanism is waiting for driver
to accomplish the right removal process.

This patch adds a verification to avoid a chip reset whenever the function
is in PCI error state - since this case is only reached when we have a
device being removed because of a permanent failure, the HW chip reset is
not expected to work fine neither is necessary.

Also, as a minor improvement in error path, we avoid the MCP information dump
in case of non-recoverable PCI error (when adapter is about to be removed),
since it will certainly fail.

Reported-by: Harsha Thyagaraja <hathyaga@in.ibm.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Acked-By: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-09-01 22:49:49 -07:00
..
bnx2x_cmn.c bnx2x: don't wait for Tx completion on recovery 2016-03-16 19:23:35 -04:00
bnx2x_cmn.h net: rework setup_tc ndo op to consume general tc operand 2016-02-17 09:47:35 -05:00
bnx2x_dcb.c bnx2x: extend DCBx support 2016-02-16 20:12:16 -05:00
bnx2x_dcb.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_dump.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_ethtool.c bnx2x: Warn about grc timeouts in register dump 2016-02-16 20:12:16 -05:00
bnx2x_fw_defs.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_fw_file_hdr.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_hsi.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
bnx2x_init_ops.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_init.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_link.c bnx2x: Fix 84833 phy command handler 2016-02-21 22:50:55 -05:00
bnx2x_link.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_main.c bnx2x: don't reset chip on cleanup if PCI function is offline 2016-09-01 22:49:49 -07:00
bnx2x_mfw_req.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_reg.h bnx2x: Fix 84833 phy command handler 2016-02-21 22:50:55 -05:00
bnx2x_sp.c bnx2x: byte swap rss_key to comply to Toeplitz specs 2015-09-24 14:34:49 -07:00
bnx2x_sp.h bnx2x: add vlan filtering offload 2015-07-29 23:24:45 -07:00
bnx2x_sriov.c bnx2x: define fields of struct cfc_del_event_data as little-endian 2016-03-02 13:31:56 -05:00
bnx2x_sriov.h bnx2x: Fix compilation when CONFIG_BNX2X_SRIOV is not set 2015-07-30 09:52:18 -07:00
bnx2x_stats.c bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_stats.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_vfpf.c bnx2x: fix receive of VF->PF mailbox messages by the PF on big-endian 2016-03-02 13:31:56 -05:00
bnx2x_vfpf.h bnx2x: add vlan filtering offload 2015-07-29 23:24:45 -07:00
bnx2x.h bnx2x: Add Geneve inner-RSS support 2016-02-16 20:12:16 -05:00
Makefile