usb(4): Make the enumeration thread nice time a variable.

Depends on "options USB_DEBUG".

Suggested by:	koobs@
MFC after:	1 week
Sponsored by:	NVIDIA Networking
This commit is contained in:
Hans Petter Selasky 2022-10-07 13:28:38 +02:00
parent 1c2be25f60
commit 8758aabb16
4 changed files with 10 additions and 2 deletions

View File

@ -416,7 +416,7 @@ usb_bus_explore(struct usb_proc_msg *pm)
#endif
/* Nice the enumeration a bit, to avoid looping too fast. */
usb_pause_mtx(&bus->bus_mtx, USB_MS_TO_TICKS(16));
usb_pause_mtx(&bus->bus_mtx, USB_MS_TO_TICKS(usb_enum_nice_time));
}
/*------------------------------------------------------------------------*

View File

@ -123,6 +123,7 @@ MALLOC_DECLARE(M_USBDEV);
#define USB_RESUME_WAIT 50 /* ms */
#define USB_RESUME_RECOVERY 50 /* ms */
#define USB_EXTRA_POWER_UP_TIME 20 /* ms */
#define USB_ENUM_NICE_TIME 16 /* ms */
#define USB_MIN_POWER 100 /* mA */
#define USB_MAX_POWER 500 /* mA */

View File

@ -2,7 +2,7 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
* Copyright (c) 2008-2022 Hans Petter Selasky
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@ -123,6 +123,10 @@ SYSCTL_PROC(_hw_usb_timings, OID_AUTO, extra_power_up_time,
CTLTYPE_UINT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, &usb_extra_power_up_time,
sizeof(usb_extra_power_up_time), usb_timings_sysctl_handler, "IU",
"Extra PowerUp Time");
SYSCTL_PROC(_hw_usb_timings, OID_AUTO, enum_nice_time,
CTLTYPE_UINT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, &usb_enum_nice_time,
sizeof(usb_enum_nice_time), usb_timings_sysctl_handler, "IU",
"Enumeration thread nice time");
#endif
/*------------------------------------------------------------------------*
@ -245,6 +249,7 @@ unsigned int usb_resume_delay = USB_RESUME_DELAY;
unsigned int usb_resume_wait = USB_RESUME_WAIT;
unsigned int usb_resume_recovery = USB_RESUME_RECOVERY;
unsigned int usb_extra_power_up_time = USB_EXTRA_POWER_UP_TIME;
unsigned int usb_enum_nice_time = USB_ENUM_NICE_TIME;
/*------------------------------------------------------------------------*
* usb_timings_sysctl_handler

View File

@ -74,6 +74,7 @@ extern unsigned int usb_resume_delay;
extern unsigned int usb_resume_wait;
extern unsigned int usb_resume_recovery;
extern unsigned int usb_extra_power_up_time;
extern unsigned int usb_enum_nice_time;
#else
#define usb_port_reset_delay USB_PORT_RESET_DELAY
#define usb_port_root_reset_delay USB_PORT_ROOT_RESET_DELAY
@ -85,6 +86,7 @@ extern unsigned int usb_extra_power_up_time;
#define usb_resume_wait USB_RESUME_WAIT
#define usb_resume_recovery USB_RESUME_RECOVERY
#define usb_extra_power_up_time USB_EXTRA_POWER_UP_TIME
#define usb_enum_nice_time USB_ENUM_NICE_TIME
#endif
#endif /* _USB_DEBUG_H_ */