From: Brad Peters <bpeters@redhat.com> Date: Wed, 13 Aug 2008 11:15:24 -0400 Subject: [net] ixgbe: fix EEH recovery time Message-id: 20080813151524.20559.47428.sendpatchset@squad5-lp1.lab.bos.redhat.com O-Subject: [PATCH RHEL5.3 bz456466] Fix EEH on ixgbe recovery time Bugzilla: 457466 RH-Acked-by: David Howells <dhowells@redhat.com> RH-Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> RHBZ#: ====== https://bugzilla.redhat.com/show_bug.cgi?id=457466 Description: =========== Bug fix / All archs Using a systemtap script to show backtrace every time eeh_check_failure showed that the ixgbe_get_eeprom_semaphore does a LOT of reads in timeout loops that will never succeed, once the eeh has been triggered. These were resulting in substantial lag's in recovery time. Fix is to not attempt to reset an already failed adapter. RHEL Version Found: ================ RHEL 5.2 kABI Status: ============ No symbols were harmed. Brew: ===== Built on all platforms. http://brewweb.devel.redhat.com/brew/taskinfo?taskID=1428048 Upstream Status: ================ Already upstream: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6f4a0e45c6392f84436004d4c04d31b8ff5071c5 Test Status: ============ Adapter recovery on errinjct dropped from 23min to 7 sec =============================================================== Brad Peters 1-978-392-1000 x 23183 IBM on-site partner. Proposed Patch: =============== This patch is based on 2.6.18-103.el5 diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index dbc370a..f9ed223 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c @@ -1414,7 +1414,8 @@ void ixgbe_down(struct ixgbe_adapter *adapter) netif_carrier_off(netdev); netif_stop_queue(netdev); - ixgbe_reset(adapter); + if (!pci_channel_offline(adapter->pdev)) + ixgbe_reset(adapter); ixgbe_clean_all_tx_rings(adapter); ixgbe_clean_all_rx_rings(adapter);