"13 bytes not 512" is rather suspicious if we have bInterfaceClass ...Protocol = x 08 
50.  In that context, 13 just happens to be the length of a CSW.  How sure are we that 
the packet here is data?  Do we know if its first four bytes are "USBS", as we would 
expect in a CSW?
 
When working with perfect devices, a host thinking that CSW In is Data In is a host 
that dropped a Data In packet.
 
Curiously yours, Pat LaVarre

        -----Original Message----- 
        From: Greg KH [mailto:[EMAIL PROTECTED]] 
        Sent: Tue 12/10/2002 2:34 PM 
        To: David Brownell; USB Developers; USB Storage List 
        Cc: 
        Subject: Re: [usb-storage] Re: [linux-usb-devel] Re: PATCH: usb-storage: make 
internal structs more consistent
        
        

        On Mon, Dec 09, 2002 at 06:11:32PM -0800, Matthew Dharm wrote:
        > On Mon, Dec 09, 2002 at 05:34:11PM -0800, Greg KH wrote:
        > > On Mon, Dec 09, 2002 at 05:32:02PM -0800, David Brownell wrote:
        > > > >>...
        > > > >>Dec  9 15:22:26 soap kernel: usb-storage:
        > > > >>usb_stor_bulk_transfer_sglist(): xfer 65536 bytes, 16 entries
        > > > >>Dec  9 15:22:26 soap kernel: usb-storage: Status code -121; 
transferred
        > > > >>65037/65536
        > > > >>Dec  9 15:22:26 soap kernel: usb-storage: -- unknown error
        > > >
        > > > That's not a timeout, "-EREMOTEIO" means it got a short read.
        > > > In this case, that last packet included only 13 bytes not 512.
        > > > (Assuming this was at high speed, otherwise it wasn't the last
        > > > one, and that was likely 13 bytes out of 64.)
        > >
        > > Yeah, that suggests that either usb-storage needs to handle this
        > > somehow, right?
        >
        > No.  That's a bogus thing for a drive to do.  It _should_ just NAK when
        > there is no data until data becomes available.
        >
        > A short packet indicates the end of the data phase.
        
        So the device is buggy when pushed as fast as we now are?
        
        > > > Given there's only one place in the EHCI driver where EREMOTEIO
        > > > shows up, I'm tempted to believe that the hardware really did
        > > > return a short read in that last packet.
        > > >
        > > > As for why it did so, no ideas just now.  Though I wonder if
        > > > maybe retrying short reads wouldn't help, on the premise that
        > > > the disk had a temporary "can't keep up" problem, since using
        > > > those scatterlist operations drives that hardware much faster
        > > > than it was ever driven by earlier kernels.
        >
        > Ack!  No!  No retrying short reads.  We need to be able to see them!
        >
        > > But does that deserve the long "reset the endpoint" delay that happens
        > > because of this?  I'd rather have a bit slower throughput and no long
        > > delays, than shorter bursts of data, with long delays, cutting the end
        > > throughput way down.
        >
        > Well, the reset logic is slow because some devices need that much time.
        > You shouldn't be resetting, because you shouldn't be getting short reads.
        > We need to fix the root cause, not the symptoms.
        
        I agree, any ideas?
        
        greg k-h
        _______________________________________________
        usb-storage mailing list
        [EMAIL PROTECTED]
        http://www2.one-eyed-alien.net/mailman/listinfo/usb-storage
        

�+,~w�zf��+,��좷�o%���y�O��
���j�j�^��'�&�+r-櫞�.�쨺�h��ڴ�6��ޭ�+���x*&��b��jyޖm����^��Z�w���?�)���u�ޖX���(��~��zw�N�����r��z���j�_�����]j�m��?�X���(��~��zw��X�����b��?�)���u��


Reply via email to