From owner-p4-projects@FreeBSD.ORG Tue May 3 16:20:52 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7452516A4D0; Tue, 3 May 2005 16:20:52 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 24D6916A4CF for ; Tue, 3 May 2005 16:20:52 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DFEB343D66 for ; Tue, 3 May 2005 16:20:51 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j43GKnqc052675 for ; Tue, 3 May 2005 16:20:49 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j43GKmYK052672 for perforce@freebsd.org; Tue, 3 May 2005 16:20:48 GMT (envelope-from sam@freebsd.org) Date: Tue, 3 May 2005 16:20:48 GMT Message-Id: <200505031620.j43GKmYK052672@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 76436 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 May 2005 16:20:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=76436 Change 76436 by sam@sam_ebb on 2005/05/03 16:20:33 use a private taskqueue Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#84 edit .. //depot/projects/wifi/sys/dev/ath/if_athvar.h#34 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#84 (text+ko) ==== @@ -60,6 +60,8 @@ #include #include #include +#include +#include #include @@ -367,6 +369,10 @@ ATH_TXBUF_LOCK_INIT(sc); + sc->sc_tq = taskqueue_create("ath_taskq", M_NOWAIT, + taskqueue_thread_enqueue, &sc->sc_tq, &sc->sc_tqproc); + kthread_create(taskqueue_thread_loop, &sc->sc_tq, &sc->sc_tqproc, + 0, 0, "%s taskq", ifp->if_xname); TASK_INIT(&sc->sc_rxtask, 0, ath_rx_proc, sc); TASK_INIT(&sc->sc_rxorntask, 0, ath_rxorn_proc, sc); TASK_INIT(&sc->sc_fataltask, 0, ath_fatal_proc, sc); @@ -624,6 +630,7 @@ * Other than that, it's straightforward... */ ieee80211_ifdetach(&sc->sc_ic); + taskqueue_free(sc->sc_tq); ath_rate_detach(sc->sc_rc); ath_desc_free(sc); ath_tx_cleanup(sc); @@ -715,11 +722,11 @@ */ sc->sc_stats.ast_hardware++; ath_hal_intrset(ah, 0); /* disable intr's until reset */ - taskqueue_enqueue(taskqueue_swi, &sc->sc_fataltask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_fataltask); } else if (status & HAL_INT_RXORN) { sc->sc_stats.ast_rxorn++; ath_hal_intrset(ah, 0); /* disable intr's until reset */ - taskqueue_enqueue(taskqueue_swi, &sc->sc_rxorntask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_rxorntask); } else { if (status & HAL_INT_SWBA) { /* @@ -745,12 +752,12 @@ ath_hal_updatetxtriglevel(ah, AH_TRUE); } if (status & HAL_INT_RX) - taskqueue_enqueue(taskqueue_swi, &sc->sc_rxtask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_rxtask); if (status & HAL_INT_TX) - taskqueue_enqueue(taskqueue_swi, &sc->sc_txtask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_txtask); if (status & HAL_INT_BMISS) { sc->sc_stats.ast_bmiss++; - taskqueue_enqueue(taskqueue_swi, &sc->sc_bmisstask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_bmisstask); } if (status & HAL_INT_MIB) { sc->sc_stats.ast_mib++; @@ -2225,7 +2232,7 @@ "%s: missed %u consecutive beacons\n", __func__, sc->sc_bmisscount); if (sc->sc_bmisscount > 3) /* NB: 3 is a guess */ - taskqueue_enqueue(taskqueue_swi, &sc->sc_bstucktask); + taskqueue_enqueue(sc->sc_tq, &sc->sc_bstucktask); return; } if (sc->sc_bmisscount != 0) { ==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#34 (text+ko) ==== @@ -42,8 +42,6 @@ #ifndef _DEV_ATH_ATHVAR_H #define _DEV_ATH_ATHVAR_H -#include - #include #include #include @@ -61,6 +59,8 @@ #define ATH_FF_TXQMAX 50 /* maximum # of queued frames allowed */ #define ATH_FF_STAGEMAX 5 /* max waiting period for staged frame*/ +struct taskqueue; +struct kthread; struct ath_buf; /* driver-specific node state */ @@ -193,6 +193,8 @@ bus_space_handle_t sc_sh; /* bus space handle */ bus_dma_tag_t sc_dmat; /* bus DMA tag */ struct mtx sc_mtx; /* master lock (recursive) */ + struct taskqueue *sc_tq; /* private task queue */ + struct proc *sc_tqproc; /* thread handling sc_tq */ struct ath_hal *sc_ah; /* Atheros HAL */ struct ath_ratectrl *sc_rc; /* tx rate control support */ void (*sc_setdefantenna)(struct ath_softc *, u_int);