Re: CDC ACM problem

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

 



I have done some more testing now.

It seems there is no problem on newer kernels. The problem seems to
disappear somewhere around version 3.5.

And also, I was only seeing this problem on a computer with Intel QM77
chipset. With another older computer there was no problem even with
kernel version 3.2.

/Martin



2014-03-24 14:55 GMT+01:00 Martin Åkerberg <martin.aakerberg@xxxxxxxxx>:
> thanks for the response,
>
> I will try to reproduce the problem on the latest mainline kernel.
>
> Regards,
>
> Martin
>
> 2014-03-22 13:21 GMT+01:00 Johan Hovold <jhovold@xxxxxxxxx>:
>> On Thu, Mar 20, 2014 at 02:31:30PM +0100, Martin Åkerberg wrote:
>>> Hi Johan,
>>>
>>> You seem to be last contributor to cdc-acm driver in linux. I don't know if
>>> you are the correct person to ask, or if you have the time to answer, but
>>> if not, could you point me to the correct forum?
>>
>> The linux-usb list (added as CC) would be that forum.
>>
>>> Anyway, I am implementing a CDC-ACM device in a Atmel XMEGA processor. I am
>>> interfacing this from a c-program on a Linux machine. Everything is working
>>> as expected when it comes to opening the /dev/ttyACM0, configuring the
>>> terminal, reading and sending data and closing the device. The problem
>>> occurs when I try to open and close the device repeatedly many times.
>>>
>>> As a test: With a simple c-program I open and close the device in an
>>> endless loop. Before every open and close I have a 100ms delay. I can see
>>> on my device that setup messages with control line signals is sent on every
>>> open and close, as expected.
>>>
>>> After about 50-500 cycles the open call fails. The message I can read in
>>> dmesg is:
>>>
>>> [xxx] xhci_hcd 0000:00:14.0 ERROR no room on ep ring
>>> [xxx] cdc_acm 3-3:1.1: acm_submit_read_urb - usb_submit_urb failed: -12
>>>
>>> I read this as memory overflow regarding read urbs. I see in the kernel
>>> code that 16 read urbs are allocated everytime the port is opened. But
>>> these read urbs should be killed in the acm_port_shutdown function, which
>>> might get called via
>>>
>>> tty_port_close
>>>    tty_port_shutdown
>>>     port->ops->shutdown
>>>
>>> I say "might" since it seems it doesn't happen in my case.
>>>
>>> Do you have any idea why this might be?
>>
>> Well, this appears to be a problem in the xhci-driver, and not directly
>> related to cdc-acm. Specifically, the -ENOMEM (-12) above originates in
>> the xhci-driver when it fails to enqueue the urb.
>>
>> [ The cdc-acm driver allocates its urbs on probe and releases them when
>>   the device is unbound. ]
>>
>>> I don't see any of the kernel warnings from tty_port_close_start,
>>>
>>> The "uname -r" output is: 3.2.0.23-generic
>>
>> That is a fairly old kernel (and also a distro-kernel?). I'd suggest you
>> try to reproduce this on a more recent mainline kernel such as v3.13.6
>> (or v3.14-rc7).
>>
>> Thanks,
>> Johan
--
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