[U-Boot] USB: XHCI xhci bulk ring code is wrong in xhci_bulk_tx()

Aaron Williams awilliams at marvell.com
Wed Jul 10 08:05:41 UTC 2019


Hi all,

I am debugging a problem where sometimes our hardware (DW implementation) responds with a short TX event (13) during a bulk transfer when two TRBs are involved. In this case, a USB Ethernet driver is receiving data and the buffer address and size causes it to cross a 64K boundary. Due to this, two TRBs are needed to handle the request.

What I am seeing is that two event responses are generated. The first event points to the first TRB with a short packet completion code indicating that only 16 bytes have transferred. The second event indicates that all of the data was successfully transferred (completion code = 1).

The problem I am seeing is that the code only checks for a single event response. In this case it only processes the short packet response and sets the status to 0 and it ignores the second event.

What it should do is if it sees a short tx event it should continue checking events.

Any comments on this?

-Aaron


More information about the U-Boot mailing list