Skip to contentSkip to conversation

mac80211: Simplify locking in ieee80211_sta_tear_down_BA_sessions()

PATCH New Ilan Peer 1 participant 1 message Sep 6, 2017 mac80211

lore
Share & tools
lore

Ilan Peer

author
#0 lore raw

PATCH 1/1 mac80211: Simplify locking in ieee80211_sta_tear_down_BA_sessions()

Simplify the locking in ieee80211_sta_tear_down_BA_sessions() and lock sta->ampdu_mlme.mtx over the entire function instead of locking/unlocking it for each TID etc.

---
 net/mac80211/ht.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
net/mac80211/ht.c +7 -5
index 11d691c..3169862 100644
@@ -290,13 +290,15 @@ void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta,
 {
 	int i;
 
+	mutex_lock(&sta->ampdu_mlme.mtx);
 	for (i = 0; i <  IEEE80211_NUM_TIDS; i++) {
-		__ieee80211_stop_tx_ba_session(sta, i, reason);
-		__ieee80211_stop_rx_ba_session(sta, i, WLAN_BACK_RECIPIENT,
-					       WLAN_REASON_QSTA_LEAVE_QBSS,
-					       reason != AGG_STOP_DESTROY_STA &&
-					       reason != AGG_STOP_PEER_REQUEST);
+		___ieee80211_stop_tx_ba_session(sta, i, reason);
+		___ieee80211_stop_rx_ba_session(sta, i, WLAN_BACK_RECIPIENT,
+						WLAN_REASON_QSTA_LEAVE_QBSS,
+						reason != AGG_STOP_DESTROY_STA &&
+						reason != AGG_STOP_PEER_REQUEST);
 	}
+	mutex_unlock(&sta->ampdu_mlme.mtx);
 
 	/* stopping might queue the work again - so cancel only afterwards */
 	cancel_work_sync(&sta->ampdu_mlme.work);
Signature · 1 line
1.9.1