diff options
Diffstat (limited to 'drivers/usb/class/cdc-wdm.c')
| -rw-r--r-- | drivers/usb/class/cdc-wdm.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index ea8b304f0e85..ee469274a3fe 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c | |||
| @@ -55,6 +55,15 @@ static const struct usb_device_id wdm_ids[] = { | |||
| 55 | .bInterfaceSubClass = 1, | 55 | .bInterfaceSubClass = 1, |
| 56 | .bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */ | 56 | .bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */ |
| 57 | }, | 57 | }, |
| 58 | { | ||
| 59 | /* Vodafone/Huawei K5005 (12d1:14c8) and similar modems */ | ||
| 60 | .match_flags = USB_DEVICE_ID_MATCH_VENDOR | | ||
| 61 | USB_DEVICE_ID_MATCH_INT_INFO, | ||
| 62 | .idVendor = HUAWEI_VENDOR_ID, | ||
| 63 | .bInterfaceClass = USB_CLASS_VENDOR_SPEC, | ||
| 64 | .bInterfaceSubClass = 1, | ||
| 65 | .bInterfaceProtocol = 57, /* NOTE: CDC ECM control interface! */ | ||
| 66 | }, | ||
| 58 | { } | 67 | { } |
| 59 | }; | 68 | }; |
| 60 | 69 | ||
| @@ -491,6 +500,8 @@ retry: | |||
| 491 | goto retry; | 500 | goto retry; |
| 492 | } | 501 | } |
| 493 | if (!desc->reslength) { /* zero length read */ | 502 | if (!desc->reslength) { /* zero length read */ |
| 503 | dev_dbg(&desc->intf->dev, "%s: zero length - clearing WDM_READ\n", __func__); | ||
| 504 | clear_bit(WDM_READ, &desc->flags); | ||
| 494 | spin_unlock_irq(&desc->iuspin); | 505 | spin_unlock_irq(&desc->iuspin); |
| 495 | goto retry; | 506 | goto retry; |
| 496 | } | 507 | } |
