Hi, Thank you for the review. Michał Pecio <michal.pecio@xxxxxxxxx> 於 2024年9月11日 週三 下午3:52寫道: > > Hi, > > > This happens when the xHCI driver enqueue a control TD (which cross > > over the Link TRB between two ring segments, as shown) in the endpoint > > zero's transfer ring. Seems the Etron xHCI host can not perform this > > TD correctly, causing the USB transfer error occurred, maybe the upper > > driver retry that control-IN request can solve problem, but not all > > drivers do this. > > > > | | > > ------- > > | TRB | Setup Stage > > ------- > > | TRB | Link > > ------- > > ------- > > | TRB | Data Stage > > ------- > > | TRB | Status Stage > > ------- > > | | > > I wonder about a few things. > > 1. What are the exact symptoms, besides Ethernet driver errors? > Any errors from xhci_hcd? What if dynamic debug is enabled? The xhci driver receives a transfer event TRB (completion code is "USB Transaction Error") when the issue is triggered. > > 2. How did you determine that this is the exact cause? The issue is triggered every time when a Link TRB follows a Setup Stage TRB. > > 3. Does it happen every time when a Link follows Setup, or only > randomly and it takes lots of control transfers to trigger it? Yes, it happens every time. > > 4. How is it even possible? As far as I see, Linux simply queues > three TRBs for a control URB. There are 255 slots in a segemnt, > so exactly 85 URBs should fit, and then back to the first slot. The xhci driver also queues no data control transfers. > > Regards, > Michal Thanks, Kuangyi Chiang