diff options
author | adrian <adrian@FreeBSD.org> | 2012-03-09 08:36:30 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-03-09 08:36:30 +0000 |
commit | 59c041e360742a0abdb4e72e3e8270972bdd7fc8 (patch) | |
tree | 888fc7187c60c3dde104838ef81461ceecc48cf2 /sys/dev/ath/if_ath.c | |
parent | 30d103211128973cbfd7c54029fdfe035520ce93 (diff) | |
download | FreeBSD-src-59c041e360742a0abdb4e72e3e8270972bdd7fc8.zip FreeBSD-src-59c041e360742a0abdb4e72e3e8270972bdd7fc8.tar.gz |
Insert extra paranoia into the ath(4) driver.
This function must be called with both the source and destination TXQs
locked or things will get hairy.
I added this as part of some debugging in a PR but it turned out to not
be the cause. I still think it's -correct- so, here it is.
Diffstat (limited to 'sys/dev/ath/if_ath.c')
-rw-r--r-- | sys/dev/ath/if_ath.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index d4288d3..21adfa8 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -2908,6 +2908,10 @@ ath_beacon_update(struct ieee80211vap *vap, int item) static void ath_txqmove(struct ath_txq *dst, struct ath_txq *src) { + + ATH_TXQ_LOCK_ASSERT(dst); + ATH_TXQ_LOCK_ASSERT(src); + TAILQ_CONCAT(&dst->axq_q, &src->axq_q, bf_list); dst->axq_link = src->axq_link; src->axq_link = NULL; |