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