aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/tx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r--net/mac80211/tx.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index acd9b61fbc07..9868cb72054e 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2398,6 +2398,10 @@ static void ieee80211_update_csa(struct ieee80211_sub_if_data *sdata,
2398 beacon_data = beacon->head; 2398 beacon_data = beacon->head;
2399 beacon_data_len = beacon->head_len; 2399 beacon_data_len = beacon->head_len;
2400 break; 2400 break;
2401 case NL80211_IFTYPE_MESH_POINT:
2402 beacon_data = beacon->head;
2403 beacon_data_len = beacon->head_len;
2404 break;
2401 default: 2405 default:
2402 return; 2406 return;
2403 } 2407 }
@@ -2454,6 +2458,15 @@ bool ieee80211_csa_is_complete(struct ieee80211_vif *vif)
2454 2458
2455 beacon_data = beacon->head; 2459 beacon_data = beacon->head;
2456 beacon_data_len = beacon->head_len; 2460 beacon_data_len = beacon->head_len;
2461 } else if (vif->type == NL80211_IFTYPE_MESH_POINT) {
2462 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
2463
2464 beacon = rcu_dereference(ifmsh->beacon);
2465 if (!beacon)
2466 goto out;
2467
2468 beacon_data = beacon->head;
2469 beacon_data_len = beacon->head_len;
2457 } else { 2470 } else {
2458 WARN_ON(1); 2471 WARN_ON(1);
2459 goto out; 2472 goto out;
@@ -2559,6 +2572,9 @@ struct sk_buff *ieee80211_beacon_get_tim(struct ieee80211_hw *hw,
2559 if (!bcn) 2572 if (!bcn)
2560 goto out; 2573 goto out;
2561 2574
2575 if (sdata->vif.csa_active)
2576 ieee80211_update_csa(sdata, bcn);
2577
2562 if (ifmsh->sync_ops) 2578 if (ifmsh->sync_ops)
2563 ifmsh->sync_ops->adjust_tbtt( 2579 ifmsh->sync_ops->adjust_tbtt(
2564 sdata); 2580 sdata);