Lines Matching defs:ifmsh
43 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
45 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags);
62 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
78 if (!(ifmsh->mesh_id_len == ie->mesh_id_len &&
79 memcmp(ifmsh->mesh_id, ie->mesh_id, ie->mesh_id_len) == 0 &&
80 (ifmsh->mesh_pp_id == ie->mesh_config->meshconf_psel) &&
81 (ifmsh->mesh_pm_id == ie->mesh_config->meshconf_pmetric) &&
82 (ifmsh->mesh_cc_id == ie->mesh_config->meshconf_congest) &&
83 (ifmsh->mesh_sp_id == ie->mesh_config->meshconf_synch) &&
84 (ifmsh->mesh_auth_id == ie->mesh_config->meshconf_auth)))
257 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
260 bool is_connected_to_gate = ifmsh->num_gates > 0 ||
261 ifmsh->mshcfg.dot11MeshGateAnnouncementProtocol ||
262 ifmsh->mshcfg.dot11MeshConnectedToMeshGate;
263 bool is_connected_to_as = ifmsh->mshcfg.dot11MeshConnectedToAuthServer;
273 ifmsh->meshconf_offset = pos - skb->data;
276 *pos++ = ifmsh->mesh_pp_id;
278 *pos++ = ifmsh->mesh_pm_id;
280 *pos++ = ifmsh->mesh_cc_id;
282 *pos++ = ifmsh->mesh_sp_id;
284 *pos++ = ifmsh->mesh_auth_id;
286 neighbors = atomic_read(&ifmsh->estab_plinks);
293 *pos |= ifmsh->mshcfg.dot11MeshForwarding ?
295 *pos |= ifmsh->accepting_plinks ?
298 *pos |= ifmsh->ps_peers_deep_sleep ?
305 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
308 if (skb_tailroom(skb) < 2 + ifmsh->mesh_id_len)
311 pos = skb_put(skb, 2 + ifmsh->mesh_id_len);
313 *pos++ = ifmsh->mesh_id_len;
314 if (ifmsh->mesh_id_len)
315 memcpy(pos, ifmsh->mesh_id, ifmsh->mesh_id_len);
323 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
327 if (ifmsh->ps_peers_light_sleep == 0 &&
328 ifmsh->ps_peers_deep_sleep == 0 &&
329 ifmsh->nonpeer_pm == NL80211_MESH_POWER_ACTIVE)
338 put_unaligned_le16(ifmsh->mshcfg.dot11MeshAwakeWindowDuration, pos);
346 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
350 if (!ifmsh->ie || !ifmsh->ie_len)
354 offset = ieee80211_ie_split_vendor(ifmsh->ie, ifmsh->ie_len, 0);
356 if (offset < ifmsh->ie_len) {
357 len = ifmsh->ie_len - offset;
358 data = ifmsh->ie + offset;
369 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
373 if (!ifmsh->ie || !ifmsh->ie_len)
377 data = cfg80211_find_ie(WLAN_EID_RSN, ifmsh->ie, ifmsh->ie_len);
652 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
654 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
659 void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh)
661 if (ifmsh->mshcfg.dot11MeshHWMPRootMode > IEEE80211_ROOTMODE_ROOT)
662 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
664 clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
666 del_timer_sync(&ifmsh->mesh_path_root_timer);
744 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
747 if (ifmsh->mshcfg.plink_timeout > 0)
748 ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ);
754 mod_timer(&ifmsh->housekeeping_timer,
761 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
766 if (ifmsh->mshcfg.dot11MeshHWMPRootMode == IEEE80211_PROACTIVE_RANN)
767 interval = ifmsh->mshcfg.dot11MeshHWMPRannInterval;
769 interval = ifmsh->mshcfg.dot11MeshHWMProotInterval;
771 mod_timer(&ifmsh->mesh_path_root_timer,
776 ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh)
790 sdata = container_of(ifmsh, struct ieee80211_sub_if_data, u.mesh);
812 2 + ifmsh->mesh_id_len +
821 ifmsh->ie_len;
854 csa = rcu_dereference(ifmsh->csa);
872 if (ifmsh->csa_role == IEEE80211_MESH_CSA_ROLE_INIT) {
873 *pos++ = ifmsh->mshcfg.dot11MeshTTL;
876 *pos++ = ifmsh->chsw_ttl;
882 put_unaligned_le16(ifmsh->pre_value, pos);
947 (bcn->tail + ifmsh->meshconf_offset);
950 rcu_assign_pointer(ifmsh->beacon, bcn);
979 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
988 set_bit(bit, &ifmsh->mbss_changed);
989 set_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags);
995 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1009 ifmsh->mesh_cc_id = 0; /* Disabled */
1011 ifmsh->sync_ops = ieee80211_mesh_sync_ops_get(ifmsh->mesh_sp_id);
1012 ifmsh->sync_offset_clockdrift_max = 0;
1013 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags);
1014 ieee80211_mesh_root_setup(ifmsh);
1017 ifmsh->mshcfg.ht_opmode;
1022 if (ieee80211_mesh_build_beacon(ifmsh)) {
1037 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1048 ifmsh->mesh_id_len = 0;
1055 bcn = rcu_dereference_protected(ifmsh->beacon,
1057 RCU_INIT_POINTER(ifmsh->beacon, NULL);
1061 local->total_ps_buffered -= skb_queue_len(&ifmsh->ps.bc_buf);
1062 skb_queue_purge(&ifmsh->ps.bc_buf);
1069 ifmsh->wrkq_flags = 0;
1070 ifmsh->mbss_changed = 0;
1098 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1166 if (err > 0 && !ifmsh->userspace_handles_dfs) {
1192 ifmsh->chsw_ttl = csa_ie.ttl - 1;
1193 if (ifmsh->pre_value >= csa_ie.pre_value)
1195 ifmsh->pre_value = csa_ie.pre_value;
1198 if (ifmsh->chsw_ttl >= ifmsh->mshcfg.dot11MeshTTL)
1201 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_REPEATER;
1215 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1241 (elems.mesh_id_len != ifmsh->mesh_id_len ||
1242 memcmp(elems.mesh_id, ifmsh->mesh_id, ifmsh->mesh_id_len)))
1246 bcn = rcu_dereference(ifmsh->beacon);
1276 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1320 if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT &&
1325 if (ifmsh->sync_ops)
1326 ifmsh->sync_ops->rx_bcn_presp(sdata,
1332 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1338 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
1339 ifmsh->chsw_ttl = 0;
1342 tmp_csa_settings = rcu_dereference_protected(ifmsh->csa,
1344 RCU_INIT_POINTER(ifmsh->csa, NULL);
1361 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1375 rcu_assign_pointer(ifmsh->csa, tmp_csa_settings);
1379 tmp_csa_settings = rcu_dereference(ifmsh->csa);
1380 RCU_INIT_POINTER(ifmsh->csa, NULL);
1418 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1438 ifmsh->chsw_ttl = elems.mesh_chansw_params_ie->mesh_ttl;
1439 if (!--ifmsh->chsw_ttl)
1443 if (ifmsh->pre_value >= pre_value)
1446 ifmsh->pre_value = pre_value;
1522 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1525 for_each_set_bit(bit, &ifmsh->mbss_changed,
1527 clear_bit(bit, &ifmsh->mbss_changed);
1544 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1552 if (ifmsh->preq_queue_len &&
1554 ifmsh->last_preq + msecs_to_jiffies(ifmsh->mshcfg.dot11MeshHWMPpreqMinInterval)))
1557 if (test_and_clear_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags))
1560 if (test_and_clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags))
1563 if (test_and_clear_bit(MESH_WORK_DRIFT_ADJUST, &ifmsh->wrkq_flags))
1566 if (test_and_clear_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags))
1575 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1578 timer_setup(&ifmsh->housekeeping_timer,
1581 ifmsh->accepting_plinks = true;
1582 atomic_set(&ifmsh->mpaths, 0);
1584 ifmsh->last_preq = jiffies;
1585 ifmsh->next_perr = jiffies;
1586 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
1593 timer_setup(&ifmsh->mesh_path_timer, ieee80211_mesh_path_timer, 0);
1594 timer_setup(&ifmsh->mesh_path_root_timer,
1596 INIT_LIST_HEAD(&ifmsh->preq_queue.list);
1597 skb_queue_head_init(&ifmsh->ps.bc_buf);
1598 spin_lock_init(&ifmsh->mesh_preq_queue_lock);
1599 spin_lock_init(&ifmsh->sync_offset_lock);
1600 RCU_INIT_POINTER(ifmsh->beacon, NULL);