Lines Matching refs:ifmsh

44 	struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;  in ieee80211_mesh_housekeeping_timer()  local
46 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags); in ieee80211_mesh_housekeeping_timer()
65 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_matches_local() local
81 if (!(ifmsh->mesh_id_len == ie->mesh_id_len && in mesh_matches_local()
82 memcmp(ifmsh->mesh_id, ie->mesh_id, ie->mesh_id_len) == 0 && in mesh_matches_local()
83 (ifmsh->mesh_pp_id == ie->mesh_config->meshconf_psel) && in mesh_matches_local()
84 (ifmsh->mesh_pm_id == ie->mesh_config->meshconf_pmetric) && in mesh_matches_local()
85 (ifmsh->mesh_cc_id == ie->mesh_config->meshconf_congest) && in mesh_matches_local()
86 (ifmsh->mesh_sp_id == ie->mesh_config->meshconf_synch) && in mesh_matches_local()
87 (ifmsh->mesh_auth_id == ie->mesh_config->meshconf_auth))) in mesh_matches_local()
264 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshconf_ie() local
267 bool is_connected_to_gate = ifmsh->num_gates > 0 || in mesh_add_meshconf_ie()
268 ifmsh->mshcfg.dot11MeshGateAnnouncementProtocol || in mesh_add_meshconf_ie()
269 ifmsh->mshcfg.dot11MeshConnectedToMeshGate; in mesh_add_meshconf_ie()
270 bool is_connected_to_as = ifmsh->mshcfg.dot11MeshConnectedToAuthServer; in mesh_add_meshconf_ie()
280 ifmsh->meshconf_offset = pos - skb->data; in mesh_add_meshconf_ie()
283 *pos++ = ifmsh->mesh_pp_id; in mesh_add_meshconf_ie()
285 *pos++ = ifmsh->mesh_pm_id; in mesh_add_meshconf_ie()
287 *pos++ = ifmsh->mesh_cc_id; in mesh_add_meshconf_ie()
289 *pos++ = ifmsh->mesh_sp_id; in mesh_add_meshconf_ie()
291 *pos++ = ifmsh->mesh_auth_id; in mesh_add_meshconf_ie()
293 neighbors = atomic_read(&ifmsh->estab_plinks); in mesh_add_meshconf_ie()
300 *pos |= ifmsh->mshcfg.dot11MeshForwarding ? in mesh_add_meshconf_ie()
302 *pos |= ifmsh->accepting_plinks ? in mesh_add_meshconf_ie()
305 *pos |= ifmsh->ps_peers_deep_sleep ? in mesh_add_meshconf_ie()
312 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshid_ie() local
315 if (skb_tailroom(skb) < 2 + ifmsh->mesh_id_len) in mesh_add_meshid_ie()
318 pos = skb_put(skb, 2 + ifmsh->mesh_id_len); in mesh_add_meshid_ie()
320 *pos++ = ifmsh->mesh_id_len; in mesh_add_meshid_ie()
321 if (ifmsh->mesh_id_len) in mesh_add_meshid_ie()
322 memcpy(pos, ifmsh->mesh_id, ifmsh->mesh_id_len); in mesh_add_meshid_ie()
330 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_awake_window_ie() local
334 if (ifmsh->ps_peers_light_sleep == 0 && in mesh_add_awake_window_ie()
335 ifmsh->ps_peers_deep_sleep == 0 && in mesh_add_awake_window_ie()
336 ifmsh->nonpeer_pm == NL80211_MESH_POWER_ACTIVE) in mesh_add_awake_window_ie()
345 put_unaligned_le16(ifmsh->mshcfg.dot11MeshAwakeWindowDuration, pos); in mesh_add_awake_window_ie()
353 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_vendor_ies() local
357 if (!ifmsh->ie || !ifmsh->ie_len) in mesh_add_vendor_ies()
361 offset = ieee80211_ie_split_vendor(ifmsh->ie, ifmsh->ie_len, 0); in mesh_add_vendor_ies()
363 if (offset < ifmsh->ie_len) { in mesh_add_vendor_ies()
364 len = ifmsh->ie_len - offset; in mesh_add_vendor_ies()
365 data = ifmsh->ie + offset; in mesh_add_vendor_ies()
376 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_rsn_ie() local
380 if (!ifmsh->ie || !ifmsh->ie_len) in mesh_add_rsn_ie()
384 data = cfg80211_find_ie(WLAN_EID_RSN, ifmsh->ie, ifmsh->ie_len); in mesh_add_rsn_ie()
695 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_path_root_timer() local
697 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags); in ieee80211_mesh_path_root_timer()
702 void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh) in ieee80211_mesh_root_setup() argument
704 if (ifmsh->mshcfg.dot11MeshHWMPRootMode > IEEE80211_ROOTMODE_ROOT) in ieee80211_mesh_root_setup()
705 set_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags); in ieee80211_mesh_root_setup()
707 clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags); in ieee80211_mesh_root_setup()
709 del_timer_sync(&ifmsh->mesh_path_root_timer); in ieee80211_mesh_root_setup()
749 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_xmit_fast() local
765 if (ifmsh->mshcfg.dot11MeshNolearn) in ieee80211_mesh_xmit_fast()
769 if (ifmsh->ps_peers_light_sleep || ifmsh->ps_peers_deep_sleep) in ieee80211_mesh_xmit_fast()
913 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_housekeeping() local
916 if (ifmsh->mshcfg.plink_timeout > 0) in ieee80211_mesh_housekeeping()
917 ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ); in ieee80211_mesh_housekeeping()
925 mod_timer(&ifmsh->housekeeping_timer, in ieee80211_mesh_housekeeping()
932 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rootpath() local
937 if (ifmsh->mshcfg.dot11MeshHWMPRootMode == IEEE80211_PROACTIVE_RANN) in ieee80211_mesh_rootpath()
938 interval = ifmsh->mshcfg.dot11MeshHWMPRannInterval; in ieee80211_mesh_rootpath()
940 interval = ifmsh->mshcfg.dot11MeshHWMProotInterval; in ieee80211_mesh_rootpath()
942 mod_timer(&ifmsh->mesh_path_root_timer, in ieee80211_mesh_rootpath()
947 ieee80211_mesh_build_beacon(struct ieee80211_if_mesh *ifmsh) in ieee80211_mesh_build_beacon() argument
961 sdata = container_of(ifmsh, struct ieee80211_sub_if_data, u.mesh); in ieee80211_mesh_build_beacon()
983 2 + ifmsh->mesh_id_len + in ieee80211_mesh_build_beacon()
995 ifmsh->ie_len; in ieee80211_mesh_build_beacon()
1028 csa = rcu_dereference(ifmsh->csa); in ieee80211_mesh_build_beacon()
1046 if (ifmsh->csa_role == IEEE80211_MESH_CSA_ROLE_INIT) { in ieee80211_mesh_build_beacon()
1047 *pos++ = ifmsh->mshcfg.dot11MeshTTL; in ieee80211_mesh_build_beacon()
1050 *pos++ = ifmsh->chsw_ttl; in ieee80211_mesh_build_beacon()
1056 put_unaligned_le16(ifmsh->pre_value, pos); in ieee80211_mesh_build_beacon()
1128 (bcn->tail + ifmsh->meshconf_offset); in ieee80211_mesh_build_beacon()
1131 rcu_assign_pointer(ifmsh->beacon, bcn); in ieee80211_mesh_build_beacon()
1159 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mbss_info_change_notify() local
1168 set_bit(bit, ifmsh->mbss_changed); in ieee80211_mbss_info_change_notify()
1169 set_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags); in ieee80211_mbss_info_change_notify()
1175 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_start_mesh() local
1189 ifmsh->mesh_cc_id = 0; /* Disabled */ in ieee80211_start_mesh()
1191 ifmsh->sync_ops = ieee80211_mesh_sync_ops_get(ifmsh->mesh_sp_id); in ieee80211_start_mesh()
1192 ifmsh->sync_offset_clockdrift_max = 0; in ieee80211_start_mesh()
1193 set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags); in ieee80211_start_mesh()
1194 ieee80211_mesh_root_setup(ifmsh); in ieee80211_start_mesh()
1197 ifmsh->mshcfg.ht_opmode; in ieee80211_start_mesh()
1202 if (ieee80211_mesh_build_beacon(ifmsh)) { in ieee80211_start_mesh()
1217 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_stop_mesh() local
1228 ifmsh->mesh_id_len = 0; in ieee80211_stop_mesh()
1236 bcn = sdata_dereference(ifmsh->beacon, sdata); in ieee80211_stop_mesh()
1237 RCU_INIT_POINTER(ifmsh->beacon, NULL); in ieee80211_stop_mesh()
1241 local->total_ps_buffered -= skb_queue_len(&ifmsh->ps.bc_buf); in ieee80211_stop_mesh()
1242 skb_queue_purge(&ifmsh->ps.bc_buf); in ieee80211_stop_mesh()
1249 ifmsh->wrkq_flags = 0; in ieee80211_stop_mesh()
1250 memset(ifmsh->mbss_changed, 0, sizeof(ifmsh->mbss_changed)); in ieee80211_stop_mesh()
1279 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_process_chnswitch() local
1350 if (err > 0 && !ifmsh->userspace_handles_dfs) { in ieee80211_mesh_process_chnswitch()
1376 ifmsh->chsw_ttl = csa_ie.ttl - 1; in ieee80211_mesh_process_chnswitch()
1377 if (ifmsh->pre_value >= csa_ie.pre_value) in ieee80211_mesh_process_chnswitch()
1379 ifmsh->pre_value = csa_ie.pre_value; in ieee80211_mesh_process_chnswitch()
1382 if (ifmsh->chsw_ttl >= ifmsh->mshcfg.dot11MeshTTL) in ieee80211_mesh_process_chnswitch()
1385 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_REPEATER; in ieee80211_mesh_process_chnswitch()
1399 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_probe_req() local
1426 (elems->mesh_id_len != ifmsh->mesh_id_len || in ieee80211_mesh_rx_probe_req()
1427 memcmp(elems->mesh_id, ifmsh->mesh_id, ifmsh->mesh_id_len))) in ieee80211_mesh_rx_probe_req()
1431 bcn = rcu_dereference(ifmsh->beacon); in ieee80211_mesh_rx_probe_req()
1463 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_bcn_presp() local
1510 if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT && in ieee80211_mesh_rx_bcn_presp()
1515 if (ifmsh->sync_ops) in ieee80211_mesh_rx_bcn_presp()
1516 ifmsh->sync_ops->rx_bcn_presp(sdata, stype, mgmt, len, in ieee80211_mesh_rx_bcn_presp()
1524 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_finish_csa() local
1529 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE; in ieee80211_mesh_finish_csa()
1530 ifmsh->chsw_ttl = 0; in ieee80211_mesh_finish_csa()
1533 tmp_csa_settings = sdata_dereference(ifmsh->csa, sdata); in ieee80211_mesh_finish_csa()
1534 RCU_INIT_POINTER(ifmsh->csa, NULL); in ieee80211_mesh_finish_csa()
1552 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_csa_beacon() local
1566 rcu_assign_pointer(ifmsh->csa, tmp_csa_settings); in ieee80211_mesh_csa_beacon()
1570 tmp_csa_settings = rcu_dereference(ifmsh->csa); in ieee80211_mesh_csa_beacon()
1571 RCU_INIT_POINTER(ifmsh->csa, NULL); in ieee80211_mesh_csa_beacon()
1610 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_rx_csa_frame() local
1631 ifmsh->chsw_ttl = elems->mesh_chansw_params_ie->mesh_ttl; in mesh_rx_csa_frame()
1632 if (!--ifmsh->chsw_ttl) in mesh_rx_csa_frame()
1636 if (ifmsh->pre_value >= pre_value) in mesh_rx_csa_frame()
1639 ifmsh->pre_value = pre_value; in mesh_rx_csa_frame()
1715 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_bss_info_changed() local
1719 for_each_set_bit(bit, ifmsh->mbss_changed, in mesh_bss_info_changed()
1721 clear_bit(bit, ifmsh->mbss_changed); in mesh_bss_info_changed()
1738 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_work() local
1746 if (ifmsh->preq_queue_len && in ieee80211_mesh_work()
1748 ifmsh->last_preq + msecs_to_jiffies(ifmsh->mshcfg.dot11MeshHWMPpreqMinInterval))) in ieee80211_mesh_work()
1751 if (test_and_clear_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags)) in ieee80211_mesh_work()
1754 if (test_and_clear_bit(MESH_WORK_ROOT, &ifmsh->wrkq_flags)) in ieee80211_mesh_work()
1757 if (test_and_clear_bit(MESH_WORK_DRIFT_ADJUST, &ifmsh->wrkq_flags)) in ieee80211_mesh_work()
1760 if (test_and_clear_bit(MESH_WORK_MBSS_CHANGED, &ifmsh->wrkq_flags)) in ieee80211_mesh_work()
1767 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_init_sdata() local
1770 timer_setup(&ifmsh->housekeeping_timer, in ieee80211_mesh_init_sdata()
1773 ifmsh->accepting_plinks = true; in ieee80211_mesh_init_sdata()
1774 atomic_set(&ifmsh->mpaths, 0); in ieee80211_mesh_init_sdata()
1776 ifmsh->last_preq = jiffies; in ieee80211_mesh_init_sdata()
1777 ifmsh->next_perr = jiffies; in ieee80211_mesh_init_sdata()
1778 ifmsh->csa_role = IEEE80211_MESH_CSA_ROLE_NONE; in ieee80211_mesh_init_sdata()
1779 ifmsh->nonpeer_pm = NL80211_MESH_POWER_ACTIVE; in ieee80211_mesh_init_sdata()
1786 timer_setup(&ifmsh->mesh_path_timer, ieee80211_mesh_path_timer, 0); in ieee80211_mesh_init_sdata()
1787 timer_setup(&ifmsh->mesh_path_root_timer, in ieee80211_mesh_init_sdata()
1789 INIT_LIST_HEAD(&ifmsh->preq_queue.list); in ieee80211_mesh_init_sdata()
1790 skb_queue_head_init(&ifmsh->ps.bc_buf); in ieee80211_mesh_init_sdata()
1791 spin_lock_init(&ifmsh->mesh_preq_queue_lock); in ieee80211_mesh_init_sdata()
1792 spin_lock_init(&ifmsh->sync_offset_lock); in ieee80211_mesh_init_sdata()
1793 RCU_INIT_POINTER(ifmsh->beacon, NULL); in ieee80211_mesh_init_sdata()