Not sure if this is entirely the correct way to go about
making this device work, or if this is even the correct place to
report this.  But adding the following patch to my 6.4-STABLE
system got things working correctly (IPv4 and IPv6):
---
Index: sys/dev/usb/if_urndis.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_urndis.c,v
retrieving revision 1.68
diff -u -p -u -r1.68 if_urndis.c
--- sys/dev/usb/if_urndis.c     2 Oct 2018 19:49:10 -0000       1.68
+++ sys/dev/usb/if_urndis.c     19 Feb 2019 00:50:24 -0000
@@ -130,7 +130,8 @@ const struct urndis_class {
 } urndis_class[] = {
        { UICLASS_CDC, UISUBCLASS_ABSTRACT_CONTROL_MODEL, 0xff, "Vendor" },
        { UICLASS_WIRELESS, UISUBCLASS_RF, UIPROTO_RNDIS, "RNDIS" },
-       { UICLASS_MISC, UISUBCLASS_SYNC, UIPROTO_ACTIVESYNC, "Activesync" }
+       { UICLASS_MISC, UISUBCLASS_SYNC, UIPROTO_ACTIVESYNC, "Activesync" },
+       { UICLASS_MISC, 0x04, 0x01, "RNDIS" }
 };
 
 usbd_status
---

        And here are some relevant outputs I've seen posted
before related to getting such devices working in case there is a
better way to match this device.  Let me know if you want
anything else:
---
# dmesg | tail -20 | grep^u
urndis0 at uhub0 port 2 configuration 1 interface 0 "Novatel Wireless MiFi 
8800L" rev 3.10/3.18 addr 2
urndis0: using RNDIS, address 00:15:ff:26:73:70
umodem0 at uhub0 port 2 configuration 1 interface 12 "Novatel Wireless MiFi 
8800L" rev 3.10/3.18 addr 2
umodem0: data interface 13, has no CM over data, has no break
umodem0: status change notification available
ucom0 at umodem0
uhidev0 at uhub0 port 2 configuration 1 interface 14 "Novatel Wireless MiFi 
8800L" rev 3.10/3.18 addr 2
uhidev0: iclass 3/0
uhid0 at uhidev0: input=4, output=4, feature=0
ugen0 at uhub0 port 2 configuration 1 "Novatel Wireless MiFi 8800L" rev 
3.10/3.18 addr 2
uhub2 at uhub1 port 1 configuration 1 interface 0 "Advanced Micro Devices 
product 0x7900" rev 2.00/0.18 addr 2

# usbdevs -a 2 -d /dev/usb0 -v
addr 02: 1410:b023 Novatel Wireless, MiFi 8800L
         super speed, power 224 mA, config 1, rev 3.18, iSerialNumber 
0123456789ABCDEF
         driver: urndis0
         driver: umodem0
         driver: uhidev0
         driver: ugen0

# usbctl -a 2 -d /dev/usb0
DEVICE addr 2
DEVICE descriptor:
bLength=18 bDescriptorType=device(1) bcdUSB=3.10 bDeviceClass=0 
bDeviceSubClass=0
bDeviceProtocol=0 bMaxPacketSize=9 idVendor=0x1410 idProduct=0xb023 
bcdDevice=318
iManufacturer=1(Novatel Wireless) iProduct=2(MiFi 8800L) 
iSerialNumber=3(0123456789ABCDEF) bNumConfigurations=1

CONFIGURATION descriptor 0:
bLength=9 bDescriptorType=config(2) wTotalLength=345 bNumInterface=8
bConfigurationValue=1 iConfiguration=0() bmAttributes=80 bMaxPower=224 mA

Unknown descriptor (class 0/0):
bLength=8 bDescriptorType=11 ...

INTERFACE descriptor 0:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0 bAlternateSetting=0
bNumEndpoints=1 bInterfaceClass=239 bInterfaceSubClass=4
bInterfaceProtocol=1 iInterface=6(RNDIS Communications Control)

Unknown descriptor (class 239/4):
bLength=5 bDescriptorType=36 ...

Unknown descriptor (class 239/4):
bLength=5 bDescriptorType=36 ...

