Looks better ... except that I remembered there's another case
to worry about. For short reads, consider:
The donelist handling would need to handle that; it's
got code to skip the rest of a bulk/intr data stage,
but not code to make sure the control status packet is
still queued.
I think you are talking about 2.5 kernel. I can't find it
in 2.4 kernel. My patch was against the 2.4 kernel.
You should study dl_reverse_done_list() harder! Yes, there
is code in usb-ohci that's even more cryptic. The code in
the 2.5 driver which does that is ed_halted() ... does not
quite the same thing though. I think that comment captures
all the conditions for that particular nasty/rare case.
Looks like this ohci short packet stuff is very tricky.
Easier if it's not control traffic.
Is it possible to apply the patch for usbdevfs separately?
If we don't aim for more than one data TD, we can still make
that scanner work. The check for buffer size will become:
uurb.buffer_length > PAGE_SIZE + 8
That was my initial suggestion!
Because there is 8 bytes of setup stage should not count in
the data buffer. In this case, we support up to exactly
one page of data buffer.
Any comment? It have gone that far, I really like to make this
scanner work.
I'd agree usbfs control writes should allow "4096 + 8" bytes...
- Dave
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel