Date: Thu, 9 May 2013 08:30:28 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250404 - user/adrian/net80211_tx/sys/dev/ath Message-ID: <201305090830.r498USLk075127@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: adrian Date: Thu May 9 08:30:28 2013 New Revision: 250404 URL: http://svnweb.freebsd.org/changeset/base/250404 Log: Use the TX lock instead of the NODE lock in the ps-poll code. Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath.c Thu May 9 08:21:53 2013 (r250403) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath.c Thu May 9 08:30:28 2013 (r250404) @@ -6272,7 +6272,7 @@ ath_node_recv_pspoll(struct ieee80211_no * turn-around time. */ - ATH_NODE_LOCK(an); + ATH_TX_LOCK(sc); /* * Legacy - we're called and the node isn't asleep. @@ -6284,7 +6284,7 @@ ath_node_recv_pspoll(struct ieee80211_no __func__, ni->ni_macaddr, ":"); - ATH_NODE_UNLOCK(an); + ATH_TX_UNLOCK(sc); avp->av_recv_pspoll(ni, m); return; } @@ -6304,7 +6304,7 @@ ath_node_recv_pspoll(struct ieee80211_no * only care if there are any frames here! */ if (an->an_swq_depth == 0) { - ATH_NODE_UNLOCK(an); + ATH_TX_UNLOCK(sc); DPRINTF(sc, ATH_DEBUG_NODE_PWRSAVE, "%s: %6D: SWQ empty; punting to net80211\n", __func__, @@ -6314,13 +6314,10 @@ ath_node_recv_pspoll(struct ieee80211_no return; } - ATH_NODE_UNLOCK(an); - /* * Ok, let's schedule the highest TID that has traffic * and then schedule something. */ - ATH_TX_LOCK(sc); for (tid = IEEE80211_TID_SIZE - 1; tid >= 0; tid--) { struct ath_tid *atid = &an->an_tid[tid]; /* @@ -6334,6 +6331,7 @@ ath_node_recv_pspoll(struct ieee80211_no * scheduler code here to optimise latency * at the expense of a REALLY deep callstack. */ + ATH_TX_UNLOCK(sc); taskqueue_enqueue(sc->sc_tq, &sc->sc_txqtask); DPRINTF(sc, ATH_DEBUG_NODE_PWRSAVE, "%s: %6D: leaking frame to TID %d\n", @@ -6341,7 +6339,6 @@ ath_node_recv_pspoll(struct ieee80211_no ni->ni_macaddr, ":", tid); - ATH_TX_UNLOCK(sc); return; }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305090830.r498USLk075127>