From owner-svn-src-head@FreeBSD.ORG Tue Dec 23 19:59:22 2008 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B7051065678; Tue, 23 Dec 2008 19:59:22 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 868638FC25; Tue, 23 Dec 2008 19:59:22 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mBNJxMf8012072; Tue, 23 Dec 2008 19:59:22 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mBNJxLTL012053; Tue, 23 Dec 2008 19:59:21 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <200812231959.mBNJxLTL012053@svn.freebsd.org> From: Andrew Thompson Date: Tue, 23 Dec 2008 19:59:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186454 - in head/sys/dev/usb2: controller core ethernet input serial wlan X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Dec 2008 19:59:22 -0000 Author: thompsa Date: Tue Dec 23 19:59:21 2008 New Revision: 186454 URL: http://svn.freebsd.org/changeset/base/186454 Log: Remove CALLOUT_RETURNUNLOCKED from the callouts, there is no reason for them to drop the lock for us. Modified: head/sys/dev/usb2/controller/at91dci.c head/sys/dev/usb2/controller/ehci2.c head/sys/dev/usb2/controller/musb2_otg.c head/sys/dev/usb2/controller/ohci2.c head/sys/dev/usb2/controller/uhci2.c head/sys/dev/usb2/controller/uss820dci.c head/sys/dev/usb2/core/usb2_transfer.c head/sys/dev/usb2/ethernet/if_aue2.c head/sys/dev/usb2/ethernet/if_axe2.c head/sys/dev/usb2/ethernet/if_cue2.c head/sys/dev/usb2/ethernet/if_kue2.c head/sys/dev/usb2/ethernet/if_rue2.c head/sys/dev/usb2/ethernet/if_udav2.c head/sys/dev/usb2/input/ukbd2.c head/sys/dev/usb2/input/ums2.c head/sys/dev/usb2/serial/ulpt2.c head/sys/dev/usb2/wlan/if_rum2.c head/sys/dev/usb2/wlan/if_ural2.c head/sys/dev/usb2/wlan/if_zyd2.c Modified: head/sys/dev/usb2/controller/at91dci.c ============================================================================== --- head/sys/dev/usb2/controller/at91dci.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/at91dci.c Tue Dec 23 19:59:21 2008 (r186454) @@ -1043,16 +1043,13 @@ static void at91dci_timeout(void *arg) { struct usb2_xfer *xfer = arg; - struct at91dci_softc *sc = xfer->usb2_sc; DPRINTF("xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ at91dci_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void Modified: head/sys/dev/usb2/controller/ehci2.c ============================================================================== --- head/sys/dev/usb2/controller/ehci2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/ehci2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -213,8 +213,7 @@ ehci_init(ehci_softc_t *sc) DPRINTF("start\n"); - usb2_callout_init_mtx(&sc->sc_tmo_pcd, &sc->sc_bus.bus_mtx, - CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_tmo_pcd, &sc->sc_bus.bus_mtx, 0); #if USB_DEBUG if (ehcidebug > 2) { @@ -1411,8 +1410,6 @@ ehci_pcd_enable(ehci_softc_t *sc) usb2_sw_transfer(&sc->sc_root_intr, &ehci_root_intr_done); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void @@ -1511,16 +1508,13 @@ static void ehci_timeout(void *arg) { struct usb2_xfer *xfer = arg; - ehci_softc_t *sc = xfer->usb2_sc; DPRINTF("xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ ehci_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void Modified: head/sys/dev/usb2/controller/musb2_otg.c ============================================================================== --- head/sys/dev/usb2/controller/musb2_otg.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/musb2_otg.c Tue Dec 23 19:59:21 2008 (r186454) @@ -1252,16 +1252,13 @@ static void musbotg_timeout(void *arg) { struct usb2_xfer *xfer = arg; - struct musbotg_softc *sc = xfer->usb2_sc; DPRINTFN(1, "xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ musbotg_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void Modified: head/sys/dev/usb2/controller/ohci2.c ============================================================================== --- head/sys/dev/usb2/controller/ohci2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/ohci2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -390,8 +390,7 @@ ohci_init(ohci_softc_t *sc) /* set up the bus struct */ sc->sc_bus.methods = &ohci_bus_methods; - usb2_callout_init_mtx(&sc->sc_tmo_rhsc, &sc->sc_bus.bus_mtx, - CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_tmo_rhsc, &sc->sc_bus.bus_mtx, 0); #if USB_DEBUG if (ohcidebug > 15) { @@ -1095,8 +1094,6 @@ ohci_rhsc_enable(ohci_softc_t *sc) usb2_sw_transfer(&sc->sc_root_intr, &ohci_root_intr_done); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void @@ -1240,16 +1237,13 @@ static void ohci_timeout(void *arg) { struct usb2_xfer *xfer = arg; - ohci_softc_t *sc = xfer->usb2_sc; DPRINTF("xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ ohci_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void @@ -2335,10 +2329,8 @@ ohci_root_ctrl_done(struct usb2_xfer *xf case UHF_C_PORT_OVER_CURRENT: case UHF_C_PORT_RESET: /* enable RHSC interrupt if condition is cleared. */ - if ((OREAD4(sc, port) >> 16) == 0) { + if ((OREAD4(sc, port) >> 16) == 0) ohci_rhsc_enable(sc); - USB_BUS_LOCK(&sc->sc_bus); - } break; default: break; Modified: head/sys/dev/usb2/controller/uhci2.c ============================================================================== --- head/sys/dev/usb2/controller/uhci2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/uhci2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -1494,16 +1494,13 @@ static void uhci_timeout(void *arg) { struct usb2_xfer *xfer = arg; - uhci_softc_t *sc = xfer->usb2_sc; DPRINTF("xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ uhci_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void @@ -2912,7 +2909,6 @@ uhci_root_intr_check(void *arg) usb2_sw_transfer(&sc->sc_root_intr, &uhci_root_intr_done); } - USB_BUS_UNLOCK(&sc->sc_bus); } struct usb2_pipe_methods uhci_root_intr_methods = Modified: head/sys/dev/usb2/controller/uss820dci.c ============================================================================== --- head/sys/dev/usb2/controller/uss820dci.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/controller/uss820dci.c Tue Dec 23 19:59:21 2008 (r186454) @@ -973,16 +973,13 @@ static void uss820dci_timeout(void *arg) { struct usb2_xfer *xfer = arg; - struct uss820dci_softc *sc = xfer->usb2_sc; DPRINTF("xfer=%p\n", xfer); - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + USB_BUS_LOCK_ASSERT(xfer->udev->bus, MA_OWNED); /* transfer is transferred */ uss820dci_device_done(xfer, USB_ERR_TIMEOUT); - - USB_BUS_UNLOCK(&sc->sc_bus); } static void Modified: head/sys/dev/usb2/core/usb2_transfer.c ============================================================================== --- head/sys/dev/usb2/core/usb2_transfer.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/core/usb2_transfer.c Tue Dec 23 19:59:21 2008 (r186454) @@ -880,7 +880,7 @@ usb2_transfer_setup(struct usb2_device * info->setup_refcount++; usb2_callout_init_mtx(&xfer->timeout_handle, - &udev->bus->bus_mtx, CALLOUT_RETURNUNLOCKED); + &udev->bus->bus_mtx, 0); } else { /* * Setup a dummy xfer, hence we are @@ -1950,8 +1950,6 @@ usb2_dma_delay_done_cb(void *arg) /* queue callback for execution, again */ usb2_transfer_done(xfer, 0); - - USB_BUS_UNLOCK(xfer->udev->bus); } /*------------------------------------------------------------------------* @@ -2092,7 +2090,6 @@ usb2_transfer_start_cb(void *arg) } else { xfer->flags_int.can_cancel_immed = 0; } - USB_BUS_UNLOCK(xfer->udev->bus); } /*------------------------------------------------------------------------* @@ -2707,14 +2704,9 @@ usb2_callout_poll(struct usb2_xfer *xfer usb2_callout_stop(co); (cb) (arg); - - /* the callback should drop the mutex */ - } else { - mtx_unlock(mtx); } - } else { - mtx_unlock(mtx); } + mtx_unlock(mtx); } Modified: head/sys/dev/usb2/ethernet/if_aue2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_aue2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_aue2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -770,8 +770,7 @@ aue_attach(device_t dev) mtx_init(&sc->sc_mtx, "aue lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = AUE_IFACE_IDX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -798,10 +797,8 @@ aue_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &aue_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - aue_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1475,8 +1472,6 @@ aue_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &aue_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /* Modified: head/sys/dev/usb2/ethernet/if_axe2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_axe2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_axe2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -597,8 +597,7 @@ axe_attach(device_t dev) mtx_init(&sc->sc_mtx, "axe lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = AXE_IFACE_IDX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -625,10 +624,8 @@ axe_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &axe_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - axe_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1423,8 +1420,6 @@ axe_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &axe_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /* Modified: head/sys/dev/usb2/ethernet/if_cue2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_cue2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_cue2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -408,8 +408,7 @@ cue_attach(device_t dev) mtx_init(&sc->sc_mtx, "cue lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = CUE_IFACE_IDX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -433,10 +432,8 @@ cue_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &cue_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - cue_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -879,8 +876,6 @@ cue_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &cue_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /* Modified: head/sys/dev/usb2/ethernet/if_kue2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_kue2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_kue2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -470,8 +470,7 @@ kue_attach(device_t dev) mtx_init(&sc->sc_mtx, "kue lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = KUE_IFACE_IDX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -495,10 +494,8 @@ kue_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &kue_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - kue_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -935,8 +932,6 @@ kue_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &kue_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } static void Modified: head/sys/dev/usb2/ethernet/if_rue2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_rue2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_rue2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -651,8 +651,7 @@ rue_attach(device_t dev) mtx_init(&sc->sc_mtx, "rue lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = RUE_IFACE_IDX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -679,10 +678,8 @@ rue_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &rue_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - rue_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1299,8 +1296,6 @@ rue_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &rue_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /* Modified: head/sys/dev/usb2/ethernet/if_udav2.c ============================================================================== --- head/sys/dev/usb2/ethernet/if_udav2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/ethernet/if_udav2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -282,8 +282,7 @@ udav_attach(device_t dev) mtx_init(&sc->sc_mtx, "udav lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = UDAV_IFACE_INDEX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -309,10 +308,8 @@ udav_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &udav_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - udav_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1080,8 +1077,6 @@ udav_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &udav_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /* Modified: head/sys/dev/usb2/input/ukbd2.c ============================================================================== --- head/sys/dev/usb2/input/ukbd2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/input/ukbd2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -445,8 +445,6 @@ ukbd_timeout(void *arg) ukbd_interrupt(sc); usb2_callout_reset(&sc->sc_callout, hz / 40, &ukbd_timeout, sc); - - mtx_unlock(&Giant); } static void @@ -639,8 +637,7 @@ ukbd_attach(device_t dev) sc->sc_mode = K_XLATE; sc->sc_iface = uaa->iface; - usb2_callout_init_mtx(&sc->sc_callout, &Giant, - CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_callout, &Giant, 0); err = usb2_transfer_setup(uaa->device, &uaa->info.bIfaceIndex, sc->sc_xfer, ukbd_config, @@ -705,8 +702,8 @@ ukbd_attach(device_t dev) /* start the timer */ - ukbd_timeout(sc); /* will unlock mutex */ - + ukbd_timeout(sc); + mtx_unlock(&Giant); return (0); /* success */ detach: Modified: head/sys/dev/usb2/input/ums2.c ============================================================================== --- head/sys/dev/usb2/input/ums2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/input/ums2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -153,8 +153,6 @@ ums_put_queue_timeout(void *__sc) mtx_assert(&sc->sc_mtx, MA_OWNED); ums_put_queue(sc, 0, 0, 0, 0, 0); - - mtx_unlock(&sc->sc_mtx); } static void @@ -415,8 +413,7 @@ ums_attach(device_t dev) mtx_init(&sc->sc_mtx, "ums lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_callout, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_callout, &sc->sc_mtx, 0); /* * Force the report (non-boot) protocol. Modified: head/sys/dev/usb2/serial/ulpt2.c ============================================================================== --- head/sys/dev/usb2/serial/ulpt2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/serial/ulpt2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -560,8 +560,7 @@ ulpt_attach(device_t dev) mtx_init(&sc->sc_mtx, "ulpt lock", NULL, MTX_DEF | MTX_RECURSE); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); /* search through all the descriptors looking for bidir mode */ @@ -671,9 +670,8 @@ found: /* start reading of status */ mtx_lock(&sc->sc_mtx); - - ulpt_watchdog(sc); /* will unlock mutex */ - + ulpt_watchdog(sc); + mtx_unlock(&sc->sc_mtx); return (0); detach: @@ -762,8 +760,6 @@ ulpt_watchdog(void *arg) usb2_callout_reset(&sc->sc_watchdog, hz, &ulpt_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } static devclass_t ulpt_devclass; Modified: head/sys/dev/usb2/wlan/if_rum2.c ============================================================================== --- head/sys/dev/usb2/wlan/if_rum2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/wlan/if_rum2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -475,8 +475,7 @@ rum_attach(device_t dev) sc->sc_udev = uaa->device; sc->sc_unit = device_get_unit(dev); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = RT2573_IFACE_INDEX; error = usb2_transfer_setup(uaa->device, &iface_index, @@ -501,10 +500,8 @@ rum_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &rum_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - rum_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1417,8 +1414,6 @@ rum_watchdog(void *arg) } usb2_callout_reset(&sc->sc_watchdog, hz, &rum_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } static void Modified: head/sys/dev/usb2/wlan/if_ural2.c ============================================================================== --- head/sys/dev/usb2/wlan/if_ural2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/wlan/if_ural2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -468,8 +468,7 @@ ural_attach(device_t dev) sc->sc_udev = uaa->device; sc->sc_unit = device_get_unit(dev); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); iface_index = RAL_IFACE_INDEX; error = usb2_transfer_setup(uaa->device, @@ -496,10 +495,8 @@ ural_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &ural_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - ural_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); /* success */ detach: @@ -1405,8 +1402,6 @@ ural_watchdog(void *arg) } usb2_callout_reset(&sc->sc_watchdog, hz, &ural_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } /*========================================================================* Modified: head/sys/dev/usb2/wlan/if_zyd2.c ============================================================================== --- head/sys/dev/usb2/wlan/if_zyd2.c Tue Dec 23 19:46:12 2008 (r186453) +++ head/sys/dev/usb2/wlan/if_zyd2.c Tue Dec 23 19:59:21 2008 (r186454) @@ -1080,8 +1080,7 @@ zyd_attach(device_t dev) usb2_cv_init(&sc->sc_intr_cv, "IWAIT"); - usb2_callout_init_mtx(&sc->sc_watchdog, - &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); + usb2_callout_init_mtx(&sc->sc_watchdog, &sc->sc_mtx, 0); /* * Endpoint 1 = Bulk out (512b @ high speed / 64b @ full speed) @@ -1111,10 +1110,8 @@ zyd_attach(device_t dev) usb2_config_td_queue_command (&sc->sc_config_td, NULL, &zyd_cfg_first_time_setup, 0, 0); - /* start watchdog (will exit mutex) */ - zyd_watchdog(sc); - + mtx_unlock(&sc->sc_mtx); return (0); detach: @@ -2761,8 +2758,6 @@ zyd_watchdog(void *arg) } usb2_callout_reset(&sc->sc_watchdog, hz, &zyd_watchdog, sc); - - mtx_unlock(&sc->sc_mtx); } static void