On Wed, Mar 20, 2002 at 07:04:43AM -0000, Marc wrote:
> Hi,
>      I am using an SA1100 client and i386(host) to do
> usb bulk transfers.
> 
> Due to the client limitations, I have made necessary
> changes in my client code to receive max packet size
> of 16 bytes.
> (I don't want to receive the dat with a packet size
>  greater than 8/16)
> On the host side, I am using the generic serial driver(usbserial) 
> to send the data.
> 
> When I try to send more data from the host, the host gets an 
> interrupt
> Mar 14 18:51:24 localhost kernel: usb-uhci.c: interrupt, status 3, frame# 194
> Mar 14 18:51:24 localhost kernel: usb-uhci.c: interrupt, status 3, frame# 361
> Mar 14 18:51:53 localhost kernel: usbserial.c: generic_write - failed submitting 
>write urb, error -32
> 
> Everything works fine if I send data less than the 
> wMaxPacketSize.

If you look at Documentation/usb/error-codes.txt, you will see that the
above error (-32 = -EPIPE) means that the endpoint is stalled.

So your client is stalling the endpoint, which does not seem like a
proper thing to do.  Why does it do this?

Why do you have to limit your receiving end to 16 bytes?

> Is this an expected behaviour of usbserial(generic driver)?

Well, I'd ask if this is the expected behavior of your client device?  :)

> How could I make host usb driver send packets of 8/16 bytes?  (using
> USB generic driver)
> OR
> should I write a custom driver?

If you want to limit the size of the data sent, yes you need to write a
custom driver.  It would be very simple, all you have to provide is a
write() function that limits the size of the data sent.

Hope this helps,

greg k-h

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to