usb: ci_udc: don't assume QTDs are adjacent when transmitting ZLPs
Fix ci_ep_submit_next_request()'s ZLP transmission code to explicitly call ci_get_qtd() to find the address of the other QTD to use. This will allow us to correctly align each QTD individually in the future, which may involve leaving a gap between the QTDs. Signed-off-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
d7beeb9358
commit
8d7c39d3e8
@ -404,10 +404,11 @@ static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
|
||||
* only 1 is used at a time since either an IN or an OUT but
|
||||
* not both is queued. For an IN transaction, item currently
|
||||
* points at the second of these items, so we know that we
|
||||
* can use (item - 1) to transmit the extra zero-length packet
|
||||
* can use the other to transmit the extra zero-length packet.
|
||||
*/
|
||||
item->next = (unsigned)(item - 1);
|
||||
item--;
|
||||
struct ept_queue_item *other_item = ci_get_qtd(num, 0);
|
||||
item->next = (unsigned)other_item;
|
||||
item = other_item;
|
||||
item->info = INFO_ACTIVE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user