Greg:

Following a suggestion of David Brownell's I have decided to remove
support for the URB_NO_INTERRUPT flag in the UHCI driver.  The overall
effect of the flag is to reduce the number of interrupts, thereby
improving throughput somewhat while increasing the duration of the
remaining IRQ handlers quite a lot (i.e., increasing interrupt variance).  
So I think we're better off without it.  Mind you, this is all in the
absence of any firm measurements.

A common case where this will come up is during usb-storage bulk
transfers.  Such transfers are generally divided into scatter-gather
components each corresponding to a single URB and transferring one memory
page (4 KB).  While generating an interrupt for each one is a little
faster than ideal -- about every 3 ms -- it's better than waiting until 64
KB has been transferred and there are 1024 individual TDs to clean up
during the IRQ.

Please apply.

Alan Stern


===== drivers/usb/host/uhci-hcd.c 1.101 vs edited =====
--- 1.101/drivers/usb/host/uhci-hcd.c   Fri Mar 26 10:19:10 2004
+++ edited/drivers/usb/host/uhci-hcd.c  Fri Apr 16 11:02:37 2004
@@ -1034,9 +1034,13 @@
                        usb_pipeout(urb->pipe));
        }
 
-       /* Set the flag on the last packet */
-       if (!(urb->transfer_flags & URB_NO_INTERRUPT))
-               td->status |= cpu_to_le32(TD_CTRL_IOC);
+       /* Set the interrupt-on-completion flag on the last packet.
+        * A more-or-less typical 4 KB URB (= size of one memory page)
+        * will require about 3 ms to transfer; that's a little on the
+        * fast side but not enough to justify delaying an interrupt
+        * more than 2 or 3 URBs, so we will ignore the URB_NO_INTERRUPT
+        * flag setting. */
+       td->status |= cpu_to_le32(TD_CTRL_IOC);
 
        qh = uhci_alloc_qh(uhci, urb->dev);
        if (!qh)



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to