aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ath/if_ath.c
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2012-03-09 08:36:30 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2012-03-09 08:36:30 +0000
commite86fd7a7155bce00179efe7b5b59722f246ce441 (patch)
tree888fc7187c60c3dde104838ef81461ceecc48cf2 /sys/dev/ath/if_ath.c
parentf6f8319094eea0fe766f2c5a15ebc4a16451f71d (diff)
downloadsrc-e86fd7a7155bce00179efe7b5b59722f246ce441.tar.gz
src-e86fd7a7155bce00179efe7b5b59722f246ce441.zip
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.
Notes
Notes: svn path=/head/; revision=232719
Diffstat (limited to 'sys/dev/ath/if_ath.c')
-rw-r--r--sys/dev/ath/if_ath.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index d4288d329650..21adfa89a000 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;