From owner-svn-src-user@FreeBSD.ORG Wed Aug 3 09:21:53 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EAD7F106566C; Wed, 3 Aug 2011 09:21:52 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D0D908FC0A; Wed, 3 Aug 2011 09:21:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p739LqD4094958; Wed, 3 Aug 2011 09:21:52 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p739LqcF094956; Wed, 3 Aug 2011 09:21:52 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201108030921.p739LqcF094956@svn.freebsd.org> From: Adrian Chadd Date: Wed, 3 Aug 2011 09:21:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224629 - user/adrian/if_ath_tx/sys/dev/ath X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Aug 2011 09:21:53 -0000 Author: adrian Date: Wed Aug 3 09:21:52 2011 New Revision: 224629 URL: http://svn.freebsd.org/changeset/base/224629 Log: * Rename the tid schedule function, it doesn't schedule the node anymore, just that tid Fix a LOR that I introduced: * Remove the locking requirement for ath_tx_tid_free_pkts - it should only occur in one place - when the ieee80211_node is being freed (and thus the IEEE80211_NODE_LOCK is held.) There's still another LOR which needs sorting out. Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c ============================================================================== --- user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Wed Aug 3 08:55:50 2011 (r224628) +++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c Wed Aug 3 09:21:52 2011 (r224629) @@ -1402,7 +1402,7 @@ ath_tx_action_frame_override_queue(struc * The relevant hw txq lock should be held. */ static void -ath_tx_node_sched(struct ath_softc *sc, struct ath_node *an, int tid) +ath_tx_tid_sched(struct ath_softc *sc, struct ath_node *an, int tid) { struct ath_tid *atid = &an->an_tid[tid]; int ac = TID_TO_WME_AC(tid); @@ -1425,7 +1425,7 @@ ath_tx_node_sched(struct ath_softc *sc, * The relevant hw txq lock should be held. */ static void -ath_tx_node_unsched(struct ath_softc *sc, struct ath_node *an, int tid) +ath_tx_tid_unsched(struct ath_softc *sc, struct ath_node *an, int tid) { struct ath_tid *atid = &an->an_tid[tid]; int ac = TID_TO_WME_AC(tid); @@ -1502,7 +1502,7 @@ ath_tx_swq(struct ath_softc *sc, struct ATH_TXQ_INSERT_TAIL(atid, bf, bf_list); /* Mark the given tid as having packets to dequeue */ - ath_tx_node_sched(sc, an, tid); + ath_tx_tid_sched(sc, an, tid); } /* @@ -1569,7 +1569,7 @@ ath_tx_tid_resume(struct ath_softc *sc, if (tid->axq_depth == 0) return; - ath_tx_node_sched(sc, tid->an, tid->tid); + ath_tx_tid_sched(sc, tid->an, tid->tid); ath_txq_sched(sc, txq); } @@ -1604,10 +1604,6 @@ ath_tx_tid_free_pkts(struct ath_softc *s { struct ath_tid *atid = &an->an_tid[tid]; struct ath_buf *bf; - int ac = TID_TO_WME_AC(tid); - struct ath_txq *txq = sc->sc_ac2q[ac]; - - ATH_TXQ_LOCK_ASSERT(txq); /* Walk the queue, free frames */ for (;;) { @@ -1634,11 +1630,11 @@ ath_tx_node_flush(struct ath_softc *sc, ATH_TXQ_LOCK(txq); /* Remove this tid from the list of active tids */ - ath_tx_node_unsched(sc, an, tid); + ath_tx_tid_unsched(sc, an, tid); + ATH_TXQ_UNLOCK(txq); /* Free packets */ ath_tx_tid_free_pkts(sc, an, tid); - ATH_TXQ_UNLOCK(txq); } /* @@ -1800,7 +1796,7 @@ ath_txq_sched(struct ath_softc *sc, stru * once the addba completes or times out. */ if (atid->paused) { - ath_tx_node_unsched(sc, atid->an, atid->tid); + ath_tx_tid_unsched(sc, atid->an, atid->tid); continue; } if (ath_tx_ampdu_running(sc, atid->an, atid->tid)) @@ -1810,7 +1806,7 @@ ath_txq_sched(struct ath_softc *sc, stru /* Empty? Remove */ if (atid->axq_depth == 0) - ath_tx_node_unsched(sc, atid->an, atid->tid); + ath_tx_tid_unsched(sc, atid->an, atid->tid); } }