diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c index 2d7f445bd331..ee5b8757036b 100644 --- a/sys/dev/usb/usb_subr.c +++ b/sys/dev/usb/usb_subr.c @@ -1106,9 +1106,15 @@ usbd_status usbd_reload_device_desc(usbd_device_handle dev) { usbd_status err; + int i; /* Get the full device descriptor. */ - err = usbd_get_device_desc(dev, &dev->ddesc); + for (i = 0; i < 3; ++i) { + err = usbd_get_device_desc(dev, &dev->ddesc); + if (!err) + break; + usbd_delay_ms(dev, 200); + } if (err) return (err);