diff options
author | Chris Dickens <christopher.a.dickens@gmail.com> | 2020-01-13 14:07:31 -0800 |
---|---|---|
committer | Chris Dickens <christopher.a.dickens@gmail.com> | 2020-01-13 14:07:31 -0800 |
commit | dbd4991a2478ae57e39347bf8610e636554e4c1f (patch) | |
tree | 3ecb5e87d140be891a43600fab04e74db84c7cde | |
parent | 19e763e135f8ac6cd6206f3f800d2ad40ad72a54 (diff) | |
download | libusb-dbd4991a2478ae57e39347bf8610e636554e4c1f.tar.gz |
core: Fix libusb_get_max_iso_packet_size() for superspeed plus
The current logic fails to consider superspeed plus devices properly.
Fix this by checking for superspeed or greater instead of matching
against superspeed.
Closes #553
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r-- | libusb/core.c | 6 | ||||
-rw-r--r-- | libusb/version_nano.h | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libusb/core.c b/libusb/core.c index 0048dad..5c0a2e0 100644 --- a/libusb/core.c +++ b/libusb/core.c @@ -1121,8 +1121,8 @@ int API_EXPORTED libusb_get_max_iso_packet_size(libusb_device *dev, goto out; } - speed = libusb_get_device_speed( dev ); - if (speed == LIBUSB_SPEED_SUPER) { + speed = libusb_get_device_speed(dev); + if (speed >= LIBUSB_SPEED_SUPER) { r = libusb_get_ss_endpoint_companion_descriptor(dev->ctx, ep, &ss_ep_cmp); if (r == LIBUSB_SUCCESS) { r = ss_ep_cmp->wBytesPerInterval; @@ -1131,7 +1131,7 @@ int API_EXPORTED libusb_get_max_iso_packet_size(libusb_device *dev, } /* If the device isn't a SuperSpeed device or retrieving the SS endpoint didn't worked. */ - if (speed != LIBUSB_SPEED_SUPER || r < 0) { + if (speed < LIBUSB_SPEED_SUPER || r < 0) { val = ep->wMaxPacketSize; ep_type = (enum libusb_transfer_type) (ep->bmAttributes & 0x3); diff --git a/libusb/version_nano.h b/libusb/version_nano.h index 7ae99d1..57c2b1d 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 11425 +#define LIBUSB_NANO 11426 |