ixgbe: ixgbe_down needs to stop dev_watchdog
authorJohn Fastabend <john.r.fastabend@intel.com>
Tue, 27 Apr 2010 02:13:39 +0000 (02:13 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 Apr 2010 19:53:29 +0000 (12:53 -0700)
commitc0dfb90e5b2d41c907de9b624657a6688541837e
treece662b4bb4c737c4e398ea98e229784b396ac7f5
parentff846f52935e6c8dfb0c97df7c2c1bf777454684
ixgbe: ixgbe_down needs to stop dev_watchdog

There is a small race between when the tx queues are stopped
and when netif_carrier_off() is called in ixgbe_down.  If the
dev_watchdog() timer fires during this time it is possible for
a false tx timeout to occur.

This patch moves the netif_carrier_off() so that it is called before
the tx queues are stopped preventing the dev_watchdog timer from
detecting false tx timeouts.  The race is seen occosionally when
FCoE or DCB settings are being configured or changed.

Testing note, running ifconfig up/down will not reproduce this
issue because dev_open/dev_close call dev_deactivate() and then
dev_activate().

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ixgbe/ixgbe_main.c