mac80211: update adjusting TBTT bit in beacon
authorThomas Pedersen <thomas@cozybit.com>
Sun, 15 Dec 2013 21:14:16 +0000 (13:14 -0800)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 16 Dec 2013 13:21:22 +0000 (14:21 +0100)
commit43552be1da3c420931c89727b6115b7fa35368f8
tree5dafd30e0d92be9bbf526cf5caec1f78558fe249
parentd43c6b6e6f2fcaebf198c499716e5e24d878fdd2
mac80211: update adjusting TBTT bit in beacon

This regression was introduced in "mac80211: cache mesh
beacon".

mesh_sync_offset_adjust_tbtt()  was assuming that the
beacon would be rebuilt in every single pre-tbtt
interrupt, but now the beacon update happens on the
workqueue, and it must be ready for immediate delivery to
the driver.

Save a pointer to the meshconf IE in the beacon_data (this
works because both the IE pointer and beacon buffer are
protected by the same rcu_{dereference,assign_pointer}())
for quick updates during pre-tbtt. This is faster and a
little prettier than iterating over the elements to find
the meshconf IE every time.

Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h
net/mac80211/mesh.c
net/mac80211/mesh_sync.c
net/mac80211/tx.c