Author: hselasky
Date: Mon Jan 19 07:06:15 2015
New Revision: 277364
URL: https://svnweb.freebsd.org/changeset/base/277364

Log:
  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

Modified:
  stable/10/sys/dev/usb/usb_freebsd.h
  stable/10/sys/dev/usb/usb_freebsd_loader.h
  stable/10/sys/dev/usb/usb_msctest.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/usb/usb_freebsd.h
==============================================================================
--- stable/10/sys/dev/usb/usb_freebsd.h Mon Jan 19 07:03:40 2015        
(r277363)
+++ stable/10/sys/dev/usb/usb_freebsd.h Mon Jan 19 07:06:15 2015        
(r277364)
@@ -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 */

Modified: stable/10/sys/dev/usb/usb_freebsd_loader.h
==============================================================================
--- stable/10/sys/dev/usb/usb_freebsd_loader.h  Mon Jan 19 07:03:40 2015        
(r277363)
+++ stable/10/sys/dev/usb/usb_freebsd_loader.h  Mon Jan 19 07:06:15 2015        
(r277364)
@@ -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 */

Modified: stable/10/sys/dev/usb/usb_msctest.c
==============================================================================
--- stable/10/sys/dev/usb/usb_msctest.c Mon Jan 19 07:03:40 2015        
(r277363)
+++ stable/10/sys/dev/usb/usb_msctest.c Mon Jan 19 07:06:15 2015        
(r277364)
@@ -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 */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to