stlink_usb: Submit multiple USB URBs at once to improve performance
commit42d8fa899c6a6f136daa761e7718003f08f723e7
authorAustin Phillips <austin_phillips@hotmail.com>
Sat, 7 Apr 2018 06:06:03 +0000 (7 16:06 +1000)
committerTomas Vanek <vanekt@fbl.cz>
Tue, 8 Jan 2019 10:05:36 +0000 (8 10:05 +0000)
tree9c2d641e5212ccef6a42248b618588749e1d4138
parent3792f3c114ee22eabe202427e948053828ca28a5
stlink_usb: Submit multiple USB URBs at once to improve performance

Commands to stlink devices are typically comprised of multiple
transactions with each transaction completing before moving to the next.
This change allows for multiple USB transactions to be issued at once
followed by a check that all transactions completed successfully.  This
improves performance on some machines where there is a large turn-around
time between USB transfers such as is seen on some virtual machines.

This change is only supported when compiled with libusb1 as libusb1
supports and asynchronous interface.

Multi-transaction queueing introduced in this change paves the way for
improving speed of other transactions in the future such as memory and
register reads where multiple USB transactions in succession are
required to complete a command.  Multiple USB transactions can be
submitted at once using jtag_libusb_bulk_transfer_n function.

Change-Id: I924e049217a789ef445b14e00aa1983576970fbf
Signed-off-by: Austin Phillips <austin_phillips@hotmail.com>
Reviewed-on: http://openocd.zylin.com/4484
Tested-by: jenkins
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
src/jtag/drivers/stlink_usb.c