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>
This commit is contained in:
Stefan Richter
2007-05-05 17:25:51 +02:00
bovenliggende 69c29fa7d1
commit 7a97bc03e0
2 gewijzigde bestanden met toevoegingen van 67 en 17 verwijderingen

Bestand weergeven

@@ -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 */
};