summaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorJohannes Berg2015-03-16 09:08:20 +0100
committerJohannes Berg2015-03-16 09:08:20 +0100
commit45ceeee81ecdd437f7ecac77ae79263486c755e8 (patch)
treeca60a2d4884b47b81c42136e3f2d4b8536235172 /net/mac80211/rx.c
parentmac80211: move netdev stats to common function (diff)
downloadkernel-qcow2-linux-45ceeee81ecdd437f7ecac77ae79263486c755e8.tar.gz
kernel-qcow2-linux-45ceeee81ecdd437f7ecac77ae79263486c755e8.tar.xz
kernel-qcow2-linux-45ceeee81ecdd437f7ecac77ae79263486c755e8.zip
mac80211: add comment for rx_path_lock
Add a comment explaining how the RX path lock is used. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index bdabf349c6ee..6accd61ee54b 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -3123,6 +3123,12 @@ static void ieee80211_rx_handlers(struct ieee80211_rx_data *rx,
goto rxh_next; \
} while (0);
+ /* Lock here to avoid hitting all of the data used in the RX
+ * path (e.g. key data, station data, ...) concurrently when
+ * a frame is released from the reorder buffer due to timeout
+ * from the timer, potentially concurrently with RX from the
+ * driver.
+ */
spin_lock_bh(&rx->local->rx_path_lock);
while ((skb = __skb_dequeue(frames))) {