Module Name:    src
Committed By:   skrll
Date:           Sat Jan 28 12:04:17 UTC 2017

Modified Files:
        src/sys/dev/usb [nick-nhusb]: TODO.usbmp if_urtwn.c if_urtwnvar.h

Log Message:
Remove tsleep(9) and wakeup(9) from urtwn(4)


To generate a diff of this commit:
cvs rdiff -u -r1.8.4.9 -r1.8.4.10 src/sys/dev/usb/TODO.usbmp
cvs rdiff -u -r1.34.4.15 -r1.34.4.16 src/sys/dev/usb/if_urtwn.c
cvs rdiff -u -r1.8.4.4 -r1.8.4.5 src/sys/dev/usb/if_urtwnvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/TODO.usbmp
diff -u src/sys/dev/usb/TODO.usbmp:1.8.4.9 src/sys/dev/usb/TODO.usbmp:1.8.4.10
--- src/sys/dev/usb/TODO.usbmp:1.8.4.9	Sat Jan 28 10:15:01 2017
+++ src/sys/dev/usb/TODO.usbmp	Sat Jan 28 12:04:17 2017
@@ -1,4 +1,4 @@
-$NetBSD: TODO.usbmp,v 1.8.4.9 2017/01/28 10:15:01 skrll Exp $
+$NetBSD: TODO.usbmp,v 1.8.4.10 2017/01/28 12:04:17 skrll Exp $
 
 
 the majority of the USB MP device interface is documented in usbdivar.h.
@@ -97,7 +97,6 @@ splusb drivers:
 
 wakeup/tsleep drivers:
   - if_run.c
-  - if_urtwn.c
   - if_zyd.c
   - ucycom.c
   - udsir.c

Index: src/sys/dev/usb/if_urtwn.c
diff -u src/sys/dev/usb/if_urtwn.c:1.34.4.15 src/sys/dev/usb/if_urtwn.c:1.34.4.16
--- src/sys/dev/usb/if_urtwn.c:1.34.4.15	Mon Dec  5 10:55:18 2016
+++ src/sys/dev/usb/if_urtwn.c	Sat Jan 28 12:04:17 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_urtwn.c,v 1.34.4.15 2016/12/05 10:55:18 skrll Exp $	*/
+/*	$NetBSD: if_urtwn.c,v 1.34.4.16 2017/01/28 12:04:17 skrll Exp $	*/
 /*	$OpenBSD: if_urtwn.c,v 1.42 2015/02/10 23:25:46 mpi Exp $	*/
 
 /*-
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.34.4.15 2016/12/05 10:55:18 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.34.4.16 2017/01/28 12:04:17 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -372,6 +372,7 @@ urtwn_attach(device_t parent, device_t s
 
 	(void) usbd_do_request(sc->sc_udev, &req, 0);
 
+	cv_init(&sc->sc_task_cv, "urtwntsk");
 	mutex_init(&sc->sc_task_mtx, MUTEX_DEFAULT, IPL_NET);
 	mutex_init(&sc->sc_tx_mtx, MUTEX_DEFAULT, IPL_NONE);
 	mutex_init(&sc->sc_rx_mtx, MUTEX_DEFAULT, IPL_NONE);
@@ -559,6 +560,7 @@ urtwn_detach(device_t self, int flags)
 	callout_destroy(&sc->sc_scan_to);
 	callout_destroy(&sc->sc_calib_to);
 
+	cv_destroy(&sc->sc_task_cv);
 	mutex_destroy(&sc->sc_write_mtx);
 	mutex_destroy(&sc->sc_fwcmd_mtx);
 	mutex_destroy(&sc->sc_tx_mtx);
@@ -823,8 +825,8 @@ urtwn_task(void *arg)
 		ring->queued--;
 		ring->next = (ring->next + 1) % URTWN_HOST_CMD_RING_COUNT;
 	}
+	cv_broadcast(&sc->sc_task_cv);
 	mutex_spin_exit(&sc->sc_task_mtx);
-	wakeup(&sc->cmdq);
 	splx(s);
 }
 
@@ -863,8 +865,10 @@ urtwn_wait_async(struct urtwn_softc *sc)
 	DPRINTFN(DBG_FN, ("%s: %s\n", device_xname(sc->sc_dev), __func__));
 
 	/* Wait for all queued asynchronous commands to complete. */
+	mutex_spin_enter(&sc->sc_task_mtx);
 	while (sc->cmdq.queued > 0)
-		tsleep(&sc->cmdq, 0, "endtask", 0);
+		cv_wait(&sc->sc_task_cv, &sc->sc_task_mtx);
+	mutex_spin_exit(&sc->sc_task_mtx);
 }
 
 static int

Index: src/sys/dev/usb/if_urtwnvar.h
diff -u src/sys/dev/usb/if_urtwnvar.h:1.8.4.4 src/sys/dev/usb/if_urtwnvar.h:1.8.4.5
--- src/sys/dev/usb/if_urtwnvar.h:1.8.4.4	Mon Dec  5 10:55:18 2016
+++ src/sys/dev/usb/if_urtwnvar.h	Sat Jan 28 12:04:17 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_urtwnvar.h,v 1.8.4.4 2016/12/05 10:55:18 skrll Exp $	*/
+/*	$NetBSD: if_urtwnvar.h,v 1.8.4.5 2017/01/28 12:04:17 skrll Exp $	*/
 /*	$OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $	*/
 
 /*-
@@ -128,6 +128,7 @@ struct urtwn_softc {
 	callout_t			sc_scan_to;
 	callout_t			sc_calib_to;
 
+	kcondvar_t			sc_task_cv;
 	kmutex_t			sc_task_mtx;
 	kmutex_t			sc_fwcmd_mtx;
 	kmutex_t			sc_tx_mtx;

Reply via email to