Lines Matching refs:desc

113 	struct wdm_device *desc;  in wdm_find_device()  local
116 list_for_each_entry(desc, &wdm_device_list, device_list) in wdm_find_device()
117 if (desc->intf == intf) in wdm_find_device()
119 desc = NULL; in wdm_find_device()
123 return desc; in wdm_find_device()
128 struct wdm_device *desc; in wdm_find_device_by_minor() local
131 list_for_each_entry(desc, &wdm_device_list, device_list) in wdm_find_device_by_minor()
132 if (desc->intf->minor == minor) in wdm_find_device_by_minor()
134 desc = NULL; in wdm_find_device_by_minor()
138 return desc; in wdm_find_device_by_minor()
144 struct wdm_device *desc; in wdm_out_callback() local
147 desc = urb->context; in wdm_out_callback()
148 spin_lock_irqsave(&desc->iuspin, flags); in wdm_out_callback()
149 desc->werr = urb->status; in wdm_out_callback()
150 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_out_callback()
151 kfree(desc->outbuf); in wdm_out_callback()
152 desc->outbuf = NULL; in wdm_out_callback()
153 clear_bit(WDM_IN_USE, &desc->flags); in wdm_out_callback()
154 wake_up(&desc->wait); in wdm_out_callback()
160 struct wdm_device *desc = urb->context; in wdm_in_callback() local
164 spin_lock_irqsave(&desc->iuspin, flags); in wdm_in_callback()
165 clear_bit(WDM_RESPONDING, &desc->flags); in wdm_in_callback()
170 dev_dbg(&desc->intf->dev, in wdm_in_callback()
174 dev_dbg(&desc->intf->dev, in wdm_in_callback()
178 dev_dbg(&desc->intf->dev, in wdm_in_callback()
182 dev_err(&desc->intf->dev, in wdm_in_callback()
186 dev_err(&desc->intf->dev, in wdm_in_callback()
198 if (desc->rerr == 0 && status != -EPIPE) in wdm_in_callback()
199 desc->rerr = status; in wdm_in_callback()
201 if (length + desc->length > desc->wMaxCommand) { in wdm_in_callback()
203 set_bit(WDM_OVERFLOW, &desc->flags); in wdm_in_callback()
206 if (!test_bit(WDM_OVERFLOW, &desc->flags)) { in wdm_in_callback()
207 memmove(desc->ubuf + desc->length, desc->inbuf, length); in wdm_in_callback()
208 desc->length += length; in wdm_in_callback()
209 desc->reslength = length; in wdm_in_callback()
214 if (desc->rerr) { in wdm_in_callback()
221 schedule_work(&desc->service_outs_intr); in wdm_in_callback()
223 set_bit(WDM_READ, &desc->flags); in wdm_in_callback()
224 wake_up(&desc->wait); in wdm_in_callback()
226 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_in_callback()
235 struct wdm_device *desc; in wdm_int_callback() local
238 desc = urb->context; in wdm_int_callback()
239 dr = (struct usb_cdc_notification *)desc->sbuf; in wdm_int_callback()
248 set_bit(WDM_INT_STALL, &desc->flags); in wdm_int_callback()
249 dev_err(&desc->intf->dev, "Stall on int endpoint\n"); in wdm_int_callback()
252 dev_err(&desc->intf->dev, in wdm_int_callback()
259 dev_err(&desc->intf->dev, "wdm_int_callback - %d bytes\n", in wdm_int_callback()
266 dev_dbg(&desc->intf->dev, in wdm_int_callback()
273 dev_dbg(&desc->intf->dev, in wdm_int_callback()
278 dev_dbg(&desc->intf->dev, "SPEED_CHANGE received (len %u)\n", in wdm_int_callback()
282 clear_bit(WDM_POLL_RUNNING, &desc->flags); in wdm_int_callback()
283 dev_err(&desc->intf->dev, in wdm_int_callback()
291 spin_lock_irqsave(&desc->iuspin, flags); in wdm_int_callback()
292 responding = test_and_set_bit(WDM_RESPONDING, &desc->flags); in wdm_int_callback()
293 if (!desc->resp_count++ && !responding in wdm_int_callback()
294 && !test_bit(WDM_DISCONNECTING, &desc->flags) in wdm_int_callback()
295 && !test_bit(WDM_SUSPENDING, &desc->flags)) { in wdm_int_callback()
296 rv = usb_submit_urb(desc->response, GFP_ATOMIC); in wdm_int_callback()
297 dev_dbg(&desc->intf->dev, "submit response URB %d\n", rv); in wdm_int_callback()
299 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_int_callback()
301 clear_bit(WDM_RESPONDING, &desc->flags); in wdm_int_callback()
306 rv = schedule_work(&desc->rxwork); in wdm_int_callback()
308 dev_err(&desc->intf->dev, in wdm_int_callback()
315 dev_err(&desc->intf->dev, in wdm_int_callback()
321 static void kill_urbs(struct wdm_device *desc) in kill_urbs() argument
324 usb_kill_urb(desc->command); in kill_urbs()
325 usb_kill_urb(desc->validity); in kill_urbs()
326 usb_kill_urb(desc->response); in kill_urbs()
329 static void free_urbs(struct wdm_device *desc) in free_urbs() argument
331 usb_free_urb(desc->validity); in free_urbs()
332 usb_free_urb(desc->response); in free_urbs()
333 usb_free_urb(desc->command); in free_urbs()
336 static void cleanup(struct wdm_device *desc) in cleanup() argument
338 kfree(desc->sbuf); in cleanup()
339 kfree(desc->inbuf); in cleanup()
340 kfree(desc->orq); in cleanup()
341 kfree(desc->irq); in cleanup()
342 kfree(desc->ubuf); in cleanup()
343 free_urbs(desc); in cleanup()
344 kfree(desc); in cleanup()
352 struct wdm_device *desc = file->private_data; in wdm_write() local
355 if (count > desc->wMaxCommand) in wdm_write()
356 count = desc->wMaxCommand; in wdm_write()
358 spin_lock_irq(&desc->iuspin); in wdm_write()
359 we = desc->werr; in wdm_write()
360 desc->werr = 0; in wdm_write()
361 spin_unlock_irq(&desc->iuspin); in wdm_write()
370 r = mutex_lock_interruptible(&desc->wlock); in wdm_write()
375 if (test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_write()
380 r = usb_autopm_get_interface(desc->intf); in wdm_write()
387 r = wait_event_interruptible(desc->wait, !test_bit(WDM_IN_USE, in wdm_write()
388 &desc->flags)); in wdm_write()
390 if (test_bit(WDM_IN_USE, &desc->flags)) in wdm_write()
393 if (test_bit(WDM_RESETTING, &desc->flags)) in wdm_write()
401 req = desc->orq; in wdm_write()
403 desc->command, in wdm_write()
404 interface_to_usbdev(desc->intf), in wdm_write()
406 usb_sndctrlpipe(interface_to_usbdev(desc->intf), 0), in wdm_write()
411 desc in wdm_write()
418 req->wIndex = desc->inum; /* already converted */ in wdm_write()
420 set_bit(WDM_IN_USE, &desc->flags); in wdm_write()
421 desc->outbuf = buf; in wdm_write()
423 rv = usb_submit_urb(desc->command, GFP_KERNEL); in wdm_write()
425 desc->outbuf = NULL; in wdm_write()
426 clear_bit(WDM_IN_USE, &desc->flags); in wdm_write()
427 dev_err(&desc->intf->dev, "Tx URB error: %d\n", rv); in wdm_write()
431 dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d\n", in wdm_write()
435 usb_autopm_put_interface(desc->intf); in wdm_write()
436 mutex_unlock(&desc->wlock); in wdm_write()
440 usb_autopm_put_interface(desc->intf); in wdm_write()
442 mutex_unlock(&desc->wlock); in wdm_write()
453 static int service_outstanding_interrupt(struct wdm_device *desc) in service_outstanding_interrupt() argument
458 if (!desc->resp_count || !--desc->resp_count) in service_outstanding_interrupt()
461 set_bit(WDM_RESPONDING, &desc->flags); in service_outstanding_interrupt()
462 spin_unlock_irq(&desc->iuspin); in service_outstanding_interrupt()
463 rv = usb_submit_urb(desc->response, GFP_KERNEL); in service_outstanding_interrupt()
464 spin_lock_irq(&desc->iuspin); in service_outstanding_interrupt()
466 dev_err(&desc->intf->dev, in service_outstanding_interrupt()
470 clear_bit(WDM_RESPONDING, &desc->flags); in service_outstanding_interrupt()
471 desc->resp_count = 0; in service_outstanding_interrupt()
482 struct wdm_device *desc = file->private_data; in wdm_read() local
485 rv = mutex_lock_interruptible(&desc->rlock); /*concurrent reads */ in wdm_read()
489 cntr = READ_ONCE(desc->length); in wdm_read()
491 desc->read = 0; in wdm_read()
493 if (test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_read()
497 if (test_bit(WDM_OVERFLOW, &desc->flags)) { in wdm_read()
498 clear_bit(WDM_OVERFLOW, &desc->flags); in wdm_read()
504 if (!test_bit(WDM_READ, &desc->flags)) { in wdm_read()
510 rv = wait_event_interruptible(desc->wait, in wdm_read()
511 test_bit(WDM_READ, &desc->flags)); in wdm_read()
515 if (test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_read()
519 if (test_bit(WDM_RESETTING, &desc->flags)) { in wdm_read()
523 usb_mark_last_busy(interface_to_usbdev(desc->intf)); in wdm_read()
529 spin_lock_irq(&desc->iuspin); in wdm_read()
531 if (desc->rerr) { /* read completed, error happened */ in wdm_read()
532 rv = usb_translate_errors(desc->rerr); in wdm_read()
533 desc->rerr = 0; in wdm_read()
534 spin_unlock_irq(&desc->iuspin); in wdm_read()
541 if (!test_bit(WDM_READ, &desc->flags)) { /* lost race */ in wdm_read()
542 spin_unlock_irq(&desc->iuspin); in wdm_read()
546 if (!desc->reslength) { /* zero length read */ in wdm_read()
547 dev_dbg(&desc->intf->dev, "zero length - clearing WDM_READ\n"); in wdm_read()
548 clear_bit(WDM_READ, &desc->flags); in wdm_read()
549 rv = service_outstanding_interrupt(desc); in wdm_read()
550 spin_unlock_irq(&desc->iuspin); in wdm_read()
555 cntr = desc->length; in wdm_read()
556 spin_unlock_irq(&desc->iuspin); in wdm_read()
561 rv = copy_to_user(buffer, desc->ubuf, cntr); in wdm_read()
567 spin_lock_irq(&desc->iuspin); in wdm_read()
569 for (i = 0; i < desc->length - cntr; i++) in wdm_read()
570 desc->ubuf[i] = desc->ubuf[i + cntr]; in wdm_read()
572 desc->length -= cntr; in wdm_read()
574 if (!desc->length) { in wdm_read()
575 clear_bit(WDM_READ, &desc->flags); in wdm_read()
576 service_outstanding_interrupt(desc); in wdm_read()
578 spin_unlock_irq(&desc->iuspin); in wdm_read()
582 mutex_unlock(&desc->rlock); in wdm_read()
588 struct wdm_device *desc = file->private_data; in wdm_flush() local
590 wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags)); in wdm_flush()
593 if (desc->werr < 0 && !test_bit(WDM_DISCONNECTING, &desc->flags)) in wdm_flush()
594 dev_err(&desc->intf->dev, "Error in flush path: %d\n", in wdm_flush()
595 desc->werr); in wdm_flush()
597 return usb_translate_errors(desc->werr); in wdm_flush()
602 struct wdm_device *desc = file->private_data; in wdm_poll() local
606 spin_lock_irqsave(&desc->iuspin, flags); in wdm_poll()
607 if (test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_poll()
609 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_poll()
612 if (test_bit(WDM_READ, &desc->flags)) in wdm_poll()
614 if (desc->rerr || desc->werr) in wdm_poll()
616 if (!test_bit(WDM_IN_USE, &desc->flags)) in wdm_poll()
618 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_poll()
620 poll_wait(file, &desc->wait, wait); in wdm_poll()
631 struct wdm_device *desc; in wdm_open() local
634 desc = wdm_find_device_by_minor(minor); in wdm_open()
635 if (!desc) in wdm_open()
638 intf = desc->intf; in wdm_open()
639 if (test_bit(WDM_DISCONNECTING, &desc->flags)) in wdm_open()
641 file->private_data = desc; in wdm_open()
643 rv = usb_autopm_get_interface(desc->intf); in wdm_open()
645 dev_err(&desc->intf->dev, "Error autopm - %d\n", rv); in wdm_open()
650 mutex_lock(&desc->wlock); in wdm_open()
651 if (!desc->count++) { in wdm_open()
652 desc->werr = 0; in wdm_open()
653 desc->rerr = 0; in wdm_open()
654 rv = usb_submit_urb(desc->validity, GFP_KERNEL); in wdm_open()
656 desc->count--; in wdm_open()
657 dev_err(&desc->intf->dev, in wdm_open()
664 mutex_unlock(&desc->wlock); in wdm_open()
665 if (desc->count == 1) in wdm_open()
666 desc->manage_power(intf, 1); in wdm_open()
667 usb_autopm_put_interface(desc->intf); in wdm_open()
675 struct wdm_device *desc = file->private_data; in wdm_release() local
680 mutex_lock(&desc->wlock); in wdm_release()
681 desc->count--; in wdm_release()
682 mutex_unlock(&desc->wlock); in wdm_release()
684 if (!desc->count) { in wdm_release()
685 if (!test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_release()
686 dev_dbg(&desc->intf->dev, "wdm_release: cleanup\n"); in wdm_release()
687 kill_urbs(desc); in wdm_release()
688 spin_lock_irq(&desc->iuspin); in wdm_release()
689 desc->resp_count = 0; in wdm_release()
690 spin_unlock_irq(&desc->iuspin); in wdm_release()
691 desc->manage_power(desc->intf, 0); in wdm_release()
695 cleanup(desc); in wdm_release()
704 struct wdm_device *desc = file->private_data; in wdm_ioctl() local
709 if (copy_to_user((void __user *)arg, &desc->wMaxCommand, sizeof(desc->wMaxCommand))) in wdm_ioctl()
740 struct wdm_device *desc = container_of(work, struct wdm_device, rxwork); in wdm_rxwork() local
745 spin_lock_irqsave(&desc->iuspin, flags); in wdm_rxwork()
746 if (test_bit(WDM_DISCONNECTING, &desc->flags)) { in wdm_rxwork()
747 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_rxwork()
749 responding = test_and_set_bit(WDM_RESPONDING, &desc->flags); in wdm_rxwork()
750 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_rxwork()
752 rv = usb_submit_urb(desc->response, GFP_KERNEL); in wdm_rxwork()
754 spin_lock_irqsave(&desc->iuspin, flags); in wdm_rxwork()
755 clear_bit(WDM_RESPONDING, &desc->flags); in wdm_rxwork()
756 if (!test_bit(WDM_DISCONNECTING, &desc->flags)) in wdm_rxwork()
757 schedule_work(&desc->rxwork); in wdm_rxwork()
758 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_rxwork()
765 struct wdm_device *desc; in service_interrupt_work() local
767 desc = container_of(work, struct wdm_device, service_outs_intr); in service_interrupt_work()
769 spin_lock_irq(&desc->iuspin); in service_interrupt_work()
770 service_outstanding_interrupt(desc); in service_interrupt_work()
771 if (!desc->resp_count) { in service_interrupt_work()
772 set_bit(WDM_READ, &desc->flags); in service_interrupt_work()
773 wake_up(&desc->wait); in service_interrupt_work()
775 spin_unlock_irq(&desc->iuspin); in service_interrupt_work()
784 struct wdm_device *desc; in wdm_create() local
786 desc = kzalloc(sizeof(struct wdm_device), GFP_KERNEL); in wdm_create()
787 if (!desc) in wdm_create()
789 INIT_LIST_HEAD(&desc->device_list); in wdm_create()
790 mutex_init(&desc->rlock); in wdm_create()
791 mutex_init(&desc->wlock); in wdm_create()
792 spin_lock_init(&desc->iuspin); in wdm_create()
793 init_waitqueue_head(&desc->wait); in wdm_create()
794 desc->wMaxCommand = bufsize; in wdm_create()
796 desc->inum = cpu_to_le16((u16)intf->cur_altsetting->desc.bInterfaceNumber); in wdm_create()
797 desc->intf = intf; in wdm_create()
798 INIT_WORK(&desc->rxwork, wdm_rxwork); in wdm_create()
799 INIT_WORK(&desc->service_outs_intr, service_interrupt_work); in wdm_create()
805 desc->wMaxPacketSize = usb_endpoint_maxp(ep); in wdm_create()
807 desc->orq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL); in wdm_create()
808 if (!desc->orq) in wdm_create()
810 desc->irq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL); in wdm_create()
811 if (!desc->irq) in wdm_create()
814 desc->validity = usb_alloc_urb(0, GFP_KERNEL); in wdm_create()
815 if (!desc->validity) in wdm_create()
818 desc->response = usb_alloc_urb(0, GFP_KERNEL); in wdm_create()
819 if (!desc->response) in wdm_create()
822 desc->command = usb_alloc_urb(0, GFP_KERNEL); in wdm_create()
823 if (!desc->command) in wdm_create()
826 desc->ubuf = kmalloc(desc->wMaxCommand, GFP_KERNEL); in wdm_create()
827 if (!desc->ubuf) in wdm_create()
830 desc->sbuf = kmalloc(desc->wMaxPacketSize, GFP_KERNEL); in wdm_create()
831 if (!desc->sbuf) in wdm_create()
834 desc->inbuf = kmalloc(desc->wMaxCommand, GFP_KERNEL); in wdm_create()
835 if (!desc->inbuf) in wdm_create()
839 desc->validity, in wdm_create()
842 desc->sbuf, in wdm_create()
843 desc->wMaxPacketSize, in wdm_create()
845 desc, in wdm_create()
849 desc->irq->bRequestType = (USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE); in wdm_create()
850 desc->irq->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE; in wdm_create()
851 desc->irq->wValue = 0; in wdm_create()
852 desc->irq->wIndex = desc->inum; /* already converted */ in wdm_create()
853 desc->irq->wLength = cpu_to_le16(desc->wMaxCommand); in wdm_create()
856 desc->response, in wdm_create()
859 usb_rcvctrlpipe(interface_to_usbdev(desc->intf), 0), in wdm_create()
860 (unsigned char *)desc->irq, in wdm_create()
861 desc->inbuf, in wdm_create()
862 desc->wMaxCommand, in wdm_create()
864 desc in wdm_create()
867 desc->manage_power = manage_power; in wdm_create()
870 list_add(&desc->device_list, &wdm_device_list); in wdm_create()
882 list_del(&desc->device_list); in wdm_create()
884 cleanup(desc); in wdm_create()
918 if (iface->desc.bNumEndpoints != 1) in wdm_probe()
920 ep = &iface->endpoint[0].desc; in wdm_probe()
966 struct wdm_device *desc; in wdm_disconnect() local
970 desc = wdm_find_device(intf); in wdm_disconnect()
974 spin_lock_irqsave(&desc->iuspin, flags); in wdm_disconnect()
975 set_bit(WDM_DISCONNECTING, &desc->flags); in wdm_disconnect()
976 set_bit(WDM_READ, &desc->flags); in wdm_disconnect()
978 clear_bit(WDM_IN_USE, &desc->flags); in wdm_disconnect()
979 spin_unlock_irqrestore(&desc->iuspin, flags); in wdm_disconnect()
980 wake_up_all(&desc->wait); in wdm_disconnect()
981 mutex_lock(&desc->rlock); in wdm_disconnect()
982 mutex_lock(&desc->wlock); in wdm_disconnect()
983 kill_urbs(desc); in wdm_disconnect()
984 cancel_work_sync(&desc->rxwork); in wdm_disconnect()
985 cancel_work_sync(&desc->service_outs_intr); in wdm_disconnect()
986 mutex_unlock(&desc->wlock); in wdm_disconnect()
987 mutex_unlock(&desc->rlock); in wdm_disconnect()
991 list_del(&desc->device_list); in wdm_disconnect()
994 if (!desc->count) in wdm_disconnect()
995 cleanup(desc); in wdm_disconnect()
997 dev_dbg(&intf->dev, "%d open files - postponing cleanup\n", desc->count); in wdm_disconnect()
1004 struct wdm_device *desc = wdm_find_device(intf); in wdm_suspend() local
1007 dev_dbg(&desc->intf->dev, "wdm%d_suspend\n", intf->minor); in wdm_suspend()
1011 mutex_lock(&desc->rlock); in wdm_suspend()
1012 mutex_lock(&desc->wlock); in wdm_suspend()
1014 spin_lock_irq(&desc->iuspin); in wdm_suspend()
1017 (test_bit(WDM_IN_USE, &desc->flags) in wdm_suspend()
1018 || test_bit(WDM_RESPONDING, &desc->flags))) { in wdm_suspend()
1019 spin_unlock_irq(&desc->iuspin); in wdm_suspend()
1023 set_bit(WDM_SUSPENDING, &desc->flags); in wdm_suspend()
1024 spin_unlock_irq(&desc->iuspin); in wdm_suspend()
1026 kill_urbs(desc); in wdm_suspend()
1027 cancel_work_sync(&desc->rxwork); in wdm_suspend()
1028 cancel_work_sync(&desc->service_outs_intr); in wdm_suspend()
1031 mutex_unlock(&desc->wlock); in wdm_suspend()
1032 mutex_unlock(&desc->rlock); in wdm_suspend()
1039 static int recover_from_urb_loss(struct wdm_device *desc) in recover_from_urb_loss() argument
1043 if (desc->count) { in recover_from_urb_loss()
1044 rv = usb_submit_urb(desc->validity, GFP_NOIO); in recover_from_urb_loss()
1046 dev_err(&desc->intf->dev, in recover_from_urb_loss()
1055 struct wdm_device *desc = wdm_find_device(intf); in wdm_resume() local
1058 dev_dbg(&desc->intf->dev, "wdm%d_resume\n", intf->minor); in wdm_resume()
1060 clear_bit(WDM_SUSPENDING, &desc->flags); in wdm_resume()
1061 rv = recover_from_urb_loss(desc); in wdm_resume()
1069 struct wdm_device *desc = wdm_find_device(intf); in wdm_pre_reset() local
1077 spin_lock_irq(&desc->iuspin); in wdm_pre_reset()
1078 set_bit(WDM_RESETTING, &desc->flags); /* inform read/write */ in wdm_pre_reset()
1079 set_bit(WDM_READ, &desc->flags); /* unblock read */ in wdm_pre_reset()
1080 clear_bit(WDM_IN_USE, &desc->flags); /* unblock write */ in wdm_pre_reset()
1081 desc->rerr = -EINTR; in wdm_pre_reset()
1082 spin_unlock_irq(&desc->iuspin); in wdm_pre_reset()
1083 wake_up_all(&desc->wait); in wdm_pre_reset()
1084 mutex_lock(&desc->rlock); in wdm_pre_reset()
1085 mutex_lock(&desc->wlock); in wdm_pre_reset()
1086 kill_urbs(desc); in wdm_pre_reset()
1087 cancel_work_sync(&desc->rxwork); in wdm_pre_reset()
1088 cancel_work_sync(&desc->service_outs_intr); in wdm_pre_reset()
1094 struct wdm_device *desc = wdm_find_device(intf); in wdm_post_reset() local
1097 clear_bit(WDM_OVERFLOW, &desc->flags); in wdm_post_reset()
1098 clear_bit(WDM_RESETTING, &desc->flags); in wdm_post_reset()
1099 rv = recover_from_urb_loss(desc); in wdm_post_reset()
1100 mutex_unlock(&desc->wlock); in wdm_post_reset()
1101 mutex_unlock(&desc->rlock); in wdm_post_reset()