Skip to content

Commit 296e81f

Browse files
bmorkdavem330
authored andcommitted
net: cdc_ncm: improve bind error debug messages
Make it a bit easier for users to figure out what goes wrong when bind fails. Cc: Alexey Orishko <alexey.orishko@gmail.com> Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 59ede31 commit 296e81f

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

drivers/net/usb/cdc_ncm.c

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,10 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
371371
union_desc = (const struct usb_cdc_union_desc *)buf;
372372
/* the master must be the interface we are probing */
373373
if (intf->cur_altsetting->desc.bInterfaceNumber !=
374-
union_desc->bMasterInterface0)
374+
union_desc->bMasterInterface0) {
375+
dev_dbg(&intf->dev, "bogus CDC Union\n");
375376
goto error;
377+
}
376378
ctx->data = usb_ifnum_to_if(dev->udev,
377379
union_desc->bSlaveInterface0);
378380
break;
@@ -416,45 +418,59 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
416418
}
417419

418420
/* check if we got everything */
419-
if (!ctx->data || (!ctx->mbim_desc && !ctx->ether_desc))
421+
if (!ctx->data || (!ctx->mbim_desc && !ctx->ether_desc)) {
422+
dev_dbg(&intf->dev, "CDC descriptors missing\n");
420423
goto error;
424+
}
421425

422426
/* claim data interface, if different from control */
423427
if (ctx->data != ctx->control) {
424428
temp = usb_driver_claim_interface(driver, ctx->data, dev);
425-
if (temp)
429+
if (temp) {
430+
dev_dbg(&intf->dev, "failed to claim data intf\n");
426431
goto error;
432+
}
427433
}
428434

429435
iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber;
430436

431437
/* reset data interface */
432438
temp = usb_set_interface(dev->udev, iface_no, 0);
433-
if (temp)
439+
if (temp) {
440+
dev_dbg(&intf->dev, "set interface failed\n");
434441
goto error2;
442+
}
435443

436444
/* configure data interface */
437445
temp = usb_set_interface(dev->udev, iface_no, data_altsetting);
438-
if (temp)
446+
if (temp) {
447+
dev_dbg(&intf->dev, "set interface failed\n");
439448
goto error2;
449+
}
440450

441451
cdc_ncm_find_endpoints(dev, ctx->data);
442452
cdc_ncm_find_endpoints(dev, ctx->control);
443-
if (!dev->in || !dev->out || !dev->status)
453+
if (!dev->in || !dev->out || !dev->status) {
454+
dev_dbg(&intf->dev, "failed to collect endpoints\n");
444455
goto error2;
456+
}
445457

446458
/* initialize data interface */
447-
if (cdc_ncm_setup(dev))
459+
if (cdc_ncm_setup(dev)) {
460+
dev_dbg(&intf->dev, "cdc_ncm_setup() failed\n");
448461
goto error2;
462+
}
449463

450464
usb_set_intfdata(ctx->data, dev);
451465
usb_set_intfdata(ctx->control, dev);
452466

453467
if (ctx->ether_desc) {
454468
temp = usbnet_get_ethernet_addr(dev, ctx->ether_desc->iMACAddress);
455-
if (temp)
469+
if (temp) {
470+
dev_dbg(&intf->dev, "failed to get mac address\n");
456471
goto error2;
457-
dev_info(&dev->udev->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
472+
}
473+
dev_info(&intf->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
458474
}
459475

460476
/* usbnet use these values for sizing tx/rx queues */
@@ -471,7 +487,7 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
471487
error:
472488
cdc_ncm_free((struct cdc_ncm_ctx *)dev->data[0]);
473489
dev->data[0] = 0;
474-
dev_info(&dev->udev->dev, "bind() failure\n");
490+
dev_info(&intf->dev, "bind() failure\n");
475491
return -ENODEV;
476492
}
477493
EXPORT_SYMBOL_GPL(cdc_ncm_bind_common);

0 commit comments

Comments
 (0)