linux/drivers/net
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
..
appletalk
arcnet
bonding bonding: fix the typo 2016-08-09 14:57:14 -07:00
caif virtio/vhost: new features for 4.8 2016-08-06 09:20:13 -04:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-30 05:03:36 -04:00
cris
dsa net: dsa: bcm_sf2: Fix race condition while unmasking interrupts 2016-08-25 16:49:25 -07:00
ethernet bnx2x: don't reset chip on cleanup if PCI function is offline 2016-09-01 22:49:49 -07:00
fddi net: skfb: remove obsolete -I cflag 2016-06-15 22:06:06 -07:00
fjes net: fjes: fjes_main: Remove create_workqueue 2016-06-03 19:29:42 -04:00
hamradio hamradio: baycom: fix old-style declaration 2016-06-16 22:06:30 -07:00
hippi
hyperv hv_netvsc: fix bonding devices check in netvsc_netdev_event() 2016-08-15 13:48:07 -07:00
ieee802154 mrf24j40: avoid uninitialized byte in SPI transfer to radio. 2016-07-12 11:54:53 +02:00
ipvlan ipvlan: Scrub skb before crossing the namespace boundry 2016-07-25 21:47:26 -07:00
irda net: irda: avoid null pointer dereference 2016-05-19 11:30:57 -07:00
phy Revert "phy: IRQ cannot be shared" 2016-08-25 16:53:47 -07:00
plip
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
slip
team team: loadbalance: push lacpdus to exact delivery 2016-08-26 13:08:59 -07:00
usb kaweth: fix oops upon failed memory allocation 2016-08-18 23:25:33 -07:00
vmxnet3 vmxnet3: fix tx data ring copy for variable size 2016-08-19 22:44:22 -07:00
wan wan/fsl_ucc_hdlc: avoid possible NULL pointer dereference 2016-08-01 13:32:52 -07:00
wimax
wireless Merge ath-current from ath.git 2016-08-29 21:39:04 +03:00
xen-netback xen-netback: only deinitialized hash if it was initialized 2016-05-20 17:41:18 -04:00
Kconfig
LICENSE.SRC
Makefile
Space.c net: Fix coding style warnings and errors. 2016-05-19 11:48:27 -07:00
dummy.c
eql.c
geneve.c drivers/net: fixup comments after "Future-proof tunnel offload handlers" 2016-07-11 13:42:11 -07:00
gtp.c gtp: remove unused including <linux/version.h> 2016-06-17 22:28:49 -07:00
ifb.c
loopback.c loopback: make use of NETIF_F_GSO_SOFTWARE 2016-06-03 19:37:21 -04:00
macsec.c net: remove type_check from dev_get_nest_level() 2016-08-13 15:15:54 -07:00
macvlan.c net: remove type_check from dev_get_nest_level() 2016-08-13 15:15:54 -07:00
macvtap.c macvtap: fix use after free for skb_array during release 2016-08-11 09:55:51 -07:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
sungem_phy.c
tun.c tun: fix transmit timestamp support 2016-08-23 23:09:27 -07:00
veth.c
virtio_net.c virtio-net: Remove more stack DMA 2016-07-19 19:25:43 -07:00
vrf.c net: vrf: Add support for PREROUTING rules on vrf device 2016-07-05 11:50:05 -07:00
vxlan.c net: vxlan: lwt: Fix vxlan local traffic. 2016-08-08 14:16:24 -07:00
xen-netfront.c