[Bug 263868] usb_msc_auto_quirk and usb memory card readers

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 15 Jun 2022 21:49:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263868

Lukas Turek <8an@praha12.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |8an@praha12.net

--- Comment #5 from Lukas Turek <8an@praha12.net> ---
I have a similar problem with D30919, for me it broke InnoDisk Nano USB stick.
In 13.0 it was detected correctly:

ugen0.7: <InnoDisk Nano USB> at usbus0
umass1 on uhub0
umass1: <InnoDisk Nano USB, class 0/0, rev 2.00/2.50, addr 6> on usbus0
umass1:  SCSI over Bulk-Only; quirks = 0xc100
umass1:15:1: Attached to scbus15
da1 at umass-sim1 bus 1 scbus15 target 0 lun 0
da1: <InnoDisk Nano USB 0250> Removable Direct Access SCSI device
da1: Serial Number 16E24A000014
da1: 40.000MB/s transfers
da1: 976MB (2000895 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>

In 13.1 the USB stick freezes and won't reconnect even after reboot, it needs
to be physically unplugged and plugged back:

usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
usb_msc_auto_quirk: UQ_MSC_NO_PREVENT_ALLOW set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
usb_msc_auto_quirk: UQ_MSC_NO_SYNC_CACHE set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
ugen0.7: <InnoDisk Nano USB> at usbus0
umass1 on uhub0
umass1: <InnoDisk Nano USB, class 0/0, rev 2.00/2.50, addr 6> on usbus0
umass1:  SCSI over Bulk-Only; quirks = 0xc100
umass1:15:1: Attached to scbus15
(probe0:umass-sim1:1:0:0): INQUIRY. CDB: 12 00 00 00 24 00
(probe0:umass-sim1:1:0:0): CAM status: CCB request completed with an error
(probe0:umass-sim1:1:0:0): Retrying command, 3 more tries remain
(probe0:umass-sim1:1:0:0): INQUIRY. CDB: 12 00 00 00 24 00
(probe0:umass-sim1:1:0:0): CAM status: CCB request completed with an error
(probe0:umass-sim1:1:0:0): Retrying command, 2 more tries remain
(probe0:umass-sim1:1:0:0): INQUIRY. CDB: 12 00 00 00 24 00
(probe0:umass-sim1:1:0:0): CAM status: CCB request completed with an error
(probe0:umass-sim1:1:0:0): Retrying command, 1 more tries remain
(probe0:umass-sim1:1:0:0): INQUIRY. CDB: 12 00 00 00 24 00
(probe0:umass-sim1:1:0:0): CAM status: CCB request completed with an error
(probe0:umass-sim1:1:0:0): Retrying command, 0 more tries remain
(probe0:umass-sim1:1:0:0): INQUIRY. CDB: 12 00 00 00 24 00
(probe0:umass-sim1:1:0:0): CAM status: CCB request completed with an error
(probe0:umass-sim1:1:0:0): Error 5, Retries exhausted

The device doesn't actually need any dynamic quirk. In fact it's the detected
quirks that cause the device to stop responding because of this code:

        if (any_quirk) {
                /* Unconfigure device, to clear software data toggle. */
                usbd_set_config_index(udev, USB_UNCONFIG_INDEX);

                /* Need to re-enumerate the device to clear its state. */
                usbd_req_re_enumerate(udev, NULL);
                return (USB_ERR_STALLED);
        }

When I commented it out, the USB stick worked correctly:

usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
usb_msc_auto_quirk: UQ_MSC_NO_PREVENT_ALLOW set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
usb_msc_auto_quirk: UQ_MSC_NO_SYNC_CACHE set for USB mass storage device
InnoDisk Nano USB (0x196d:0x0201)
ugen0.7: <InnoDisk Nano USB> at usbus0
umass1 on uhub0
umass1: <InnoDisk Nano USB, class 0/0, rev 2.00/2.50, addr 6> on usbus0
umass1:  SCSI over Bulk-Only; quirks = 0xc100
umass1:15:1: Attached to scbus15
da1 at umass-sim1 bus 1 scbus15 target 0 lun 0
da1: <InnoDisk Nano USB 0250> Removable Direct Access SCSI device
da1: Serial Number 16E24A000014
da1: 40.000MB/s transfers
da1: 976MB (2000895 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>

-- 
You are receiving this mail because:
You are the assignee for the bug.