OSDN Git Service

mac80211: simplify station/aggregation code
authorJohannes Berg <johannes.berg@intel.com>
Thu, 10 Jun 2010 08:21:29 +0000 (10:21 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 14 Jun 2010 19:38:16 +0000 (15:38 -0400)
commit2a419056c15478d2df3f3e9d4fa64e34eb1faa7d
tree680342d6b883c18eec9003f2b93abd8ffd1e6ae6
parent9d38d85de0270e3927bffab94973a9c78d1dc800
mac80211: simplify station/aggregation code

A number of places use RCU locking for accessing
the station list, even though they do not need
to. Use mutex locking instead to prepare for the
locking changes I want to make. The mlme code is
also using a WLAN_STA_DISASSOC flag that has the
same meaning as WLAN_STA_BLOCK_BA, so use that.

While doing so, combine places where we loop
over stations twice, and optimise away some of
the loops by checking if the hardware supports
aggregation at all first.

Also fix a more theoretical race condition: right
now we could resume, set up an aggregation session,
and right after tear it down again due to the code
that is needed for hardware reconfiguration here.
Also mark add a comment to that code marking it as
a workaround.

Finally, remove a pointless aggregation disabling
loop when an interface is stopped, directly after
that we remove all stations from it which will also
disable all aggregation sessions that may still be
active, and does so in a race-free way unlike the
current loop that doesn't block new sessions.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/agg-tx.c
net/mac80211/iface.c
net/mac80211/mlme.c
net/mac80211/pm.c
net/mac80211/sta_info.h
net/mac80211/util.c