aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/usb/cdc_ncm.c12
-rw-r--r--include/linux/usb/cdc_ncm.h4
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
373int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting) 373int 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;