svn commit: r368246 - in head/sys/dev/usb: quirk storage
Bjoern A. Zeeb
bz at FreeBSD.org
Tue Dec 1 18:24:07 UTC 2020
Author: bz
Date: Tue Dec 1 18:24:06 2020
New Revision: 368246
URL: https://svnweb.freebsd.org/changeset/base/368246
Log:
USB umass: add quirk to not probe
Some USB WLAN devices have "on-board" storage showing up as umass
and making the root mount wait for a very long time.
The WLAN drivers know how to deal with that an issue an eject
command later when attaching themselves.
Introduce a quirk to not probe these devices as umass and avoid
hangs and confusion altogether.
Reviewed by: hselasky, imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D27434
Modified:
head/sys/dev/usb/quirk/usb_quirk.c
head/sys/dev/usb/quirk/usb_quirk.h
head/sys/dev/usb/storage/umass.c
Modified: head/sys/dev/usb/quirk/usb_quirk.c
==============================================================================
--- head/sys/dev/usb/quirk/usb_quirk.c Tue Dec 1 18:22:34 2020 (r368245)
+++ head/sys/dev/usb/quirk/usb_quirk.c Tue Dec 1 18:24:06 2020 (r368246)
@@ -539,6 +539,7 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRK
USB_QUIRK(QUALCOMMINC, ZTE_MF730M, 0x0000, 0xffff, UQ_MSC_NO_GETMAXLUN,
UQ_MSC_NO_INQUIRY, UQ_CFG_INDEX_0),
USB_QUIRK(SMART2, G2MEMKEY, 0x0000, 0xffff, UQ_MSC_NO_INQUIRY),
+ USB_QUIRK(RALINK, RT_STOR, 0x0001, 0x0001, UQ_MSC_IGNORE),
/* Non-standard USB MIDI devices */
USB_QUIRK(ROLAND, UM1, 0x0000, 0xffff, UQ_AU_VENDOR_CLASS),
USB_QUIRK(ROLAND, SC8850, 0x0000, 0xffff, UQ_AU_VENDOR_CLASS),
@@ -642,6 +643,7 @@ static const char *usb_quirk_str[USB_QUIRK_MAX] = {
[UQ_MSC_FORCE_PROTO_ATAPI] = "UQ_MSC_FORCE_PROTO_ATAPI",
[UQ_MSC_FORCE_PROTO_UFI] = "UQ_MSC_FORCE_PROTO_UFI",
[UQ_MSC_FORCE_PROTO_RBC] = "UQ_MSC_FORCE_PROTO_RBC",
+ [UQ_MSC_IGNORE] = "UQ_MSC_IGNORE",
[UQ_MSC_EJECT_HUAWEI] = "UQ_MSC_EJECT_HUAWEI",
[UQ_MSC_EJECT_SIERRA] = "UQ_MSC_EJECT_SIERRA",
[UQ_MSC_EJECT_SCSIEJECT] = "UQ_MSC_EJECT_SCSIEJECT",
Modified: head/sys/dev/usb/quirk/usb_quirk.h
==============================================================================
--- head/sys/dev/usb/quirk/usb_quirk.h Tue Dec 1 18:22:34 2020 (r368245)
+++ head/sys/dev/usb/quirk/usb_quirk.h Tue Dec 1 18:24:06 2020 (r368246)
@@ -93,6 +93,7 @@ enum {
UQ_MSC_FORCE_PROTO_ATAPI, /* force ATAPI command protocol */
UQ_MSC_FORCE_PROTO_UFI, /* force UFI command protocol */
UQ_MSC_FORCE_PROTO_RBC, /* force RBC command protocol */
+ UQ_MSC_IGNORE, /* device should be ignored by umass */
/* Ejection of mass storage (driver disk) */
UQ_MSC_EJECT_HUAWEI, /* ejects after Huawei USB command */
Modified: head/sys/dev/usb/storage/umass.c
==============================================================================
--- head/sys/dev/usb/storage/umass.c Tue Dec 1 18:22:34 2020 (r368245)
+++ head/sys/dev/usb/storage/umass.c Tue Dec 1 18:24:06 2020 (r368246)
@@ -784,6 +784,12 @@ umass_probe_proto(device_t dev, struct usb_attach_arg
memset(&ret, 0, sizeof(ret));
ret.error = BUS_PROBE_GENERIC;
+ /* Check if we should deny probing. */
+ if (usb_test_quirk(uaa, UQ_MSC_IGNORE)) {
+ ret.error = ENXIO;
+ goto done;
+ }
+
/* Search for protocol enforcement */
if (usb_test_quirk(uaa, UQ_MSC_FORCE_WIRE_BBB)) {
More information about the svn-src-head
mailing list