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
> 

Reply via email to