b44: missing netif_wake_queue() in b44_open()
PATCH 1/1 b44: missing netif_wake_queue() in b44_open()
This patch fixes a problem plaguing Dell notebooks with built-in b44 ethernet: The driver refuses to transmit packets of any kind until after the first 5-second tx_timeout occurs. This bug causes DHCP negotiation to fail (timeout) during installation of Ubuntu Linux.
One-liner fix. Please review (and apply if you like it).
drivers/net/b44.c 2005-11-24 14:28:47.000000000 -0500 renamed from drivers/net/b44.c 2005-11-19 22:25:03.000000000 -0500 +1 -0
@@ -1417,6 +1417,7 @@ add_timer(&bp->timer); b44_enable_ints(bp); + netif_wake_queue(dev); /* prevent the initial tx_timeout() we otherwise see */ out: return err; }
drivers/net/b44.c +1 -0
@@ -1417,6 +1417,7 @@add_timer (&bp->timer);b44_enable_ints (bp); +netif_wake_queue (dev);/* prevent the initial tx_timeout() we otherwise see */ out:return err; }
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 5 lines · Jeff Garzik
Nope. There's no need to wake the queue.
1) Use
netif_start_queue()rather thannetif_wake_queue(), inb44_open()2) OTOH,
netif_wake_queue()appears to be missing from the end ofb44_resume(), which has highly similar code.
Ah. Thanks, Jeff!
I guess the e100.c driver was a bad example to copy here.
Fixed, tested, still works fine.
Patch now updated.
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
This patch fixes a problem plaguing Dell notebooks with built-in b44 ethernet: The driver refuses to transmit packets of any kind until after the first 5-second
tx_timeoutoccurs. This bug causes DHCP negotiation to fail (timeout) during installation of Ubuntu Linux.One-liner fix. Please review (and apply if you like it).
drivers/net/b44.c 2005-11-24 15:20:47.000000000 -0500 renamed from drivers/net/b44.c 2005-11-19 22:25:03.000000000 -0500 +2 -0
@@ -1417,6 +1417,7 @@ add_timer(&bp->timer); b44_enable_ints(bp); + netif_start_queue(dev); /* prevent the initial tx_timeout() we otherwise see */ out: return err; }
@@ -2113,6 +2114,7 @@ add_timer(&bp->timer); b44_enable_ints(bp); + netif_wake_queue(dev); return 0; }
drivers/net/b44.c +2 -0
@@ -1417,6 +1417,7 @@add_timer (&bp->timer);b44_enable_ints (bp); +netif_start_queue (dev);/* prevent the initial tx_timeout() we otherwise see */ out:return err; }
@@ -2113,6 +2114,7 @@add_timer (&bp->timer);b44_enable_ints (bp); +netif_wake_queue (dev);return 0 ; }