aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2019-12-27 20:29:13 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2019-12-27 20:29:13 +0000
commit7082625d976f0ad1b4207a12afe3c72e2acd9145 (patch)
tree3202c5f04ea10db5c6154719155c9975e7a10ba1
parent12fe21a3d808b74ef98e69d9ed0d9d7eee942a63 (diff)
downloadsrc-7082625d976f0ad1b4207a12afe3c72e2acd9145.tar.gz
src-7082625d976f0ad1b4207a12afe3c72e2acd9145.zip
Make USB statistics per device instead of per bus.
Bump the FreeBSD version due to structure change to force recompilation of external USB modules. MFC after: 1 week Sponsored by: Mellanox Technologies
Notes
Notes: svn path=/head/; revision=356135
-rw-r--r--sys/dev/usb/usb_bus.h11
-rw-r--r--sys/dev/usb/usb_device.h13
-rw-r--r--sys/dev/usb/usb_generic.c5
-rw-r--r--sys/dev/usb/usb_transfer.c4
-rw-r--r--sys/sys/param.h2
5 files changed, 18 insertions, 17 deletions
diff --git a/sys/dev/usb/usb_bus.h b/sys/dev/usb/usb_bus.h
index 9f8586e6e9b2..07784dedb839 100644
--- a/sys/dev/usb/usb_bus.h
+++ b/sys/dev/usb/usb_bus.h
@@ -2,7 +2,7 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2008-2019 Hans Petter Selasky. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -42,19 +42,10 @@ struct usb_bus_msg {
};
/*
- * The following structure defines the USB statistics structure.
- */
-struct usb_bus_stat {
- uint32_t uds_requests[4];
-};
-
-/*
* The following structure defines an USB BUS. There is one USB BUS
* for every Host or Device controller.
*/
struct usb_bus {
- struct usb_bus_stat stats_err;
- struct usb_bus_stat stats_ok;
#if USB_HAVE_ROOT_MOUNT_HOLD
struct root_hold_token *bus_roothold;
#endif
diff --git a/sys/dev/usb/usb_device.h b/sys/dev/usb/usb_device.h
index 1cf48ea14a3a..96f75cd832dc 100644
--- a/sys/dev/usb/usb_device.h
+++ b/sys/dev/usb/usb_device.h
@@ -2,7 +2,7 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
- * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
+ * Copyright (c) 2008-2019 Hans Petter Selasky. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -177,10 +177,21 @@ union usb_device_scratch {
};
/*
+ * Helper structure to keep track of USB device statistics.
+ */
+struct usb_device_statistics {
+ uint32_t uds_requests[4];
+};
+
+/*
* The following structure defines an USB device. There exists one of
* these structures for every USB device.
*/
struct usb_device {
+ /* statistics */
+ struct usb_device_statistics stats_err;
+ struct usb_device_statistics stats_ok;
+
/* generic clear stall message */
struct usb_udev_msg cs_msg[2];
struct sx enum_sx;
diff --git a/sys/dev/usb/usb_generic.c b/sys/dev/usb/usb_generic.c
index 2b5120279b38..b1222276caa2 100644
--- a/sys/dev/usb/usb_generic.c
+++ b/sys/dev/usb/usb_generic.c
@@ -2223,10 +2223,9 @@ ugen_ioctl_post(struct usb_fifo *f, u_long cmd, void *addr, int fflags)
for (n = 0; n != 4; n++) {
u.stat->uds_requests_fail[n] =
- f->udev->bus->stats_err.uds_requests[n];
-
+ f->udev->stats_err.uds_requests[n];
u.stat->uds_requests_ok[n] =
- f->udev->bus->stats_ok.uds_requests[n];
+ f->udev->stats_ok.uds_requests[n];
}
break;
diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c
index da3d911563a6..a64a4059e5cb 100644
--- a/sys/dev/usb/usb_transfer.c
+++ b/sys/dev/usb/usb_transfer.c
@@ -2594,10 +2594,10 @@ usbd_transfer_done(struct usb_xfer *xfer, usb_error_t error)
#endif
/* keep some statistics */
if (xfer->error) {
- info->bus->stats_err.uds_requests
+ info->udev->stats_err.uds_requests
[xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++;
} else {
- info->bus->stats_ok.uds_requests
+ info->udev->stats_ok.uds_requests
[xfer->endpoint->edesc->bmAttributes & UE_XFERTYPE]++;
}
diff --git a/sys/sys/param.h b/sys/sys/param.h
index e086f314b72f..964c1869eb0e 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -60,7 +60,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1300070 /* Master, propagated to newvers */
+#define __FreeBSD_version 1300071 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,