diff options
Diffstat (limited to 'usr/src/uts/common/io/usb/usba/hubdi.c')
-rw-r--r-- | usr/src/uts/common/io/usb/usba/hubdi.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/usr/src/uts/common/io/usb/usba/hubdi.c b/usr/src/uts/common/io/usb/usba/hubdi.c index a9cf1e714f..8a04aca273 100644 --- a/usr/src/uts/common/io/usb/usba/hubdi.c +++ b/usr/src/uts/common/io/usb/usba/hubdi.c @@ -4609,7 +4609,7 @@ hubd_reset_port(hubd_t *hubd, usb_port_t port) uint16_t status; uint16_t change; int i; - clock_t current_time; + clock_t delta; USB_DPRINTF_L4(DPRINT_MASK_PORT, hubd->h_log_handle, "hubd_reset_port: port=%d", port); @@ -4646,6 +4646,7 @@ hubd_reset_port(hubd_t *hubd, usb_port_t port) /* * wait for port status change event */ + delta = drv_usectohz(hubd_device_delay / 10); for (i = 0; i < hubd_retry_enumerate; i++) { /* * start polling ep1 for receiving notification on @@ -4657,12 +4658,9 @@ hubd_reset_port(hubd_t *hubd, usb_port_t port) * sleep a max of 100ms for reset completion * notification to be received */ - current_time = ddi_get_lbolt(); if (hubd->h_port_reset_wait & port_mask) { - rval = cv_timedwait(&hubd->h_cv_reset_port, - &hubd->h_mutex, - current_time + - drv_usectohz(hubd_device_delay / 10)); + rval = cv_reltimedwait(&hubd->h_cv_reset_port, + &hubd->h_mutex, delta, TR_CLOCK_TICK); if ((rval <= 0) && (hubd->h_port_reset_wait & port_mask)) { /* we got woken up because of a timeout */ @@ -8606,7 +8604,7 @@ usba_hubdi_decr_power_budget(dev_info_t *dip, usba_device_t *child_ud) static int hubd_wait_for_hotplug_exit(hubd_t *hubd) { - clock_t until = ddi_get_lbolt() + drv_usectohz(1000000); + clock_t until = drv_usectohz(1000000); int rval; ASSERT(mutex_owned(HUBD_MUTEX(hubd))); @@ -8614,8 +8612,8 @@ hubd_wait_for_hotplug_exit(hubd_t *hubd) if (hubd->h_hotplug_thread) { USB_DPRINTF_L3(DPRINT_MASK_HOTPLUG, hubd->h_log_handle, "waiting for hubd hotplug thread exit"); - rval = cv_timedwait(&hubd->h_cv_hotplug_dev, - &hubd->h_mutex, until); + rval = cv_reltimedwait(&hubd->h_cv_hotplug_dev, + &hubd->h_mutex, until, TR_CLOCK_TICK); if ((rval <= 0) && (hubd->h_hotplug_thread)) { |