Addressing problems with babble

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Greetings linux-usb,

I've been having problems for about a month with a driver I wrote for
a USB device, first in Windows using UMDF, and now as a Linux kernel
module. In short, at certain points in the driver, usb_bulk_msg(),
usb_submit_urb(), etc. return -75, (-EOVERFLOW) which has been
associated with unexpected extra data. ('babble')

In order to address these problems I need a good way to 'clear' all
data sent by the device through the input bulk endpoint. Currently I
have a function that basically calls usb_bulk_msg(), reading in
wMaxPacketSize bytes at a time until the length of the read reported
does not match this maximum packet size. (typically 512) This fixes
some problems, but usage of the input endpoint immediately following
this 'flush' function (for data that's requested after the flush takes
place) fails with -75.

In UMDF, there's a method called IWDFUsbTargetPipe::Flush() that wipes
data from the fifo buffer associated with the USB endpoint:
http://msdn.microsoft.com/en-us/library/dd184035.aspx
I'm not sure if usbcore performs buffering, or if the USB host
controller does this, or what is going on, but does the Linux USB
subsystem include similar functionality, allowing a bulk input to be
'wiped' of data, or 'reset'?

- Lucas
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux