Changeset 2295

Mar 15, 2013, 9:58:37 AM (6 years ago)

ra_usb: Prevent queue starvation due to limited number of host channels.

The USB controller hardware only has four "host controllers", used to
communicate with USB devices. When communication with a device blocks
(e.g. a 3G stick that does not have any data to send yet), it could
happen that no free host channels are available for other USB transfers,
causing these to time out (most often shown as "application timed out on
ep0in" in the kernel log).

This problem surfaced in particular when using a 3G modem using an USB
hub, since the hub and the 3G modem typically need one host channel each
for their interrupt endpoint and the 3G modem typically has a control
and data port, each of which uses blocking bulk transfers, filling up
the four available host channels.

Closes: #857

1 added

Note: See TracChangeset for help on using the changeset viewer.