aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/tx.c
diff options
context:
space:
mode:
authorThomas Pedersen <thomas@cozybit.com>2013-12-15 16:14:16 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-12-16 08:21:22 -0500
commit43552be1da3c420931c89727b6115b7fa35368f8 (patch)
tree5dafd30e0d92be9bbf526cf5caec1f78558fe249 /net/mac80211/tx.c
parentd43c6b6e6f2fcaebf198c499716e5e24d878fdd2 (diff)
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>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r--net/mac80211/tx.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 002ded2c01f6..2f0e176e7989 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2604,8 +2604,7 @@ struct sk_buff *ieee80211_beacon_get_tim(struct ieee80211_hw *hw,
2604 ieee80211_update_csa(sdata, bcn); 2604 ieee80211_update_csa(sdata, bcn);
2605 2605
2606 if (ifmsh->sync_ops) 2606 if (ifmsh->sync_ops)
2607 ifmsh->sync_ops->adjust_tbtt( 2607 ifmsh->sync_ops->adjust_tbtt(sdata, bcn);
2608 sdata);
2609 2608
2610 skb = dev_alloc_skb(local->tx_headroom + 2609 skb = dev_alloc_skb(local->tx_headroom +
2611 bcn->head_len + 2610 bcn->head_len +