From c791ca5046214dd5e4925d35c5acb2db5eb5cab9 Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Mon, 4 Oct 2010 23:30:44 +0000 Subject: [PATCH] Print out correct USB connection speed for USB 3.0 mass storage devices. Approved by: thompsa (mentor) --- sys/dev/usb/storage/umass.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/sys/dev/usb/storage/umass.c b/sys/dev/usb/storage/umass.c index 5455917987c..ad6324c626c 100644 --- a/sys/dev/usb/storage/umass.c +++ b/sys/dev/usb/storage/umass.c @@ -231,6 +231,7 @@ TUNABLE_INT("hw.usb.umass.debug", &umass_debug); /* Approximate maximum transfer speeds (assumes 33% overhead). */ #define UMASS_FULL_TRANSFER_SPEED 1000 #define UMASS_HIGH_TRANSFER_SPEED 40000 +#define UMASS_SUPER_TRANSFER_SPEED 400000 #define UMASS_FLOPPY_TRANSFER_SPEED 20 #define UMASS_TIMEOUT 5000 /* ms */ @@ -2412,13 +2413,21 @@ umass_cam_action(struct cam_sim *sim, union ccb *ccb) if (sc->sc_quirks & FLOPPY_SPEED) { cpi->base_transfer_speed = UMASS_FLOPPY_TRANSFER_SPEED; - } else if (usbd_get_speed(sc->sc_udev) == - USB_SPEED_HIGH) { - cpi->base_transfer_speed = - UMASS_HIGH_TRANSFER_SPEED; } else { - cpi->base_transfer_speed = - UMASS_FULL_TRANSFER_SPEED; + switch (usbd_get_speed(sc->sc_udev)) { + case USB_SPEED_SUPER: + cpi->base_transfer_speed = + UMASS_SUPER_TRANSFER_SPEED; + break; + case USB_SPEED_HIGH: + cpi->base_transfer_speed = + UMASS_HIGH_TRANSFER_SPEED; + break; + default: + cpi->base_transfer_speed = + UMASS_FULL_TRANSFER_SPEED; + break; + } } cpi->max_lun = sc->sc_maxlun; }