Linux USB driver problem with external hub
I am working on a device driver for providing connectivity to a Silabs
F340 board through USB. All the required software, including firmware on the device side, USB device driver and user level libraries as well as the application, are implemented. The system operates fine when experimental communication is considered, in which dummy data is simply sent and received betweeen the host and the device at Full speed. The trouble comes when a USB external hub is used as a gateway between the device and the host instead of directly connecting the USB cable from device to the USB port of the PC. The kernel log states that the transfer of urb failed due to -EPROTO(-71), which is defined as protocol error. I found in some resources that this error can be a result of (a) bitstuff error, or (b) no response packet received within the prescribed bus turn-around time, or (c)hardware problems such as bad devices (including firmware) or cables.
The hub is a Digitus product with 7 ports and works fine with other
USB devices such as the mouse on the same platform.
My kernel version is 2.6.18.
Has anyone got any idea on what can be the reason of this failure, and how can I resolve the problem? I can surely provide any additional information about the situation if any one is interested in helping out.