diff -rub --minimal a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c --- a/sound/usb/usbaudio.c 2006-04-26 22:19:25.000000000 -0400 +++ b/sound/usb/usbaudio.c 2006-08-09 19:41:46.000000000 -0400 @@ -240,7 +240,6 @@ return (usb_rate * 125 + (1 << 9)) >> 10; } - /* * prepare urb for full speed capture sync pipe * @@ -838,6 +837,9 @@ subs->running = 1; for (i = 0; i < subs->nurbs; i++) { err = usb_submit_urb(subs->dataurb[i].urb, GFP_ATOMIC); + if (err == -EL2NSYNC) + err = usb_submit_urb(subs->dataurb[i].urb, GFP_ATOMIC); + if (err < 0) { snd_printk(KERN_ERR "cannot submit datapipe " "for urb %d, error %d: %s\n", @@ -849,6 +851,8 @@ if (subs->syncpipe) { for (i = 0; i < SYNC_URBS; i++) { err = usb_submit_urb(subs->syncurb[i].urb, GFP_ATOMIC); + if (err == -EL2NSYNC) + err = usb_submit_urb(subs->syncurb[i].urb, GFP_ATOMIC); if (err < 0) { snd_printk(KERN_ERR "cannot submit syncpipe " "for urb %d, error %d: %s\n",