From: David Gwynne Subject: umsm(4): update matching of quectel devices To: tech@openbsd.org Date: Tue, 14 Oct 2025 11:29:02 +1000 this updates the umsm match code for quectel devices. it's based on information in the Quectel UMTS LTE 5G Linux USB Driver User Guide V3.3 documentation, which is the latest version i can find. it appears to work on EC200A (which benefits from the updated match code) and EC25s (which was working before and still works now), but wider testing can't hurt. ok? Index: umsm.c =================================================================== RCS file: /cvs/src/sys/dev/usb/umsm.c,v diff -u -p -r1.127 umsm.c --- umsm.c 23 May 2024 08:06:22 -0000 1.127 +++ umsm.c 14 Oct 2025 01:23:30 -0000 @@ -185,6 +185,7 @@ static const struct umsm_type umsm_devs[ {{ USB_VENDOR_QUECTEL, USB_PRODUCT_QUECTEL_EG12 }, 0}, {{ USB_VENDOR_QUECTEL, USB_PRODUCT_QUECTEL_EG20 }, 0}, {{ USB_VENDOR_QUECTEL, USB_PRODUCT_QUECTEL_BG95 }, 0}, + {{ USB_VENDOR_QUECTEL, USB_PRODUCT_QUECTEL_EC200A }, 0}, {{ USB_VENDOR_QUECTEL, USB_PRODUCT_QUECTEL_RG5XXQ }, 0}, {{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_AC2746 }, 0}, @@ -356,12 +357,18 @@ umsm_match(struct device *parent, void * /* See the Quectel LTE&5G Linux USB Driver User Guide */ } else if (uaa->vendor == USB_VENDOR_QUECTEL) { /* Some interfaces can be used as network devices */ - if (id->bInterfaceClass != UICLASS_VENDOR) + if (id->bInterfaceClass != UICLASS_VENDOR || + id->bInterfaceSubClass == 0x42) return UMATCH_NONE; - /* Interface 4 can be used as a network device */ - if (uaa->ifaceno >= 4) - return UMATCH_NONE; + if ((uaa->product & 0xf000) == 0x0000) { + /* Interface 4 can be used as a network device */ + if (uaa->ifaceno == 4 && + id->bNumEndpoints == 3 && + id->bInterfaceSubClass == UICLASS_VENDOR && + id->bInterfaceProtocol == UIPROTO_DATA_VENDOR) + return UMATCH_NONE; + } } return UMATCH_VENDOR_IFACESUBCLASS;