After some debugging this morning I am finding out that the cdc_acm
driver gets a 0x22 code(which I believe is disconnect) leading to the
issue. More investigation still seem to indicate a buffer on the ti
chip's side fills up and then asks for a disconnection.(between 8 and
16 bytes non-read create the issue and disconnect everything)
Here is a transcript of a working bucket:
[496322.249690] drivers/usb/class/cdc-acm.c: Entering acm_read_bulk
with status 0
[496322.249706] drivers/usb/class/cdc-acm.c: Entering acm_rx_tasklet
[496322.249710] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: procesing
buf 0xee8ab388, size = 1
[496322.249718] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending
urb 0xef112800, rcv 0xee8ab248, buf 0xee8ab388
[496322.249771] drivers/usb/class/cdc-acm.c: Entering acm_tty_write to
write 1 bytes,
[496322.249774] drivers/usb/class/cdc-acm.c: Get 1 bytes...
[496322.249777] drivers/usb/class/cdc-acm.c: acm_write_start
susp_count: 0
And the transcript of when it all goes wrong:
[496322.483695] drivers/usb/class/cdc-acm.c: acm_control_msg: rq: 0x22
val: 0x0 len: 0x0 result: 0
[496322.485283] drivers/usb/class/cdc-acm.c: acm_ctrl_irq - urb
shutting down with status: -2
[496322.486934] drivers/usb/class/cdc-acm.c: Entering acm_read_bulk
with status -2
[496322.486939] cdc_acm 2-1:1.0: Aborting, acm not ready
I'll keep on searching for an easy fix, but if someone has a simple
suggestion to keep that buffer clean, please do tell.
(adding something kernel side so it'll wipe the buffer at regular
intervals just seems very complicated)