[alsa-devel] ALSA: snd-usb-usx2y: remove bogus frame checks
Hi, I did some more testing on my US122:
I used my patch (see below) and it worked (with default nrpack=4), but I got "should not be here with counts=42" errors, then after some time the kernel crashed, but I couldn't copy the trace.
Then I set nrpack=1 and I got no "should not be here..." and it was more stable, no crash. I only checked playback, not recording, nor MIDI, with aplay I played some songs for about one hour...
I hope this can be useful. But I think there are other bugs in this driver.
Ciao Guido Aulisi
The patch is:
diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c index 63fb521..cd16fcc 100644 --- a/sound/usb/usx2y/usbusx2yaudio.c +++ b/sound/usb/usx2y/usbusx2yaudio.c @@ -328,7 +328,7 @@ static void i_usX2Y_urb_complete(struct urb *urb) usX2Y_error_urb_status(usX2Y, subs, urb); return; } - if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF))) + if (likely((urb->start_frame & 0x03FF) == (usX2Y->wait_iso_frame & 0x03FF))) subs->completed_urb = urb; else { usX2Y_error_sequence(usX2Y, subs, urb);
At Mon, 07 Oct 2013 23:29:50 +0200, Guido Aulisi wrote:
Hi, I did some more testing on my US122:
I used my patch (see below) and it worked (with default nrpack=4), but I got "should not be here with counts=42" errors, then after some time the kernel crashed, but I couldn't copy the trace.
Did you try to disable the "should not here with..." check in the code? This looks also bogus for ehci, too.
Then I set nrpack=1 and I got no "should not be here..." and it was more stable, no crash. I only checked playback, not recording, nor MIDI, with aplay I played some songs for about one hour...
I hope this can be useful. But I think there are other bugs in this driver.
Yeah, there can be :) The driver was developed for ohci and uhci, but not fully tested with ehci, AFAIK.
Meanwhile, we may add a workaround to force nrpack=1 in the case of HIGHSPEED controller if it's confirmed to work in general.
thanks,
Takashi
Ciao Guido Aulisi
The patch is:
diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c index 63fb521..cd16fcc 100644 --- a/sound/usb/usx2y/usbusx2yaudio.c +++ b/sound/usb/usx2y/usbusx2yaudio.c @@ -328,7 +328,7 @@ static void i_usX2Y_urb_complete(struct urb *urb) usX2Y_error_urb_status(usX2Y, subs, urb); return; }
if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
if (likely((urb->start_frame & 0x03FF) == (usX2Y->wait_iso_frame & 0x03FF))) subs->completed_urb = urb; else { usX2Y_error_sequence(usX2Y, subs, urb);
participants (2)
-
Guido Aulisi
-
Takashi Iwai