aboutsummaryrefslogtreecommitdiff
path: root/lib/libusb/libusb20.c
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2019-12-27 20:35:12 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2019-12-27 20:35:12 +0000
commit34b0ca243f6272d998475afd019d3a9e175cd817 (patch)
treeec0a06b0ea9d1a4623486baeeea3db145ef414ff /lib/libusb/libusb20.c
parent7082625d976f0ad1b4207a12afe3c72e2acd9145 (diff)
downloadsrc-34b0ca243f6272d998475afd019d3a9e175cd817.tar.gz
src-34b0ca243f6272d998475afd019d3a9e175cd817.zip
Implement new libusb v2.0 API function, libusb20_dev_get_stats().
This function is useful when debugging USB device issues. MFC after: 1 week Sponsored by: Mellanox Technologies
Notes
Notes: svn path=/head/; revision=356136
Diffstat (limited to 'lib/libusb/libusb20.c')
-rw-r--r--lib/libusb/libusb20.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/libusb/libusb20.c b/lib/libusb/libusb20.c
index 255e7d5ed516..6c2bf721bea9 100644
--- a/lib/libusb/libusb20.c
+++ b/lib/libusb/libusb20.c
@@ -78,6 +78,7 @@ dummy_callback(struct libusb20_transfer *xfer)
#define dummy_set_power_mode (void *)dummy_int
#define dummy_get_power_mode (void *)dummy_int
#define dummy_get_power_usage (void *)dummy_int
+#define dummy_get_stats (void *)dummy_int
#define dummy_kernel_driver_active (void *)dummy_int
#define dummy_detach_kernel_driver (void *)dummy_int
#define dummy_do_request_sync (void *)dummy_int
@@ -1049,6 +1050,31 @@ libusb20_dev_get_speed(struct libusb20_device *pdev)
return (pdev->usb_speed);
}
+int
+libusb20_dev_get_stats(struct libusb20_device *pdev, struct libusb20_device_stats *pstats)
+{
+ uint8_t do_close;
+ int error;
+
+ if (!pdev->is_opened) {
+ error = libusb20_dev_open(pdev, 0);
+ if (error == 0) {
+ do_close = 1;
+ } else {
+ do_close = 0;
+ }
+ } else {
+ do_close = 0;
+ }
+
+ error = pdev->methods->get_stats(pdev, pstats);
+
+ if (do_close)
+ (void) libusb20_dev_close(pdev);
+
+ return (error);
+}
+
/* if this function returns an error, the device is gone */
int
libusb20_dev_process(struct libusb20_device *pdev)