Skip to contentSkip to conversation

b44: missing netif_wake_queue() in b44_open()

PATCH In review Mark Lord 1 participant 2 messages Nov 24, 2005 2 messages not in the archive Network drivers

lore
Share & tools
lore

Mark Lord

author
#0 lore raw

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]

author
#3 lore raw
Quoted 5 lines · Jeff Garzik

Nope. There's no need to wake the queue.

1) Use netif_start_queue() rather than netif_wake_queue(), in b44_open()

2) OTOH, netif_wake_queue() appears to be missing from the end of b44_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_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 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;
 }