Unknown descriptor (class 239/4):
bLength=4 bDescriptorType=36 ...

Unknown descriptor (class 239/4):
bLength=5 bDescriptorType=36 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
bmAttributes=interrupt wMaxPacketSize=8 bInterval=9

Unknown descriptor (class 239/4):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 1:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=1 bAlternateSetting=0
bNumEndpoints=2 bInterfaceClass=10 bInterfaceSubClass=0
bInterfaceProtocol=0 iInterface=7(RNDIS Ethernet Data)

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=14-in
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 10/0):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=15-out
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 10/0):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 2:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=2 bAlternateSetting=0
bNumEndpoints=3 bInterfaceClass=255 bInterfaceSubClass=0
bInterfaceProtocol=0 iInterface=0()

Unknown descriptor (class 255/0):
bLength=5 bDescriptorType=36 ...

Unknown descriptor (class 255/0):
bLength=5 bDescriptorType=36 ...

Unknown descriptor (class 255/0):
bLength=4 bDescriptorType=36 ...

Unknown descriptor (class 255/0):
bLength=5 bDescriptorType=36 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=3-in
bmAttributes=interrupt wMaxPacketSize=10 bInterval=9

Unknown descriptor (class 255/0):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-in
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/0):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-out
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/0):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 3:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=3 bAlternateSetting=0
bNumEndpoints=2 bInterfaceClass=255 bInterfaceSubClass=255
bInterfaceProtocol=255 iInterface=0()

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=4-in
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/255):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=2-out
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/255):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 4:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=4 bAlternateSetting=0
bNumEndpoints=2 bInterfaceClass=255 bInterfaceSubClass=66
bInterfaceProtocol=1 iInterface=10(ADB Interface)

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=3-out
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/66):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=5-in
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 255/66):
bLength=6 bDescriptorType=48 ...

Unknown descriptor (class 255/66):
bLength=8 bDescriptorType=11 ...

INTERFACE descriptor 5:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=12 bAlternateSetting=0
bNumEndpoints=1 bInterfaceClass=2 bInterfaceSubClass=2
bInterfaceProtocol=1 iInterface=11(CDC Abstract Control Model (ACM))

CDC INTERFACE descriptor:
bLength=5 bDescriptorType=cs_interface(36) bDescriptorSubtype=header
bcdCDC=1.10

CDC INTERFACE descriptor:
bLength=5 bDescriptorType=cs_interface(36) bDescriptorSubtype=Call_Management
bmCapabilities=0x0 bDataInterface=13

CDC INTERFACE descriptor:
bLength=4 bDescriptorType=cs_interface(36) 
bDescriptorSubtype=Abstract_Control_Model
bmCapabilities=0x2

CDC INTERFACE descriptor:
bLength=5 bDescriptorType=cs_interface(36) bDescriptorSubtype=union
bMasterInterface=12 bSlaveInterface0=13

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=7-in
bmAttributes=interrupt wMaxPacketSize=10 bInterval=9

Unknown descriptor (class 2/2):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 6:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=13 bAlternateSetting=0
bNumEndpoints=2 bInterfaceClass=10 bInterfaceSubClass=0
bInterfaceProtocol=0 iInterface=12(CDC ACM Data)

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=6-in
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 10/0):
bLength=6 bDescriptorType=48 ...

ENDPOINT descriptor:
bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=4-out
bmAttributes=bulk wMaxPacketSize=1024 bInterval=0

Unknown descriptor (class 10/0):
bLength=6 bDescriptorType=48 ...

INTERFACE descriptor 7:
bLength=9 bDescriptorType=interface(4) bInterfaceNumber=14 bAlternateSetting=0
bNumEndpoints=1 bInterfaceClass=3 bInterfaceSubClass=0
bInterfaceProtocol=0 iInterface=15(HID Interface)

HID descriptor:
bLength=9 bDescriptorType=cs_device(33) bcdHID=1.01 bCountryCode=0 
bNumDescriptors=1
bDescriptorType[0]=cs_config(34), wDescriptorLength[0]=34

-- 
Mark Nipper

Reply via email to