From: Dan Williams <dcbw@xxxxxxxxxx> Date: Wed, 13 Mar 2013 08:43:36 -0500 > On Wed, 2013-03-13 at 13:25 +0100, Bjørn Mork wrote: >> commit bd877e4 ("net: qmi_wwan: use a single bind function for >> all device types") made Gobi 1K devices fail probing. >> >> Using the number of endpoints in the default altsetting to decide >> whether the function use one or two interfaces is wrong. Other >> altsettings may provide more endpoints. >> >> With Gobi 1K devices, USB interface #3's altsetting is 0 by default, but >> altsetting 0 only provides one interrupt endpoint and is not sufficent >> for QMI. Altsetting 1 provides all 3 endpoints required for qmi_wwan >> and works with QMI. Gobi 1K layout for intf#3 is: >> >> Interface Descriptor: 255/255/255 >> bInterfaceNumber 3 >> bAlternateSetting 0 >> Endpoint Descriptor: Interrupt IN >> Interface Descriptor: 255/255/255 >> bInterfaceNumber 3 >> bAlternateSetting 1 >> Endpoint Descriptor: Interrupt IN >> Endpoint Descriptor: Bulk IN >> Endpoint Descriptor: Bulk OUT >> >> Prior to commit bd877e4, we would call usbnet_get_endpoints >> before giving up finding enough endpoints. Removing the early >> endpoint number test and the strict functional descriptor >> requirement allow qmi_wwan_bind to continue until >> usbnet_get_endpoints has made the final attempt to collect >> endpoints. This restores the behaviour from before commit >> bd877e4 without losing the added benefit of using a single bind >> function. >> >> The driver has always required a CDC Union functional descriptor >> for two-interface functions. Using the existence of this >> descriptor to detect two-interface functions is the logically >> correct method. >> >> Reported-by: Dan Williams <dcbw@xxxxxxxxxx> >> Signed-off-by: Bjørn Mork > > Works on my UML290, Gobi3K, Gobi1K, Gobi2K, and E362. > > Tested-by: Dan Williams <dcbw@xxxxxxxxxx> Applied and queued up for -stable. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html