Reorder the calling of the completion callback and the transfer "done" method so that for non-repeat operations we have completely finished with the transfer by the time the callback is invoked. This makes it possible to recycle a transfer from within the callback routine for the same transfer. Previously this almost worked, but with OHCI controllers calling the "done" method after the callback would zero out some important fields needed by the recycled transfer. Only some usb peripheral drivers such as ucom appear to rely on the ability to reuse a transfer from its callback.
Reorder the calling of the completion callback and the transfer
"done" method so that for non-repeat operations we have completely
finished with the transfer by the time the callback is invoked.
This makes it possible to recycle a transfer from within the callback
routine for the same transfer. Previously this almost worked, but
with OHCI controllers calling the "done" method after the callback
would zero out some important fields needed by the recycled transfer.
Only some usb peripheral drivers such as ucom appear to rely on the
ability to reuse a transfer from its callback.

MFC after:	1 week

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase