diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-05-05 11:25:51 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-05-27 17:20:59 -0400 |
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 a3439ee7cb4e..4f3e2dd46f00 100644 --- a/drivers/ieee1394/eth1394.h +++ b/drivers/ieee1394/eth1394.h | |||
@@ -66,6 +66,10 @@ struct eth1394_priv { | |||
66 | int bc_dgl; /* Outgoing broadcast datagram label */ | 66 | int bc_dgl; /* Outgoing broadcast datagram label */ |
67 | struct list_head ip_node_list; /* List of IP capable nodes */ | 67 | struct list_head ip_node_list; /* List of IP capable nodes */ |
68 | struct unit_directory *ud_list[ALL_NODES]; /* Cached unit dir list */ | 68 | struct unit_directory *ud_list[ALL_NODES]; /* Cached unit dir list */ |
69 | |||
70 | struct work_struct wake; /* Wake up after xmit failure */ | ||
71 | struct net_device *wake_dev; /* Stupid backlink for .wake */ | ||
72 | nodeid_t wake_node; /* Destination of failed xmit */ | ||
69 | }; | 73 | }; |
70 | 74 | ||
71 | 75 | ||