svn commit: r303326 - head/sys/dev/iwm

Sean Bruno sbruno at FreeBSD.org
Mon Jul 25 23:44:46 UTC 2016


Author: sbruno
Date: Mon Jul 25 23:44:44 2016
New Revision: 303326
URL: https://svnweb.freebsd.org/changeset/base/303326

Log:
  iwm(4): switch to ieee80211_runtask()
  
  Submitted by:	Andiry Voskoboinyk (s3erios at gmail.com)
  MFC after:	2 weeks
  Differential Revision:	https://reviews.freebsd.org/D5054

Modified:
  head/sys/dev/iwm/if_iwm.c
  head/sys/dev/iwm/if_iwmvar.h

Modified: head/sys/dev/iwm/if_iwm.c
==============================================================================
--- head/sys/dev/iwm/if_iwm.c	Mon Jul 25 23:38:14 2016	(r303325)
+++ head/sys/dev/iwm/if_iwm.c	Mon Jul 25 23:44:44 2016	(r303326)
@@ -4092,6 +4092,7 @@ do {									\
 static void
 iwm_notif_intr(struct iwm_softc *sc)
 {
+	struct ieee80211com *ic = &sc->sc_ic;
 	uint16_t hw;
 
 	bus_dmamap_sync(sc->rxq.stat_dma.tag, sc->rxq.stat_dma.map,
@@ -4145,7 +4146,6 @@ iwm_notif_intr(struct iwm_softc *sc)
 			int missed;
 
 			/* XXX look at mac_id to determine interface ID */
-			struct ieee80211com *ic = &sc->sc_ic;
 			struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps);
 
 			SYNC_RESP_STRUCT(resp, pkt);
@@ -4253,7 +4253,7 @@ iwm_notif_intr(struct iwm_softc *sc)
 		case IWM_SCAN_COMPLETE_NOTIFICATION: {
 			struct iwm_scan_complete_notif *notif;
 			SYNC_RESP_STRUCT(notif, pkt);
-			taskqueue_enqueue(sc->sc_tq, &sc->sc_es_task);
+			ieee80211_runtask(ic, &sc->sc_es_task);
 			break; }
 
 		case IWM_REPLY_ERROR: {
@@ -4627,14 +4627,6 @@ iwm_attach(device_t dev)
 	callout_init_mtx(&sc->sc_watchdog_to, &sc->sc_mtx, 0);
 	callout_init_mtx(&sc->sc_led_blink_to, &sc->sc_mtx, 0);
 	TASK_INIT(&sc->sc_es_task, 0, iwm_endscan_cb, sc);
-	sc->sc_tq = taskqueue_create("iwm_taskq", M_WAITOK,
-            taskqueue_thread_enqueue, &sc->sc_tq);
-        error = taskqueue_start_threads(&sc->sc_tq, 1, 0, "iwm_taskq");
-        if (error != 0) {
-                device_printf(dev, "can't start threads, error %d\n",
-		    error);
-		goto fail;
-        }
 
 	/* PCI attach */
 	error = iwm_pci_attach(dev);
@@ -5015,10 +5007,8 @@ iwm_detach_local(struct iwm_softc *sc, i
 	device_t dev = sc->sc_dev;
 	int i;
 
-	if (sc->sc_tq) {
-		taskqueue_drain_all(sc->sc_tq);
-		taskqueue_free(sc->sc_tq);
-	}
+	ieee80211_draintask(&sc->sc_ic, &sc->sc_es_task);
+
 	callout_drain(&sc->sc_led_blink_to);
 	callout_drain(&sc->sc_watchdog_to);
 	iwm_stop_device(sc);

Modified: head/sys/dev/iwm/if_iwmvar.h
==============================================================================
--- head/sys/dev/iwm/if_iwmvar.h	Mon Jul 25 23:38:14 2016	(r303325)
+++ head/sys/dev/iwm/if_iwmvar.h	Mon Jul 25 23:44:44 2016	(r303326)
@@ -495,7 +495,6 @@ struct iwm_softc {
 	uint8_t			sc_cmd_resp[IWM_CMD_RESP_MAX];
 	int			sc_wantresp;
 
-	struct taskqueue	*sc_tq;
 	struct task		sc_es_task;
 
 	struct iwm_rx_phy_info	sc_last_phy_info;


More information about the svn-src-all mailing list