aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/cfg.c
diff options
context:
space:
mode:
authorChun-Yeow Yeoh <yeohchunyeow@gmail.com>2013-11-08 02:09:43 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-11-25 10:50:13 -0500
commit3f718fd8401d7db86b9efc3ea1cdf5df41354b9f (patch)
tree62221339cdbf9612427669850a7d1429e982e2d0 /net/mac80211/cfg.c
parent051a41fa4ee14f5c39668f0980973b9a195de560 (diff)
mac80211: fix the mesh channel switch support
Mesh STA receiving the mesh CSA action frame is not able to trigger the mesh channel switch due to the incorrect handling and comparison of mesh channel switch parameters element (MCSP)'s TTL. Make sure the MCSP's TTL is updated accordingly before calling the ieee80211_mesh_process_chnswitch. Also, we update the beacon before forwarding the CSA action frame, so MCSP's precedence value and initiator flag need to be updated prior to this. Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r--net/mac80211/cfg.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 9e7e68d7b1a7..364ce0c5962f 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3119,9 +3119,17 @@ static int ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
3119 params->chandef.chan->band) 3119 params->chandef.chan->band)
3120 return -EINVAL; 3120 return -EINVAL;
3121 3121
3122 ifmsh->chsw_init = true;
3123 if (!ifmsh->pre_value)
3124 ifmsh->pre_value = 1;
3125 else
3126 ifmsh->pre_value++;
3127
3122 err = ieee80211_mesh_csa_beacon(sdata, params, true); 3128 err = ieee80211_mesh_csa_beacon(sdata, params, true);
3123 if (err < 0) 3129 if (err < 0) {
3130 ifmsh->chsw_init = false;
3124 return err; 3131 return err;
3132 }
3125 break; 3133 break;
3126#endif 3134#endif
3127 default: 3135 default: