mac80211: serialize rx path workers
authorChristian Lamparter <chunkeey@googlemail.com>
Thu, 30 Dec 2010 16:25:29 +0000 (17:25 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Jan 2011 19:46:13 +0000 (14:46 -0500)
commit24a8fdad35835e8d71f7c4b978a246fafed2e7b4
tree3ee2b5710b802dca6fe43cbedf461c54e0f2be93
parent1186488b4a4d4871e40cb1604ba3ede3d4b7cc90
mac80211: serialize rx path workers

This patch addresses the issue of serialization between
the main rx path and various reorder release timers.

<http://www.spinics.net/lists/linux-wireless/msg57214.html>

It converts the previously local "frames" queue into
a global rx queue [rx_skb_queue]. This way, everyone
(be it the main rx-path or some reorder release timeout)
can add frames to it.

Only one active rx handler worker [ieee80211_rx_handlers]
is needed. All other threads which have lost the race of
"runnning_rx_handler" can now simply "return", knowing that
the thread who had the "edge" will also take care of their
workload.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ieee80211_i.h
net/mac80211/main.c
net/mac80211/rx.c