Comment 1 for bug 329437

Revision history for this message
Federico Briata (federicobriata) wrote :

From: Karsten Wiese <fzu@...>

Currently ITDs are immediately recycled whenever their URB completes.
However, EHCI hardware can sometimes remember some ITD state. This
means that when the ITD is reused before end-of-frame it may sometimes
cause the hardware to reference bogus state.

This patch defers reusing such ITDs by moving them into a new ehci member
cached_itd_list. ITDs resting in cached_itd_list are moved back into their
stream's free_list once scan_periodic() detects that the active frame has
elapsed.

This makes the snd_usb_us122l driver (in kernel since .28) work right
when it's hooked up through EHCI.

in attach diff for 2.6.28

git patch for 2.6.29-rc3 here
http://article.gmane.org/gmane.linux.usb.general/14869