On Wed, Nov 13, 2019 at 06:40:00PM -0700, Aaron Bieber wrote: > Hi, > > I have a raspberry pi 0 that attaches as: > cdce0 at uhub0 port 3 configuration 2 interface 0 "Linux 4.19.75+ with \ > 20980000.usb RNDIS/Ethernet Gadget" rev 2.00/4.19 addr 10 > > Unfortunately the cdce interface does not work with this particular device. > > On the linux end, it turns out that cdc and rndis are being presented. When > NetChip is removed from the cdce driver, urndis(4) picks up the slack and > things work as expected! Linux also has the product id defined as RNDIS.
The thing is that Linux provides multiple "configurations" (as in: urndis(4), cdce(4), ...) over the same device. Hardcoding this combination of vendor/product id will make cdce(4) always attach, even though the configuration is actually urndis(4). In this case Linux improved well enough so that our match function checking for class/subclass should be the right thing to do. Thus, ok patrick@ > Debugged with patrick@ who is awesome and I now owe a beer or two for his > help! :D > > OK? > > Cheers, > Aaron > > diff --git a/sys/dev/usb/if_cdce.c b/sys/dev/usb/if_cdce.c > index abf0521ccd6..816bdc29c10 100644 > --- a/sys/dev/usb/if_cdce.c > +++ b/sys/dev/usb/if_cdce.c > @@ -100,7 +100,6 @@ const struct cdce_type cdce_devs[] = { > {{ USB_VENDOR_MOTOROLA2, USB_PRODUCT_MOTOROLA2_USBLAN }, CDCE_CRC32 }, > {{ USB_VENDOR_MOTOROLA2, USB_PRODUCT_MOTOROLA2_USBLAN2 }, CDCE_CRC32 }, > {{ USB_VENDOR_GMATE, USB_PRODUCT_GMATE_YP3X00 }, 0 }, > - {{ USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_ETHERNETGADGET }, 0 }, > {{ USB_VENDOR_COMPAQ, USB_PRODUCT_COMPAQ_IPAQLINUX }, 0 }, > {{ USB_VENDOR_AMBIT, USB_PRODUCT_AMBIT_NTL_250 }, CDCE_SWAPUNION }, > }; > > -- > PGP: 0x1F81112D62A9ADCE / 3586 3350 BFEA C101 DB1A 4AF0 1F81 112D 62A9 ADCE >