| From 2868a2b1ba8f9c7f6c4170519ebb6c62934df70e Mon Sep 17 00:00:00 2001 |
| From: Dmitry Torokhov <dtor@vmware.com> |
| Date: Fri, 18 Mar 2011 21:29:01 -0700 |
| Subject: USB: fix formatting of SuperSpeed endpoints in /proc/bus/usb/devices |
| |
| From: Dmitry Torokhov <dtor@vmware.com> |
| |
| commit 2868a2b1ba8f9c7f6c4170519ebb6c62934df70e upstream. |
| |
| Isochronous and interrupt SuperSpeed endpoints use the same mechanisms |
| for decoding bInterval values as HighSpeed ones so adjust the code |
| accordingly. |
| |
| Also bandwidth reservation for SuperSpeed matches highspeed, not |
| low/full speed. |
| |
| Signed-off-by: Dmitry Torokhov <dtor@vmware.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/core/devices.c | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/usb/core/devices.c |
| +++ b/drivers/usb/core/devices.c |
| @@ -211,7 +211,7 @@ static char *usb_dump_endpoint_descripto |
| break; |
| case USB_ENDPOINT_XFER_INT: |
| type = "Int."; |
| - if (speed == USB_SPEED_HIGH) |
| + if (speed == USB_SPEED_HIGH || speed == USB_SPEED_SUPER) |
| interval = 1 << (desc->bInterval - 1); |
| else |
| interval = desc->bInterval; |
| @@ -219,7 +219,8 @@ static char *usb_dump_endpoint_descripto |
| default: /* "can't happen" */ |
| return start; |
| } |
| - interval *= (speed == USB_SPEED_HIGH) ? 125 : 1000; |
| + interval *= (speed == USB_SPEED_HIGH || |
| + speed == USB_SPEED_SUPER) ? 125 : 1000; |
| if (interval % 1000) |
| unit = 'u'; |
| else { |
| @@ -529,8 +530,9 @@ static ssize_t usb_device_dump(char __us |
| if (level == 0) { |
| int max; |
| |
| - /* high speed reserves 80%, full/low reserves 90% */ |
| - if (usbdev->speed == USB_SPEED_HIGH) |
| + /* super/high speed reserves 80%, full/low reserves 90% */ |
| + if (usbdev->speed == USB_SPEED_HIGH || |
| + usbdev->speed == USB_SPEED_SUPER) |
| max = 800; |
| else |
| max = FRAME_TIME_MAX_USECS_ALLOC; |