o netif_running() check for enabling interrupt at end of napi poll is
  not enough to cover firmwar recovery. Instead test __NX_DEV_UP bit.
o Avoid re-entry into to netxen_nic_down() with __NX_DEV_UP bit check.
Acked-by: Dhananjay Phadke <dhananjay.phadke@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC)
                return;
 
-       clear_bit(__NX_DEV_UP, &adapter->state);
+       if (!test_and_clear_bit(__NX_DEV_UP, &adapter->state))
+               return;
 
+       smp_mb();
        spin_lock(&adapter->tx_clean_lock);
        netif_carrier_off(netdev);
        netif_tx_disable(netdev);
 
        if ((work_done < budget) && tx_complete) {
                napi_complete(&sds_ring->napi);
-               if (netif_running(adapter->netdev))
+               if (test_bit(__NX_DEV_UP, &adapter->state))
                        netxen_nic_enable_int(sds_ring);
        }