diff options
author | avos <avos@FreeBSD.org> | 2016-06-29 17:25:46 +0000 |
---|---|---|
committer | avos <avos@FreeBSD.org> | 2016-06-29 17:25:46 +0000 |
commit | 19e196315ea112a4d6e5618f871df55902e3bb99 (patch) | |
tree | 7edfcd8a5ab830fc811418da4c0893551af5d185 /sys/net80211/ieee80211_ddb.c | |
parent | 5c68448b2f996875f54eceb0cf97c6a1a749748c (diff) | |
download | FreeBSD-src-19e196315ea112a4d6e5618f871df55902e3bb99.zip FreeBSD-src-19e196315ea112a4d6e5618f871df55902e3bb99.tar.gz |
net80211: fix LOR/deadlock in ieee80211_ff_node_cleanup().
Add new lock for stageq (part of ieee80211_superg structure) and
ni_tx_superg (part of ieee80211_node structure);
drop com_lock protection where it is used to protect them.
While here, drop duplicate OPACKETS counter incrementation.
ni_tx_ampdu is not protected with it (however, it is also used without
locking in other places; probably, it requires some other solution
to be thread-safe).
Tested with RTL8188CUS (AP) and RTL8188EU (STA).
NOTE: Since this change breaks KBI, all wireless drivers need to be
recompiled.
Reviewed by: adrian
Approved by: re (gjb)
Differential Revision: https://reviews.freebsd.org/D6958
Diffstat (limited to 'sys/net80211/ieee80211_ddb.c')
-rw-r--r-- | sys/net80211/ieee80211_ddb.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_ddb.c b/sys/net80211/ieee80211_ddb.c index 94fcf93..2fd5067 100644 --- a/sys/net80211/ieee80211_ddb.c +++ b/sys/net80211/ieee80211_ddb.c @@ -506,6 +506,8 @@ _db_show_com(const struct ieee80211com *ic, int showvaps, int showsta, db_printf("\tsoftc %p", ic->ic_softc); db_printf("\tname %s", ic->ic_name); db_printf(" comlock %p", &ic->ic_comlock); + db_printf(" txlock %p", &ic->ic_txlock); + db_printf(" fflock %p", &ic->ic_fflock); db_printf("\n"); db_printf("\theadroom %d", ic->ic_headroom); db_printf(" phytype %d", ic->ic_phytype); |