--- l/drivers/input/misc/yealink.c +++ y/drivers/input/misc/yealink.c @@ -436,7 +436,7 @@ static void urb_irq_callback(struct urb yealink_do_idle_tasks(yld); - if (!yld->shutdown) { + if (!yld->shutdown && status != -EPROTO) { ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC); if (ret && ret != -EPERM) dev_err(&yld->intf->dev, @@ -458,13 +458,13 @@ static void urb_ctl_callback(struct urb case CMD_KEYPRESS: case CMD_SCANCODE: /* ask for a response */ - if (!yld->shutdown) + if (!yld->shutdown && status != -EPROTO) ret = usb_submit_urb(yld->urb_irq, GFP_ATOMIC); break; default: /* send new command */ yealink_do_idle_tasks(yld); - if (!yld->shutdown) + if (!yld->shutdown && status != -EPROTO) ret = usb_submit_urb(yld->urb_ctl, GFP_ATOMIC); break; }