projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6f77141
)
netxen:fix napi intr enable check
author
Amit Kumar Salecha
<
[email protected]
>
Sat, 5 Dec 2009 12:23:55 +0000
(12:23 +0000)
committer
David S. Miller
<
[email protected]
>
Wed, 9 Dec 2009 04:37:45 +0000
(20:37 -0800)
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 <
[email protected]
>
Signed-off-by: Amit Kumar Salecha <
[email protected]
>
Signed-off-by: David S. Miller <
[email protected]
>
drivers/net/netxen/netxen_nic_main.c
patch
|
blob
|
history
diff --git
a/drivers/net/netxen/netxen_nic_main.c
b/drivers/net/netxen/netxen_nic_main.c
index 8ffb30bc798f3c068e682c360a08a5a6166b342e..f4996846a234b0edd6bbc7bb8d49bb19e28ca4b2 100644
(file)
--- a/
drivers/net/netxen/netxen_nic_main.c
+++ b/
drivers/net/netxen/netxen_nic_main.c
@@
-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);
}