diff options
author | Bjorge Dijkstra <bjd@jooz.net> | 2008-01-25 17:50:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-31 22:26:52 -0500 |
commit | 786e3dfbae8e2da422affcc1736ca1888f200a27 (patch) | |
tree | 9ba5de419b079edd72dec2c82d803f6e2c8f7265 /drivers/net | |
parent | 2bfa2e1fecac3d8f8a7786a8171b7c75a48fc6d1 (diff) |
cdc_ether: Hardwire CDC descriptors when missing
Just as ActiveSync devices, some regular RNDIS devices also lack
the CDC descriptors (e.g. devices based on BCM4320 WLAN chip).
This patch hardwires the CDC descriptors for all RNDIS style devices
when they are missing.
Signed-off-by: Bjorge Dijkstra <bjd@jooz.net>
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/usb/cdc_ether.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index a42acc3cc609..97c17bb560ac 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c | |||
@@ -228,15 +228,16 @@ next_desc: | |||
228 | buf += buf [0]; | 228 | buf += buf [0]; |
229 | } | 229 | } |
230 | 230 | ||
231 | /* Microsoft ActiveSync based RNDIS devices lack the CDC descriptors, | 231 | /* Microsoft ActiveSync based and some regular RNDIS devices lack the |
232 | * so we'll hard-wire the interfaces and not check for descriptors. | 232 | * CDC descriptors, so we'll hard-wire the interfaces and not check |
233 | * for descriptors. | ||
233 | */ | 234 | */ |
234 | if (is_activesync(&intf->cur_altsetting->desc) && !info->u) { | 235 | if (rndis && !info->u) { |
235 | info->control = usb_ifnum_to_if(dev->udev, 0); | 236 | info->control = usb_ifnum_to_if(dev->udev, 0); |
236 | info->data = usb_ifnum_to_if(dev->udev, 1); | 237 | info->data = usb_ifnum_to_if(dev->udev, 1); |
237 | if (!info->control || !info->data) { | 238 | if (!info->control || !info->data) { |
238 | dev_dbg(&intf->dev, | 239 | dev_dbg(&intf->dev, |
239 | "activesync: master #0/%p slave #1/%p\n", | 240 | "rndis: master #0/%p slave #1/%p\n", |
240 | info->control, | 241 | info->control, |
241 | info->data); | 242 | info->data); |
242 | goto bad_desc; | 243 | goto bad_desc; |
@@ -316,7 +317,6 @@ void usbnet_cdc_unbind(struct usbnet *dev, struct usb_interface *intf) | |||
316 | } | 317 | } |
317 | EXPORT_SYMBOL_GPL(usbnet_cdc_unbind); | 318 | EXPORT_SYMBOL_GPL(usbnet_cdc_unbind); |
318 | 319 | ||
319 | |||
320 | /*------------------------------------------------------------------------- | 320 | /*------------------------------------------------------------------------- |
321 | * | 321 | * |
322 | * Communications Device Class, Ethernet Control model | 322 | * Communications Device Class, Ethernet Control model |