Index: umsm.c =================================================================== RCS file: /cvs/src/sys/dev/usb/umsm.c,v retrieving revision 1.125 diff -u -p -r1.125 umsm.c --- umsm.c 2 Apr 2023 23:57:57 -0000 1.125 +++ umsm.c 6 Apr 2023 09:21:35 -0000 @@ -101,6 +101,7 @@ struct umsm_type { #define DEV_NORMAL 0x0000 #define DEV_HUAWEI 0x0001 #define DEV_TRUINSTALL 0x0002 +#define DEV_SIERRA 0x0004 #define DEV_UMASS1 0x0010 #define DEV_UMASS2 0x0020 #define DEV_UMASS3 0x0040 @@ -271,6 +272,7 @@ static const struct umsm_type umsm_devs[ {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_AIRCARD_340U}, 0}, {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_AIRCARD_770S}, 0}, {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC7455}, 0}, + {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC7700}, DEV_SIERRA}, {{ USB_VENDOR_SIMCOM, USB_PRODUCT_SIMCOM_SIM5320}, 0}, {{ USB_VENDOR_SIMCOM, USB_PRODUCT_SIMCOM_SIM7600E}, 0}, @@ -363,6 +365,17 @@ umsm_match(struct device *parent, void * /* Interface 4 can be used as a network device */ if (uaa->ifaceno >= 4) return UMATCH_NONE; + } else if (flag & DEV_SIERRA) { + /* Sierra Wireless layout */ + switch (uaa->ifaceno) { + case 0: + case 2: + case 3: + /* Only umsm on specific interfaces */ + break; + default: + return UMATCH_NONE; + } } return UMATCH_VENDOR_IFACESUBCLASS;