ChangeSet 1.1760.26.23, 2004/06/29 09:49:30-07:00, [EMAIL PROTECTED]
[PATCH] USB: Fix pegasus_set_multicast lockup in drivers/usb/net/pegasus.c
I strongly recommend that this patch be applied.
Without this patch, running tcpdump on an SMP machine with the
pegasus adapter locks up 9 times out of 10. This is what happens:
CPU0 CPU1
pegasus_start_xmit
netif_stop_queue
pegasus_set_multicast
netif_stop_queue
netif_wake_queue
Which crashes if another packet is sent to pegasus_start_xmit before
the first one is finished.
If there are other drivers doing this, please fix them too.
PS I submitted this to Petkan years ago but he probably lost it.
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
drivers/usb/net/pegasus.c | 4 ----
1 files changed, 4 deletions(-)
diff -Nru a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c
--- a/drivers/usb/net/pegasus.c 2004-06-29 16:24:54 -07:00
+++ b/drivers/usb/net/pegasus.c 2004-06-29 16:24:54 -07:00
@@ -1137,8 +1137,6 @@
{
pegasus_t *pegasus = net->priv;
- netif_stop_queue(net);
-
if (net->flags & IFF_PROMISC) {
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
info("%s: Promiscuous mode enabled", net->name);
@@ -1154,8 +1152,6 @@
pegasus->flags |= ETH_REGS_CHANGE;
ctrl_callback(pegasus->ctrl_urb, NULL);
-
- netif_wake_queue(net);
}
static __u8 mii_phy_probe(pegasus_t * pegasus)
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel