This patch: - Enables use of bulk queueing - Avoids stopping the tx queue until it's really needed
If enabling bulk queuing causes any problems in any of the HCDs, we'll want to find out ... :) Please merge to Linus' latest. - Dave
--- ./drivers/usb-dist/net/usbnet.c Wed Jun 26 11:36:23 2002 +++ ./drivers/usb/net/usbnet.c Mon Jul 15 18:38:12 2002 @@ -26,12 +26,7 @@ * See the LINUXDEV support. * * - * TODO: - * - * This needs to be retested for bulk queuing problems ... earlier versions - * seemed to find different types of problems in each HCD. Once they're fixed, - * re-enable queues to get higher bandwidth utilization (without needing - * to tweak MTU for larger packets). + * Status: * * - AN2720 ... not widely available, but reportedly works well * @@ -45,8 +40,8 @@ * but the Sharp Zaurus uses an incompatible protocol (extra checksums). * No reason not to merge the Zaurus protocol here too (got patch? :) * - * - For Netchip, use keventd to poll via control requests to detect hardware - * level "carrier detect". + * - For Netchip, should use keventd to poll via control requests to detect + * hardware level "carrier detect". * * - PL-230x ... the initialization protocol doesn't seem to match chip data * sheets, sometimes it's not needed and sometimes it hangs. Prolific has @@ -60,9 +55,9 @@ * * There are reports that bridging gives lower-than-usual throughput. * - * Craft smarter hotplug policy scripts ... ones that know how to arrange + * Need smarter hotplug policy scripts ... ones that know how to arrange * bridging with "brctl", and can handle static and dynamic ("pump") setups. - * Use those "peer connected" events. + * Use those eventual "peer connected" events. * * * CHANGELOG: @@ -122,7 +117,7 @@ // #define DEBUG // error path messages, extra info // #define VERBOSE // more; success messages -// #define REALLY_QUEUE +#define REALLY_QUEUE #if !defined (DEBUG) && defined (CONFIG_USB_DEBUG) # define DEBUG @@ -139,7 +134,7 @@ #define CONFIG_USB_PL2301 -#define DRIVER_VERSION "07-May-2002" +#define DRIVER_VERSION "17-Jul-2002" /*-------------------------------------------------------------------------*/ @@ -1821,20 +1816,19 @@ } #endif /* CONFIG_USB_NET1080 */ - netif_stop_queue (net); switch ((retval = usb_submit_urb (urb, GFP_ATOMIC))) { case -EPIPE: + netif_stop_queue (net); defer_kevent (dev, EVENT_TX_HALT); break; default: - netif_start_queue (net); dbg ("%s tx: submit urb err %d", net->name, retval); break; case 0: net->trans_start = jiffies; __skb_queue_tail (&dev->txq, skb); - if (dev->txq.qlen < TX_QLEN) - netif_start_queue (net); + if (dev->txq.qlen >= TX_QLEN) + netif_stop_queue (net); } spin_unlock_irqrestore (&dev->txq.lock, flags);