diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-05-05 17:25:51 +0200 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-05-27 23:20:59 +0200 |
commit | 7a97bc03e089d1a75dc533f0fe69ec8dac672916 (patch) | |
tree | bfa5de17774786f4b0ef976fd645b2adc74bd4b7 /drivers/ieee1394/eth1394.h | |
parent | 69c29fa7d142d65b13e366ae51e50944484b65ab (diff) |
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.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ieee1394/eth1394.h b/drivers/ieee1394/eth1394.h index a3439ee7cb4..4f3e2dd46f0 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 */ }; |