780
781static int recover_from_urb_loss(struct wdm_device *desc)
782{
783 int rv = 0;
784
785 if (desc->count) {
786 rv = usb_submit_urb(desc->validity, GFP_NOIO);
787 if (rv < 0)
788 dev_err(&desc->intf->dev,
789 "Error resume submitting int urb - %d\n", rv);
790 }
791 return rv;
792}
793static int wdm_resume(struct usb_interface *intf)
794{
795 struct wdm_device *desc = usb_get_intfdata(intf);
796 int rv;
797
798 dev_dbg(&desc->intf->dev, "wdm%d_resume\n", intf->minor);
799 mutex_lock(&desc->plock);
800 rv = recover_from_urb_loss(desc);
801 mutex_unlock(&desc->plock);
802 return rv;
803}
804
805static int wdm_pre_reset(struct usb_interface *intf)
806{
807 struct wdm_device *desc = usb_get_intfdata(intf);
808
809 mutex_lock(&desc->plock);
810 return 0;
811}
812
813static int wdm_post_reset(struct usb_interface *intf)
814{
815 struct wdm_device *desc = usb_get_intfdata(intf);
816 int rv;
817
818 rv = recover_from_urb_loss(desc);
819 mutex_unlock(&desc->plock);
820 return 0;