diff options
-rw-r--r-- | drivers/net/usb/cdc_ncm.c | 12 | ||||
-rw-r--r-- | include/linux/usb/cdc_ncm.h | 4 |
2 files changed, 7 insertions, 9 deletions
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c index b8de8ddd6d98..435fcc75d706 100644 --- a/drivers/net/usb/cdc_ncm.c +++ b/drivers/net/usb/cdc_ncm.c | |||
@@ -372,6 +372,7 @@ static const struct ethtool_ops cdc_ncm_ethtool_ops = { | |||
372 | 372 | ||
373 | int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting) | 373 | int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting) |
374 | { | 374 | { |
375 | const struct usb_cdc_union_desc *union_desc = NULL; | ||
375 | struct cdc_ncm_ctx *ctx; | 376 | struct cdc_ncm_ctx *ctx; |
376 | struct usb_driver *driver; | 377 | struct usb_driver *driver; |
377 | u8 *buf; | 378 | u8 *buf; |
@@ -406,16 +407,15 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_ | |||
406 | 407 | ||
407 | switch (buf[2]) { | 408 | switch (buf[2]) { |
408 | case USB_CDC_UNION_TYPE: | 409 | case USB_CDC_UNION_TYPE: |
409 | if (buf[0] < sizeof(*(ctx->union_desc))) | 410 | if (buf[0] < sizeof(*union_desc)) |
410 | break; | 411 | break; |
411 | 412 | ||
412 | ctx->union_desc = | 413 | union_desc = (const struct usb_cdc_union_desc *)buf; |
413 | (const struct usb_cdc_union_desc *)buf; | ||
414 | 414 | ||
415 | ctx->control = usb_ifnum_to_if(dev->udev, | 415 | ctx->control = usb_ifnum_to_if(dev->udev, |
416 | ctx->union_desc->bMasterInterface0); | 416 | union_desc->bMasterInterface0); |
417 | ctx->data = usb_ifnum_to_if(dev->udev, | 417 | ctx->data = usb_ifnum_to_if(dev->udev, |
418 | ctx->union_desc->bSlaveInterface0); | 418 | union_desc->bSlaveInterface0); |
419 | break; | 419 | break; |
420 | 420 | ||
421 | case USB_CDC_ETHERNET_TYPE: | 421 | case USB_CDC_ETHERNET_TYPE: |
@@ -458,7 +458,7 @@ advance: | |||
458 | } | 458 | } |
459 | 459 | ||
460 | /* some buggy devices have an IAD but no CDC Union */ | 460 | /* some buggy devices have an IAD but no CDC Union */ |
461 | if (!ctx->union_desc && intf->intf_assoc && intf->intf_assoc->bInterfaceCount == 2) { | 461 | if (!union_desc && intf->intf_assoc && intf->intf_assoc->bInterfaceCount == 2) { |
462 | ctx->control = intf; | 462 | ctx->control = intf; |
463 | ctx->data = usb_ifnum_to_if(dev->udev, intf->cur_altsetting->desc.bInterfaceNumber + 1); | 463 | ctx->data = usb_ifnum_to_if(dev->udev, intf->cur_altsetting->desc.bInterfaceNumber + 1); |
464 | dev_dbg(&intf->dev, "CDC Union missing - got slave from IAD\n"); | 464 | dev_dbg(&intf->dev, "CDC Union missing - got slave from IAD\n"); |
diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h index 89b52a0fe4b9..cad54ad4ad12 100644 --- a/include/linux/usb/cdc_ncm.h +++ b/include/linux/usb/cdc_ncm.h | |||
@@ -92,9 +92,7 @@ struct cdc_ncm_ctx { | |||
92 | struct tasklet_struct bh; | 92 | struct tasklet_struct bh; |
93 | 93 | ||
94 | const struct usb_cdc_ncm_desc *func_desc; | 94 | const struct usb_cdc_ncm_desc *func_desc; |
95 | const struct usb_cdc_mbim_desc *mbim_desc; | 95 | const struct usb_cdc_mbim_desc *mbim_desc; |
96 | const struct usb_cdc_header_desc *header_desc; | ||
97 | const struct usb_cdc_union_desc *union_desc; | ||
98 | const struct usb_cdc_ether_desc *ether_desc; | 96 | const struct usb_cdc_ether_desc *ether_desc; |
99 | 97 | ||
100 | struct usb_interface *control; | 98 | struct usb_interface *control; |