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>
This commit is contained in:
parent
6f7714196b
commit
f2251f668e
1 changed files with 4 additions and 2 deletions
|
@ -1011,8 +1011,10 @@ __netxen_nic_down(struct netxen_adapter *adapter, struct net_device *netdev)
|
|||
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);
|
||||
|
@ -2053,7 +2055,7 @@ static int netxen_nic_poll(struct napi_struct *napi, int budget)
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue