aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorBjorge Dijkstra <bjd@jooz.net>2008-01-25 17:50:44 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-31 22:26:52 -0500
commit786e3dfbae8e2da422affcc1736ca1888f200a27 (patch)
tree9ba5de419b079edd72dec2c82d803f6e2c8f7265 /drivers/net/usb
parent2bfa2e1fecac3d8f8a7786a8171b7c75a48fc6d1 (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/usb')
-rw-r--r--drivers/net/usb/cdc_ether.c10
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}
317EXPORT_SYMBOL_GPL(usbnet_cdc_unbind); 318EXPORT_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