net: cdc_ncm: improve bind error debug messages
authorBjørn Mork <bjorn@mork.no>
Fri, 1 Nov 2013 10:17:00 +0000 (11:17 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 Nov 2013 06:02:04 +0000 (02:02 -0400)
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>
drivers/net/usb/cdc_ncm.c

index f168bc8c1d388e72801b8da6b0a17b2a3b9bcef0..4531f38fc0e5ca8e8438b72edc5e10306cd3bf16 100644 (file)
@@ -371,8 +371,10 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
                        union_desc = (const struct usb_cdc_union_desc *)buf;
                        /* the master must be the interface we are probing */
                        if (intf->cur_altsetting->desc.bInterfaceNumber !=
-                           union_desc->bMasterInterface0)
+                           union_desc->bMasterInterface0) {
+                               dev_dbg(&intf->dev, "bogus CDC Union\n");
                                goto error;
+                       }
                        ctx->data = usb_ifnum_to_if(dev->udev,
                                                    union_desc->bSlaveInterface0);
                        break;
@@ -416,45 +418,59 @@ advance:
        }
 
        /* check if we got everything */
-       if (!ctx->data || (!ctx->mbim_desc && !ctx->ether_desc))
+       if (!ctx->data || (!ctx->mbim_desc && !ctx->ether_desc)) {
+               dev_dbg(&intf->dev, "CDC descriptors missing\n");
                goto error;
+       }
 
        /* claim data interface, if different from control */
        if (ctx->data != ctx->control) {
                temp = usb_driver_claim_interface(driver, ctx->data, dev);
-               if (temp)
+               if (temp) {
+                       dev_dbg(&intf->dev, "failed to claim data intf\n");
                        goto error;
+               }
        }
 
        iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber;
 
        /* reset data interface */
        temp = usb_set_interface(dev->udev, iface_no, 0);
-       if (temp)
+       if (temp) {
+               dev_dbg(&intf->dev, "set interface failed\n");
                goto error2;
+       }
 
        /* configure data interface */
        temp = usb_set_interface(dev->udev, iface_no, data_altsetting);
-       if (temp)
+       if (temp) {
+               dev_dbg(&intf->dev, "set interface failed\n");
                goto error2;
+       }
 
        cdc_ncm_find_endpoints(dev, ctx->data);
        cdc_ncm_find_endpoints(dev, ctx->control);
-       if (!dev->in || !dev->out || !dev->status)
+       if (!dev->in || !dev->out || !dev->status) {
+               dev_dbg(&intf->dev, "failed to collect endpoints\n");
                goto error2;
+       }
 
        /* initialize data interface */
-       if (cdc_ncm_setup(dev))
+       if (cdc_ncm_setup(dev)) {
+               dev_dbg(&intf->dev, "cdc_ncm_setup() failed\n");
                goto error2;
+       }
 
        usb_set_intfdata(ctx->data, dev);
        usb_set_intfdata(ctx->control, dev);
 
        if (ctx->ether_desc) {
                temp = usbnet_get_ethernet_addr(dev, ctx->ether_desc->iMACAddress);
-               if (temp)
+               if (temp) {
+                       dev_dbg(&intf->dev, "failed to get mac address\n");
                        goto error2;
-               dev_info(&dev->udev->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
+               }
+               dev_info(&intf->dev, "MAC-Address: %pM\n", dev->net->dev_addr);
        }
 
        /* usbnet use these values for sizing tx/rx queues */
@@ -471,7 +487,7 @@ error2:
 error:
        cdc_ncm_free((struct cdc_ncm_ctx *)dev->data[0]);
        dev->data[0] = 0;
-       dev_info(&dev->udev->dev, "bind() failure\n");
+       dev_info(&intf->dev, "bind() failure\n");
        return -ENODEV;
 }
 EXPORT_SYMBOL_GPL(cdc_ncm_bind_common);