case -ENOENT:
        case -ECONNRESET:
        case -EPIPE:
+               dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
                return;
        default:
+               dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
                goto resubmit;
        }
 
 
 static void rx_urb_complete(struct urb *urb)
 {
+       int r;
        struct zd_usb *usb;
        struct zd_usb_rx *rx;
        const u8 *buffer;
        case -ENOENT:
        case -ECONNRESET:
        case -EPIPE:
+               dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
                return;
        default:
                dev_dbg_f(urb_dev(urb), "urb %p error %d\n", urb, urb->status);
        }
 
 resubmit:
-       usb_submit_urb(urb, GFP_ATOMIC);
+       r = usb_submit_urb(urb, GFP_ATOMIC);
+       if (r)
+               dev_dbg_f(urb_dev(urb), "urb %p resubmit error %d\n", urb, r);
 }
 
 static struct urb *alloc_rx_urb(struct zd_usb *usb)
 
        r = usb_submit_urb(urb, GFP_ATOMIC);
        if (r) {
+               dev_dbg_f(zd_usb_dev(usb), "error submit urb %p %d\n", urb, r);
                usb_unanchor_urb(urb);
                skb_unlink(skb, &tx->submitted_skbs);
                goto error;