Commit f2251f668e9527b87c9ba7256e7497cb49abbc20

Authored by Amit Kumar Salecha
Committed by David S. Miller
1 parent 6f7714196b

netxen:fix napi intr enable check

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>

Showing 1 changed file with 4 additions and 2 deletions Side-by-side Diff

drivers/net/netxen/netxen_nic_main.c
... ... @@ -1011,8 +1011,10 @@
1011 1011 if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC)
1012 1012 return;
1013 1013  
1014   - clear_bit(__NX_DEV_UP, &adapter->state);
  1014 + if (!test_and_clear_bit(__NX_DEV_UP, &adapter->state))
  1015 + return;
1015 1016  
  1017 + smp_mb();
1016 1018 spin_lock(&adapter->tx_clean_lock);
1017 1019 netif_carrier_off(netdev);
1018 1020 netif_tx_disable(netdev);
... ... @@ -2053,7 +2055,7 @@
2053 2055  
2054 2056 if ((work_done < budget) && tx_complete) {
2055 2057 napi_complete(&sds_ring->napi);
2056   - if (netif_running(adapter->netdev))
  2058 + if (test_bit(__NX_DEV_UP, &adapter->state))
2057 2059 netxen_nic_enable_int(sds_ring);
2058 2060 }
2059 2061