On Sat, Oct 29, 2011 at 12:48:12PM -0500, Larry Finger wrote:Sarah,
Pardon the intrusion, but I'm trying to fix a problem for v4mp, a
user of the rtl8192cu driver on an Alfa AWUS036NHR. I have one of
the devices, and it works on a USB 2.0 hub, but fails with 3.0
hardware with lots of
xhci_hcd 0000:05:00.0: ERROR no room on ep ring
messages logged.
The xHCI driver allocates a fixed-size endpoint ring, and only so much
data can fit on it. If the driver is allocating many URBs or many URBs
with a lot of data, then you will see these messages and the URBs will
fail to be submitted. Now if neither of those conditions are true, then
it's possible we just have a bug in the xHCI driver.
There is a patchset in the works to dynamically expand the endpoint
rings, but it's still going through revisions:
http://marc.info/?l=linux-usb&m=131918645424329&w=2
It might be done for the 3.3 kernel, but until then the driver is just
going to be broken, sorry. :(
The device works with an out-of-kernel driver available from the
Alfa or Realtek web sites, but I want to fix rtl8192cu.
What condition leads to the above message? The user's dmesg buffer
has wrapped, thus I don't see the beginning of the failure. He is
using a canned distro kernel, thus he cannot include any extra
debugging info such as a stack dump when the errors occur. As he
uses the compat-wireless package, I think I can incorporate a new
copy of xhci-hcd with it, but I have not done so yet.
Which distro? Several of the distros are based on 2.6.32, which only
had minimal support for xHCI. Updating just the xHCI driver with a
more recent one isn't going to be possible with that old of a kernel,
since later changes also touched the USB core as well.