commit | a45730f4339d5d6391757ee2d4c2f86b8411de5f | [log] [tgz] |
---|---|---|
author | Kenjiro Tsuji <kenjiro.tsuji@oracle.com> | Wed Sep 25 17:51:43 2019 -0700 |
committer | Nathan Hjelm <hjelmn@google.com> | Thu Sep 26 11:43:43 2019 -0600 |
tree | c273c8fcdb93bb80dcb6a08258a5b4b16c320d52 | |
parent | 906e706f8abdff626370e59b880f340cf54e3632 [diff] |
Solaris backend is not correctly setting the one transfer mode for Interrupt-In pipe In sunos_check_device_and_status_open() function, if the target is an Interrupt-In pipe, it opens the status endpoint first and writes USB_EP_INTR_ONE_XFER control to the status endpoint to enable the one transfer mode. And it then closes the status endpoint. After that, it opens the xfer endpoint and re-opens the status endpoint. This is not correct, because closing the status endpoint is implicitly disables the one tranfer mode. As a result, an event notification won't be delivered to the client in timely manner. According to the comment in the source, closing the status endpoint first and opening the xfer endpoint and status endpoint in this order is intentional to avoit an issue that may happen if the USB device has multiple configurations, which may be due to a ugen driver issue. To address both issues, it can open the xfer endpoint first and immediately close it, which will take care of the switch of configurations, if necessary. Then, it can open the status endpoint, enable the one transfer mode, and re-open the xfer endpoint. This is a fix of libusb#620. Closes #629 Signed-off-by: Nathan Hjelm <hjelmn@google.com>
libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD and Haiku userspace. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).
libusb is abstracted internally in such a way that it can hopefully be ported to other operating systems. Please see the PORTING file for more information.
libusb homepage: http://libusb.info/
Developers will wish to consult the API documentation: http://api.libusb.info
Use the mailing list for questions, comments, etc: http://mailing-list.libusb.info
(Please use the mailing list rather than mailing developers directly)