summaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.h
diff options
context:
space:
mode:
authorMike McCormack <mikem@ring3k.org>2009-07-31 01:57:42 +0000
committerDavid S. Miller <davem@davemloft.net>2009-08-03 19:02:36 -0700
commitf6caa14aa0b126d4a2933907d1519611b2a8524a (patch)
tree27f01a9597e56f0489746ad5fc9fc8b01e4f5368 /drivers/net/sky2.h
parent202ff1ec8e53d5dd36e1a5bd4b0a7ed7dbd45087 (diff)
downloadlinux-f6caa14aa0b126d4a2933907d1519611b2a8524a.tar.gz
linux-f6caa14aa0b126d4a2933907d1519611b2a8524a.tar.bz2
linux-f6caa14aa0b126d4a2933907d1519611b2a8524a.zip
sky2: Avoid transmits during sky2_down()
This patch supersedes my previous patch "sky2: Avoid transmitting during sky2_restart". I have reworked the patch to avoid crashes during both sky2_restart() and sky2_set_ringparam(). Without this patch, the sky2 driver can be crashed by doing: # pktgen eth1 & (transmit many packets on eth1) # ethtool -G eth1 tx 510 I am aware you object to storing extra state, but I can't see a way around this. Without remembering that we're restarting, netif_wake_queue() is called in the ISR from sky2_tx_complete(), and netif_tx_lock() is used in sky2_tx_done(). If anybody can see a way around this, please let me know. Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r--drivers/net/sky2.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index b5549c9e5107..4486b066b43f 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -2051,6 +2051,7 @@ struct sky2_port {
u8 duplex; /* DUPLEX_HALF, DUPLEX_FULL */
u8 rx_csum;
u8 wol;
+ u8 restarting;
enum flow_control flow_mode;
enum flow_control flow_status;