aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ieee1394/eth1394.h
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-05-05 17:25:51 +0200
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-05-27 23:20:59 +0200
commit7a97bc03e089d1a75dc533f0fe69ec8dac672916 (patch)
treebfa5de17774786f4b0ef976fd645b2adc74bd4b7 /drivers/ieee1394/eth1394.h
parentieee1394: eth1394: remove bogus netif_wake_queue (diff)
downloadlinux-dev-7a97bc03e089d1a75dc533f0fe69ec8dac672916.tar.xz
linux-dev-7a97bc03e089d1a75dc533f0fe69ec8dac672916.zip
ieee1394: eth1394: handle tlabel exhaustion
When eth1394 was unable to acquire a transaction label, it just dropped outgoing packets without attempt to resend them later. The transmit queue is now halted if no tlabel is available to ->hard_start_xmit(). A workqueue job is then scheduled to catch the moment when ieee1394 recycled the next lot of tlabels. Fixes http://bugzilla.kernel.org/show_bug.cgi?id=8402 Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/ieee1394/eth1394.h')
-rw-r--r--drivers/ieee1394/eth1394.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ieee1394/eth1394.h b/drivers/ieee1394/eth1394.h
index a3439ee7cb4e..4f3e2dd46f00 100644
--- a/drivers/ieee1394/eth1394.h
+++ b/drivers/ieee1394/eth1394.h
@@ -66,6 +66,10 @@ struct eth1394_priv {
int bc_dgl; /* Outgoing broadcast datagram label */
struct list_head ip_node_list; /* List of IP capable nodes */
struct unit_directory *ud_list[ALL_NODES]; /* Cached unit dir list */
+
+ struct work_struct wake; /* Wake up after xmit failure */
+ struct net_device *wake_dev; /* Stupid backlink for .wake */
+ nodeid_t wake_node; /* Destination of failed xmit */
};