On Monday 31 December 2007, David Brownell wrote:
> The "complete sooner" fix seems straightforward,

... and FWIW should reduce the number of EL2NSYNC faults that
get reported, by removing an source of delays in URB completion.
Such delays cause those faults to be returned in cases where
they are correct, but not expected.


>        but mixing in 
> the other mechanism (complex workaround for VIA bug) caused a
> lot of complication...

And FWIW I think a simpler way to address that workaround would
be to change the control flow of [s]itd_complete() from

        collect status
        recycle [s]itd
        unless URB still has transfers return 0
        urb is done()
        return 1

to something more like this (structured to avoid code re-indenting):

        retcode = 0
        collect status
        unless URB still has transfers goto done
        urb is done()
        retcode = 1
done:
        recycle [s]itd
        return retcode

I don't see a real need to split out a separate scan() routine,
and so forth ... if the core issue is that some controllers
mark (s)itds completed before they're actually done using them
(e.g. they cache "old" dma descriptors, or pointers to them,
until end-of-frame), then deferred recycling is enough to make
sure that can't happen.

- Dave


-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to