Question regarding short transfers

"Curran, Dominic" <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Hi
I have two questions regarding short transfers.
My questions are best illustrated by a scenario:

Lets say the Hosts Mass Storage driver wants to READ 12K:

I believe that the Host Controller driver (e.g. ehci_hcd) might see
something like this coming from usbcore:

1) BULK OUT urb (31 bytes) [Contains READ10 command]
2) BULK IN  urb (4K)       [data]
3) BULK IN  urb (8K)       [data]
4) BULK IN  urb (13 bytes) [status]

I have two questions regarding what happens when the transfer gets
terminated early:


1) What happens if the device terminates the transfer after the 4KB
(with a zero-length packet)?  

Does the HC driver...
- set status to 0 in the 4K urb (& actual_length=4096) and
- flush all other queued urbs for that EP (in this case the 8K urb) by
completing them with an error status ?  If so what is the status ?



2) What happens if the device terminates the transfer during the 4KB
(after say 3700 bytes received, with a short packet)?  

Thus:
urb->transfer_buffer_length = 4096
urb->actual_length          = 3700

I believe that the HC driver should do the following test:

if( (urb->actual_length < urb->transfer_buffer_length) &&
	(urb->transfer_flags & URB_SHORT_NOT_OK) )
 	urb->status = -EREMOTEIO;

So if URB_SHORT_NOT_OK is set then -EREMOTEIO will be returned And if
URB_SHORT_NOT_OK is not set the 0 will be returned.

Is this correct ?

Again I assume that the 8K urb should be completed immediately ?
If so with what status ?


I'm having trouble understand the EHCI code; In the EHCI driver where
are these situation handled ?  qh_completions() ?

Thank you for your time
regards
dom



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.