svn commit: r250404 - user/adrian/net80211_tx/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Thu May 9 08:30:29 UTC 2013
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;
}
More information about the svn-src-user
mailing list