Lines Matching defs:ifmsh
44 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
46 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags);
63 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
79 if (!(ifmsh->mesh_id_len == ie->mesh_id_len &&
80 memcmp(ifmsh->mesh_id, ie->mesh_id, ie->mesh_id_len) == 0 &&
81 (ifmsh->mesh_pp_id == ie->mesh_config->meshconf_psel) &&
82 (ifmsh->mesh_pm_id == ie->mesh_config->meshconf_pmetric) &&
83 (ifmsh->mesh_cc_id == ie->mesh_config->meshconf_congest) &&
84 (ifmsh->mesh_sp_id == ie->mesh_config->meshconf_synch) &&
85 (ifmsh->mesh_auth_id == ie->mesh_config->meshconf_auth)))
259 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
262 bool is_connected_to_gate = ifmsh->num_gates > 0 ||
263 ifmsh->mshcfg.dot11MeshGateAnnouncementProtocol ||
264 ifmsh->mshcfg.dot11MeshConnectedToMeshGate;
265 bool is_connected_to_as = ifmsh->mshcfg.dot11MeshConnectedToAuthServer;
275 ifmsh->meshconf_offset = pos - skb->data;
278 *pos++ = ifmsh->mesh_pp_id;
280 *pos++ = ifmsh->mesh_pm_id;
282 *pos++ = ifmsh->mesh_cc_id;
284 *pos++ = ifmsh->mesh_sp_id;
286 *pos++ = ifmsh->mesh_auth_id;
288 neighbors = atomic_read(&ifmsh->estab_plinks);
295 *pos |= ifmsh->mshcfg.dot11MeshForwarding ?
297 *pos |= ifmsh->accepting_plinks ?
300 *pos |= ifmsh->ps_peers_deep_sleep ?
307 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
310 if (skb_tailroom(skb) < 2 + ifmsh->mesh_id_len)
313 pos = skb_put(skb, 2 + ifmsh->mesh_id_len);
315 *pos++ = ifmsh->mesh_id_len;
316 if (ifmsh->mesh_id_len)
317 memcpy(pos, ifmsh->mesh_id, ifmsh->mesh_id_len);
325 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
329 if (ifmsh->ps_peers_light_sleep == 0 &&
330 ifmsh->ps_peers_deep_sleep == 0 &&
331 ifmsh->nonpeer_pm == NL80211_MESH_POWER_ACTIVE)
340 put_unaligned_le16(ifmsh->mshcfg.dot11MeshAwakeWindowDuration, pos);
348 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
352 if (!ifmsh->ie || !ifmsh->ie_len)
356 offset = ieee80211_ie_split_vendor(ifmsh->ie, ifmsh->ie_len, 0);
358 if (offset < ifmsh->ie_len) {
359 len = ifmsh->ie_len - offset;
360 data = ifmsh->ie + offset;
371 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
375 if (!ifmsh->ie || !ifmsh->ie_len)
379 data = cfg80211_find_ie(WLAN_EID_RSN, ifmsh->ie, ifmsh->ie_len);
713 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
715 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
720 void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh)
722 if (ifmsh->mshcfg.dot11MeshHWMPRootMode > IEEE80211_ROOTMODE_ROOT)
723 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
725 clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags);
727 del_timer_sync(&ifmsh->mesh_path_root_timer);
767 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
780 if (ifmsh->mshcfg.dot11MeshNolearn)
784 if (ifmsh->ps_peers_light_sleep || ifmsh->ps_peers_deep_sleep)
925 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
928 if (ifmsh->mshcfg.plink_timeout > 0)
929 ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ);
937 mod_timer(&ifmsh->housekeeping_timer,
944 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
949 if (ifmsh->mshcfg.dot11MeshHWMPRootMode == IEEE80211_PROACTIVE_RANN)
950 interval = ifmsh->mshcfg.dot11MeshHWMPRannInterval;
952 interval = ifmsh->mshcfg.dot11MeshHWMProotInterval;
954 mod_timer(&ifmsh->mesh_path_root_timer,
959 ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh)
973 sdata = container_of(ifmsh, struct ieee80211_sub_if_data, u.mesh);
997 2 + ifmsh->mesh_id_len +
1009 ifmsh->ie_len;
1042 csa = rcu_dereference(ifmsh->csa);
1060 if (ifmsh->csa_role == IEEE80211_MESH_CSA_ROLE_INIT) {
1061 *pos++ = ifmsh->mshcfg.dot11MeshTTL;
1064 *pos++ = ifmsh->chsw_ttl;
1070 put_unaligned_le16(ifmsh->pre_value, pos);
1138 (bcn->tail + ifmsh->meshconf_offset);
1141 rcu_assign_pointer(ifmsh->beacon, bcn);
1169 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1178 set_bit(bit, ifmsh->mbss_changed);
1179 set_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags);
1185 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1199 ifmsh->mesh_cc_id = 0; /* Disabled */
1201 ifmsh->sync_ops = ieee80211_mesh_sync_ops_get(ifmsh->mesh_sp_id);
1202 ifmsh->sync_offset_clockdrift_max = 0;
1203 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags);
1204 ieee80211_mesh_root_setup(ifmsh);
1207 ifmsh->mshcfg.ht_opmode;
1212 if (ieee80211_mesh_build_beacon(ifmsh)) {
1227 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1238 ifmsh->mesh_id_len = 0;
1246 bcn = sdata_dereference(ifmsh->beacon, sdata);
1247 RCU_INIT_POINTER(ifmsh->beacon, NULL);
1251 local->total_ps_buffered -= skb_queue_len(&ifmsh->ps.bc_buf);
1252 skb_queue_purge(&ifmsh->ps.bc_buf);
1259 ifmsh->wrkq_flags = 0;
1260 memset(ifmsh->mbss_changed, 0, sizeof(ifmsh->mbss_changed));
1288 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1356 if (err > 0 && !ifmsh->userspace_handles_dfs) {
1382 ifmsh->chsw_ttl = csa_ie.ttl - 1;
1383 if (ifmsh->pre_value >= csa_ie.pre_value)
1385 ifmsh->pre_value = csa_ie.pre_value;
1388 if (ifmsh->chsw_ttl >= ifmsh->mshcfg.dot11MeshTTL)
1391 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_REPEATER;
1405 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1432 (elems->mesh_id_len != ifmsh->mesh_id_len ||
1433 memcmp(elems->mesh_id, ifmsh->mesh_id, ifmsh->mesh_id_len)))
1437 bcn = rcu_dereference(ifmsh->beacon);
1469 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1516 if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT &&
1521 if (ifmsh->sync_ops)
1522 ifmsh->sync_ops->rx_bcn_presp(sdata, stype, mgmt, len,
1530 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1535 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
1536 ifmsh->chsw_ttl = 0;
1539 tmp_csa_settings = sdata_dereference(ifmsh->csa, sdata);
1540 RCU_INIT_POINTER(ifmsh->csa, NULL);
1558 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1572 rcu_assign_pointer(ifmsh->csa, tmp_csa_settings);
1576 tmp_csa_settings = rcu_dereference(ifmsh->csa);
1577 RCU_INIT_POINTER(ifmsh->csa, NULL);
1616 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1637 ifmsh->chsw_ttl = elems->mesh_chansw_params_ie->mesh_ttl;
1638 if (!--ifmsh->chsw_ttl)
1642 if (ifmsh->pre_value >= pre_value)
1645 ifmsh->pre_value = pre_value;
1723 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1727 for_each_set_bit(bit, ifmsh->mbss_changed,
1729 clear_bit(bit, ifmsh->mbss_changed);
1746 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1754 if (ifmsh->preq_queue_len &&
1756 ifmsh->last_preq + msecs_to_jiffies(ifmsh->mshcfg.dot11MeshHWMPpreqMinInterval)))
1759 if (test_and_clear_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags))
1762 if (test_and_clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags))
1765 if (test_and_clear_bit(MESH_WORK_DRIFT_ADJUST, &ifmsh->wrkq_flags))
1768 if (test_and_clear_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags))
1777 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
1780 timer_setup(&ifmsh->housekeeping_timer,
1783 ifmsh->accepting_plinks = true;
1784 atomic_set(&ifmsh->mpaths, 0);
1786 ifmsh->last_preq = jiffies;
1787 ifmsh->next_perr = jiffies;
1788 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE;
1795 timer_setup(&ifmsh->mesh_path_timer, ieee80211_mesh_path_timer, 0);
1796 timer_setup(&ifmsh->mesh_path_root_timer,
1798 INIT_LIST_HEAD(&ifmsh->preq_queue.list);
1799 skb_queue_head_init(&ifmsh->ps.bc_buf);
1800 spin_lock_init(&ifmsh->mesh_preq_queue_lock);
1801 spin_lock_init(&ifmsh->sync_offset_lock);
1802 RCU_INIT_POINTER(ifmsh->beacon, NULL);