summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2015-01-19 07:06:15 +0000
committerhselasky <hselasky@FreeBSD.org>2015-01-19 07:06:15 +0000
commit5f3d7c27fb5899fbf2e40a5a0cc6eee2d1e84c30 (patch)
tree7472791724ce95b684441555b6b63feabde17f88 /sys/dev
parent8f83c90921ddf9567c559c97488b16ef32c751bf (diff)
downloadFreeBSD-src-5f3d7c27fb5899fbf2e40a5a0cc6eee2d1e84c30.zip
FreeBSD-src-5f3d7c27fb5899fbf2e40a5a0cc6eee2d1e84c30.tar.gz
MFC r277044:
Increase the maximum number of dynamic USB quirks. USB memory stick devices which don't support the synchronize cache SCSI command are likely to also not support the prevent-allow medium removal SCSI command. PR: 185747
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/usb/usb_freebsd.h2
-rw-r--r--sys/dev/usb/usb_freebsd_loader.h2
-rw-r--r--sys/dev/usb/usb_msctest.c11
3 files changed, 10 insertions, 5 deletions
diff --git a/sys/dev/usb/usb_freebsd.h b/sys/dev/usb/usb_freebsd.h
index 7ae5c9b..c072864 100644
--- a/sys/dev/usb/usb_freebsd.h
+++ b/sys/dev/usb/usb_freebsd.h
@@ -87,7 +87,7 @@
#define USB_EP0_BUFSIZE 1024 /* bytes */
#define USB_CS_RESET_LIMIT 20 /* failures = 20 * 50 ms = 1sec */
-#define USB_MAX_AUTO_QUIRK 4 /* maximum number of dynamic quirks */
+#define USB_MAX_AUTO_QUIRK 8 /* maximum number of dynamic quirks */
typedef uint32_t usb_timeout_t; /* milliseconds */
typedef uint32_t usb_frlength_t; /* bytes */
diff --git a/sys/dev/usb/usb_freebsd_loader.h b/sys/dev/usb/usb_freebsd_loader.h
index 7d8281a..53b3234 100644
--- a/sys/dev/usb/usb_freebsd_loader.h
+++ b/sys/dev/usb/usb_freebsd_loader.h
@@ -82,7 +82,7 @@
#define USB_EP0_BUFSIZE 1024 /* bytes */
#define USB_CS_RESET_LIMIT 20 /* failures = 20 * 50 ms = 1sec */
-#define USB_MAX_AUTO_QUIRK 4 /* maximum number of dynamic quirks */
+#define USB_MAX_AUTO_QUIRK 8 /* maximum number of dynamic quirks */
typedef uint32_t usb_timeout_t; /* milliseconds */
typedef uint32_t usb_frlength_t; /* bytes */
diff --git a/sys/dev/usb/usb_msctest.c b/sys/dev/usb/usb_msctest.c
index 758abb7..d09ab72 100644
--- a/sys/dev/usb/usb_msctest.c
+++ b/sys/dev/usb/usb_msctest.c
@@ -711,10 +711,11 @@ retry_sync_cache:
if (err != ERR_CSW_FAILED)
goto error;
- DPRINTF("Device doesn't handle synchronize cache\n");
+ DPRINTF("Device doesn't handle synchronize cache "
+ "and prevent allow medium removal\n");
usbd_add_dynamic_quirk(udev, UQ_MSC_NO_SYNC_CACHE);
-
+ usbd_add_dynamic_quirk(udev, UQ_MSC_NO_PREVENT_ALLOW);
} else {
/*
@@ -741,10 +742,13 @@ retry_sync_cache:
goto retry_sync_cache;
DPRINTF("Device most likely doesn't "
- "handle synchronize cache\n");
+ "handle synchronize cache nor"
+ "prevent allow medium removal\n");
usbd_add_dynamic_quirk(udev,
UQ_MSC_NO_SYNC_CACHE);
+ usbd_add_dynamic_quirk(udev,
+ UQ_MSC_NO_PREVENT_ALLOW);
} else {
if (err != ERR_CSW_FAILED)
goto error;
@@ -788,6 +792,7 @@ error:
DPRINTF("Device did not respond, enabling all quirks\n");
usbd_add_dynamic_quirk(udev, UQ_MSC_NO_SYNC_CACHE);
+ usbd_add_dynamic_quirk(udev, UQ_MSC_NO_PREVENT_ALLOW);
usbd_add_dynamic_quirk(udev, UQ_MSC_NO_TEST_UNIT_READY);
/* Need to re-enumerate the device */
OpenPOWER on IntegriCloud