Comment 3 for bug 796006

Revision history for this message
Markus Kolb (mkolb) wrote :

This is the DEBUG output...

[ 659.660272] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 659.812616] rndis_host 1-4:1.0: master #4/ (null) slave #5/
 (null)
[ 659.812624] usb 1-4: bad CDC descriptors
[ 659.812851] rndis_wlan 1-4:1.0: master #4/ (null) slave #5/
 (null)
[ 659.812858] usb 1-4: bad CDC descriptors

And this the corresponding code...

/* we need a master/control interface (what we're
 * probed with) and a slave/data interface; union
 * descriptors sort this all out.
 */
info->control = usb_ifnum_to_if(dev->udev,
                        info->u->bMasterInterface0);
info->data = usb_ifnum_to_if(dev->udev,
                        info->u->bSlaveInterface0);
if (!info->control || !info->data) {
        dev_dbg(&intf->dev,
                "master #%u/%p slave #%u/%p\n",
                info->u->bMasterInterface0,
                info->control,
                info->u->bSlaveInterface0,
                info->data);
        goto bad_desc;
}

Any ideas what to do next?

Could the problem be that the bInterfaceNumber starts with 0.
So there is 0 and 1.
And the ifnum for master is 4 and for slave 5.
So that usb_ifnum_to_if doesn't find the configuration...
Is the condition bInterfaceNumber == ifnum the bug?