]> git.baikalelectronics.ru Git - kernel.git/commit
net: qmi_wwan: set correct altsetting for Gobi 1K devices
authorBjørn Mork <bjorn@mork.no>
Wed, 13 Mar 2013 02:25:17 +0000 (02:25 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Mar 2013 15:33:42 +0000 (11:33 -0400)
commit106abc2a6d76232ad12fa75ad21ca84318875d1e
tree7fda5d6dbe6187a87f06494fbe2e69c8bc6bdd3a
parent523d1aa78f622fcacd8cf884b2f920c73af7de0f
net: qmi_wwan: set correct altsetting for Gobi 1K devices

commit cc370b0 ("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 cc370b0, 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
cc370b0 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@redhat.com>
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Tested-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/qmi_wwan.c