aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/cdc_ether.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/cdc_ether.c')
-rw-r--r--drivers/net/usb/cdc_ether.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 8ab281b478f2..29c7e2ec0dcb 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -54,11 +54,19 @@ static int is_wireless_rndis(struct usb_interface_descriptor *desc)
54 desc->bInterfaceProtocol == 3); 54 desc->bInterfaceProtocol == 3);
55} 55}
56 56
57static int is_novatel_rndis(struct usb_interface_descriptor *desc)
58{
59 return (desc->bInterfaceClass == USB_CLASS_MISC &&
60 desc->bInterfaceSubClass == 4 &&
61 desc->bInterfaceProtocol == 1);
62}
63
57#else 64#else
58 65
59#define is_rndis(desc) 0 66#define is_rndis(desc) 0
60#define is_activesync(desc) 0 67#define is_activesync(desc) 0
61#define is_wireless_rndis(desc) 0 68#define is_wireless_rndis(desc) 0
69#define is_novatel_rndis(desc) 0
62 70
63#endif 71#endif
64 72
@@ -150,7 +158,8 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf)
150 */ 158 */
151 rndis = (is_rndis(&intf->cur_altsetting->desc) || 159 rndis = (is_rndis(&intf->cur_altsetting->desc) ||
152 is_activesync(&intf->cur_altsetting->desc) || 160 is_activesync(&intf->cur_altsetting->desc) ||
153 is_wireless_rndis(&intf->cur_altsetting->desc)); 161 is_wireless_rndis(&intf->cur_altsetting->desc) ||
162 is_novatel_rndis(&intf->cur_altsetting->desc));
154 163
155 memset(info, 0, sizeof(*info)); 164 memset(info, 0, sizeof(*info));
156 info->control = intf; 165 info->control = intf;
@@ -547,6 +556,7 @@ static const struct driver_info wwan_info = {
547#define REALTEK_VENDOR_ID 0x0bda 556#define REALTEK_VENDOR_ID 0x0bda
548#define SAMSUNG_VENDOR_ID 0x04e8 557#define SAMSUNG_VENDOR_ID 0x04e8
549#define LENOVO_VENDOR_ID 0x17ef 558#define LENOVO_VENDOR_ID 0x17ef
559#define LINKSYS_VENDOR_ID 0x13b1
550#define NVIDIA_VENDOR_ID 0x0955 560#define NVIDIA_VENDOR_ID 0x0955
551#define HP_VENDOR_ID 0x03f0 561#define HP_VENDOR_ID 0x03f0
552#define MICROSOFT_VENDOR_ID 0x045e 562#define MICROSOFT_VENDOR_ID 0x045e
@@ -737,6 +747,15 @@ static const struct usb_device_id products[] = {
737 .driver_info = 0, 747 .driver_info = 0,
738}, 748},
739 749
750#if IS_ENABLED(CONFIG_USB_RTL8152)
751/* Linksys USB3GIGV1 Ethernet Adapter */
752{
753 USB_DEVICE_AND_INTERFACE_INFO(LINKSYS_VENDOR_ID, 0x0041, USB_CLASS_COMM,
754 USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
755 .driver_info = 0,
756},
757#endif
758
740/* ThinkPad USB-C Dock (based on Realtek RTL8153) */ 759/* ThinkPad USB-C Dock (based on Realtek RTL8153) */
741{ 760{
742 USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM, 761 USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM,