[patch 28/29] USB: fix in usb_calc_bus_time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Dan Streetman <[email protected]>

This patch does the same swap, i.e. use the ISO macro if (isoc).  
Additionally, it fixes the return value - the usb_calc_bus_time function 
returns the time in nanoseconds (I didn't notice that before) while the 
HS_USECS and HS_USECS_ISO are microseconds.  This fixes the function to 
return nanoseconds always, and adjusts ehci-q.c (the only high-speed 
caller of the function) to wrap the call in NS_TO_US().

Signed-off-by: Dan Streetman <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


---
 drivers/usb/core/hcd.c    |    4 ++--
 drivers/usb/core/hcd.h    |    8 +++++---
 drivers/usb/host/ehci-q.c |    4 ++--
 3 files changed, 9 insertions(+), 7 deletions(-)

--- gregkh-2.6.orig/drivers/usb/core/hcd.c	2005-07-29 11:30:03.000000000 -0700
+++ gregkh-2.6/drivers/usb/core/hcd.c	2005-07-29 11:36:34.000000000 -0700
@@ -939,9 +939,9 @@
 	case USB_SPEED_HIGH:	/* ISOC or INTR */
 		// FIXME adjust for input vs output
 		if (isoc)
-			tmp = HS_USECS (bytecount);
+			tmp = HS_NSECS_ISO (bytecount);
 		else
-			tmp = HS_USECS_ISO (bytecount);
+			tmp = HS_NSECS (bytecount);
 		return tmp;
 	default:
 		pr_debug ("%s: bogus device speed!\n", usbcore_name);
--- gregkh-2.6.orig/drivers/usb/core/hcd.h	2005-07-29 11:29:47.000000000 -0700
+++ gregkh-2.6/drivers/usb/core/hcd.h	2005-07-29 11:36:34.000000000 -0700
@@ -334,17 +334,19 @@
 extern int usb_check_bandwidth (struct usb_device *dev, struct urb *urb);
 
 /*
- * Ceiling microseconds (typical) for that many bytes at high speed
+ * Ceiling [nano/micro]seconds (typical) for that many bytes at high speed
  * ISO is a bit less, no ACK ... from USB 2.0 spec, 5.11.3 (and needed
  * to preallocate bandwidth)
  */
 #define USB2_HOST_DELAY	5	/* nsec, guess */
-#define HS_USECS(bytes) NS_TO_US ( ((55 * 8 * 2083)/1000) \
+#define HS_NSECS(bytes) ( ((55 * 8 * 2083)/1000) \
 	+ ((2083UL * (3167 + BitTime (bytes)))/1000) \
 	+ USB2_HOST_DELAY)
-#define HS_USECS_ISO(bytes) NS_TO_US ( ((38 * 8 * 2083)/1000) \
+#define HS_NSECS_ISO(bytes) ( ((38 * 8 * 2083)/1000) \
 	+ ((2083UL * (3167 + BitTime (bytes)))/1000) \
 	+ USB2_HOST_DELAY)
+#define HS_USECS(bytes) NS_TO_US (HS_NSECS(bytes))
+#define HS_USECS_ISO(bytes) NS_TO_US (HS_NSECS_ISO(bytes))
 
 extern long usb_calc_bus_time (int speed, int is_input,
 			int isoc, int bytecount);
--- gregkh-2.6.orig/drivers/usb/host/ehci-q.c	2005-07-29 11:29:47.000000000 -0700
+++ gregkh-2.6/drivers/usb/host/ehci-q.c	2005-07-29 11:36:34.000000000 -0700
@@ -657,8 +657,8 @@
 	 * For control/bulk requests, the HC or TT handles these.
 	 */
 	if (type == PIPE_INTERRUPT) {
-		qh->usecs = usb_calc_bus_time (USB_SPEED_HIGH, is_input, 0,
-				hb_mult (maxp) * max_packet (maxp));
+		qh->usecs = NS_TO_US (usb_calc_bus_time (USB_SPEED_HIGH, is_input, 0,
+				hb_mult (maxp) * max_packet (maxp)));
 		qh->start = NO_FRAME;
 
 		if (urb->dev->speed == USB_SPEED_HIGH) {

--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux