[xhci] Ensure that zero-length packets are not part of a TRB chain
authorMichael Brown <mcb30@ipxe.org>
Mon, 7 Dec 2015 22:30:27 +0000 (22:30 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 7 Dec 2015 22:40:47 +0000 (22:40 +0000)
commitee8388ec6950ea596ddb374dcc2abb940db70aea
tree5d479d9c4fad8f8ddd3fe18a23a30b0d24301d75
parentd6945925d8e68bf8e317131a4505e205ccc161a9
[xhci] Ensure that zero-length packets are not part of a TRB chain

Some xHCI controllers (such as qemu's emulated xHCI controller) do not
correctly handle zero-length packets that are part of a TRB chain.
The zero-length TRB ends up being squashed and does not result in a
zero-length packet as seen by the device.

Work around this problem by marking the zero-length packet as
belonging to a separate transfer descriptor.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/usb/xhci.c