Hi,

Christian Gromm <christian.gr...@microchip.com> writes:
> we observe an issue with a td_list running empty and an
> endpoint being stalled at the same time on
>
> Linux ihu-low 4.1.27-abl #1 SMP PREEMPT Mon Mar 20 13:51:51 CET 2017 
> x86_64 x86_64 x86_64 GNU/Linux.

we've recently observed the same problem with "Linux ihu-low 4.1.27-abl" kernel.
In our case it was discovered from the logs that URBs, that are being killed by 
“usb_kill_anchored_urbs()”, are still being used by “handle_tx_event()”. Sooner 
or later the same URB was used and killed at the same time, which caused the 
“WARN Event TRB for slot 2 ep 28 with no TDs queued?” error message, and the 
whole communication stopped.

The developer, who introduced the USB anchors, has added some demo code in the 
file drivers/usb/usb-skeleton.c. In this file he is invoking 
“usb_wait_anchor_empty_timeout()” before he calls “usb_kill_anchored_urbs()”. 
If I understand it correctly, the purpose of this function is to wait until all 
URBs have been processed.
Therefore I suggested to do the same in the most driver. Fortunately it seems 
that this resolved our problem: We've never seen this problem anymore.

BR
Rolf
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to