diff options
| author | Greg Kroah-Hartman <[email protected]> | 2025-05-13 06:19:37 +0000 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2025-05-13 06:19:37 +0000 |
| commit | 991919e969043a4422dfebbcadf600a5d28b94e4 (patch) | |
| tree | 4776f9f162c665a9735198fafc466d3e49a14253 /sound/usb/endpoint.c | |
| parent | comedi: drivers: adl_pci9118.c: Edit file so that checkpatch.pl has 0 typo er... (diff) | |
| parent | Linux 6.15-rc6 (diff) | |
| download | kernel-991919e969043a4422dfebbcadf600a5d28b94e4.tar.gz kernel-991919e969043a4422dfebbcadf600a5d28b94e4.zip | |
Merge 6.15-rc6 into char-misc-next
We need the iio/hyperv fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'sound/usb/endpoint.c')
| -rw-r--r-- | sound/usb/endpoint.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index a29f28eb7d0c..f36ec98da460 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -926,6 +926,8 @@ static int endpoint_set_interface(struct snd_usb_audio *chip, { int altset = set ? ep->altsetting : 0; int err; + int retries = 0; + const int max_retries = 5; if (ep->iface_ref->altset == altset) return 0; @@ -935,8 +937,13 @@ static int endpoint_set_interface(struct snd_usb_audio *chip, usb_audio_dbg(chip, "Setting usb interface %d:%d for EP 0x%x\n", ep->iface, altset, ep->ep_num); +retry: err = usb_set_interface(chip->dev, ep->iface, altset); if (err < 0) { + if (err == -EPROTO && ++retries <= max_retries) { + msleep(5 * (1 << (retries - 1))); + goto retry; + } usb_audio_err_ratelimited( chip, "%d:%d: usb_set_interface failed (%d)\n", ep->iface, altset, err); |
