Commit f2251f668e9527b87c9ba7256e7497cb49abbc20
Committed by
David S. Miller
1 parent
6f7714196b
Exists in
master
and in
39 other branches
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 |