Various transfer improvements/fixes.
authormpi <mpi@openbsd.org>
Sun, 21 Dec 2014 11:46:53 +0000 (11:46 +0000)
committermpi <mpi@openbsd.org>
Sun, 21 Dec 2014 11:46:53 +0000 (11:46 +0000)
commit906892b81799bfa459a029aa70fe2a04f0e0cb11
treed2a958a684ddfa02b165510fb54b6a753d394518
parent6469c75e8f2f91844513967c8c371820829c241a
Various transfer improvements/fixes.

Chain TRBs when submitting bulk or interrupt transfers with a length
bigger than the Maxium Packet Size of the endpoint.

Append a supplementary TRB if a zero length packet is required.

While here, set the flags of each TRB at once.  Even if this driver
implementation fills the first TRB of a chain last, be safe and make
sure the hardware wont miss any flag.

Note that with this change, DMA sync operations might not cover the
whole chain, just like for control transfers, if the ring is starting
over.

Previous version of this diff tested by Peter N. M. Hansteen, thanks!
sys/dev/usb/xhci.c