ixgbe: Do not attempt to perform interrupts in netpoll when down
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 13 Jan 2010 01:49:13 +0000 (01:49 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Jan 2010 01:12:45 +0000 (17:12 -0800)
This patch resolves issues seen when running netconsole and rebooting via
reboot -f.  The issue was due to the fact that we were attempting to
perform interrupt actions when the q_vectors and rings had already been
freed via the ixgbe_shutdown routines.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Mallikarjuna R Chilakala <mallikarjuna.chilakala@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

index 2ad754c864cf9b9bc6616cb2009ac388e5df71dd..385976709e767af97674fa8da0386a95400d7438 100644 (file)
@@ -5576,6 +5576,10 @@ static void ixgbe_netpoll(struct net_device *netdev)
        struct ixgbe_adapter *adapter = netdev_priv(netdev);
        int i;
 
+       /* if interface is down do nothing */
+       if (test_bit(__IXGBE_DOWN, &adapter->state))
+               return;
+
        adapter->flags |= IXGBE_FLAG_IN_NETPOLL;
        if (adapter->flags & IXGBE_FLAG_MSIX_ENABLED) {
                int num_q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;