Lines Matching full:mesh
13 #include "mesh.h"
43 timer_container_of(sdata, t, u.mesh.housekeeping_timer); in ieee80211_mesh_housekeeping_timer()
45 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_housekeeping_timer()
53 * mesh_matches_local - check if the config of a mesh point matches ours
55 * @sdata: local mesh subif
56 * @ie: information elements of a management frame from the mesh peer
58 * This function checks if the mesh configuration of a mesh point matches the
59 * local mesh configuration, i.e. if both nodes belong to the same mesh network.
61 * Returns: %true if both nodes belong to the same mesh
66 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_matches_local()
74 * - On mesh config capabilities in mesh_matches_local()
125 * @ie: information elements of a management frame from the mesh peer
127 * Returns: %true if the mesh peer is willing to establish peer links
136 * mesh_accept_plinks_update - update accepting_plink in local mesh beacons
138 * @sdata: mesh interface in which mesh beacons are going to be updated
148 * the mesh interface might be able to establish plinks with peers that in mesh_accept_plinks_update()
150 * in general the mesh interface is not accepting peer link requests in mesh_accept_plinks_update()
155 if (free_plinks != sdata->u.mesh.accepting_plinks) { in mesh_accept_plinks_update()
156 sdata->u.mesh.accepting_plinks = free_plinks; in mesh_accept_plinks_update()
164 * mesh_sta_cleanup - clean up any mesh sta state
166 * @sta: mesh sta to clean up.
181 sdata->u.mesh.rmc = kmalloc(sizeof(struct mesh_rmc), GFP_KERNEL); in mesh_rmc_init()
182 if (!sdata->u.mesh.rmc) in mesh_rmc_init()
184 sdata->u.mesh.rmc->idx_mask = RMC_BUCKETS - 1; in mesh_rmc_init()
186 INIT_HLIST_HEAD(&sdata->u.mesh.rmc->bucket[i]); in mesh_rmc_init()
192 struct mesh_rmc *rmc = sdata->u.mesh.rmc; in mesh_rmc_free()
197 if (!sdata->u.mesh.rmc) in mesh_rmc_free()
208 sdata->u.mesh.rmc = NULL; in mesh_rmc_free()
220 * Checks using the source address and the mesh sequence number if we have
227 struct mesh_rmc *rmc = sdata->u.mesh.rmc; in mesh_rmc_check()
265 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshconf_ie()
293 /* Mesh Formation Info - number of neighbors */ in mesh_add_meshconf_ie()
299 /* Mesh capability */ in mesh_add_meshconf_ie()
305 /* Mesh PS mode. See IEEE802.11-2012 8.4.2.100.8 */ in mesh_add_meshconf_ie()
313 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshid_ie()
331 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_awake_window_ie()
354 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_vendor_ies()
377 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_rsn_ie()
629 /* The device doesn't support HE in mesh mode or at all */ in mesh_add_he_6ghz_cap_ie()
687 timer_container_of(sdata, t, u.mesh.mesh_path_timer); in ieee80211_mesh_path_timer()
695 timer_container_of(sdata, t, u.mesh.mesh_path_root_timer); in ieee80211_mesh_path_root_timer()
696 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_path_root_timer()
750 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_xmit_fast()
829 put_unaligned_le32(atomic_inc_return(&sdata->u.mesh.mesh_seqnum), in ieee80211_mesh_xmit_fast()
831 meshhdr->ttl = sdata->u.mesh.mshcfg.dot11MeshTTL; in ieee80211_mesh_xmit_fast()
843 * ieee80211_fill_mesh_addresses - fill addresses of a locally originated mesh frame
846 * @meshda: destination address in the mesh
847 * @meshsa: source address in the mesh. Same as TA, as frame is
850 * Returns: the length of the 802.11 frame header (excludes mesh control header)
874 * ieee80211_new_mesh_header - create a new mesh header
875 * @sdata: mesh interface to be used
876 * @meshhdr: uninitialized mesh header
881 * mesh frame
894 meshhdr->ttl = sdata->u.mesh.mshcfg.dot11MeshTTL; in ieee80211_new_mesh_header()
896 put_unaligned_le32(atomic_inc_return(&sdata->u.mesh.mesh_seqnum), in ieee80211_new_mesh_header()
914 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_housekeeping()
933 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rootpath()
961 sdata = container_of(ifmsh, struct ieee80211_sub_if_data, u.mesh); in ieee80211_mesh_build_beacon()
971 /* Mesh Channel Switch Parameters */ in ieee80211_mesh_build_beacon()
1019 sdata->u.mesh.security ? WLAN_CAPABILITY_PRIVACY : 0); in ieee80211_mesh_build_beacon()
1143 old_bcn = sdata_dereference(sdata->u.mesh.beacon, sdata); in ieee80211_mesh_rebuild_beacon()
1144 ret = ieee80211_mesh_build_beacon(&sdata->u.mesh); in ieee80211_mesh_rebuild_beacon()
1157 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mbss_info_change_notify()
1173 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_start_mesh()
1183 /* mesh ifaces must set allmulti to forward mcast traffic */ in ieee80211_start_mesh()
1215 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_stop_mesh()
1242 timer_delete_sync(&sdata->u.mesh.housekeeping_timer); in ieee80211_stop_mesh()
1243 timer_delete_sync(&sdata->u.mesh.mesh_path_root_timer); in ieee80211_stop_mesh()
1244 timer_delete_sync(&sdata->u.mesh.mesh_path_timer); in ieee80211_stop_mesh()
1246 /* clear any mesh work (for next join) we may have accrued */ in ieee80211_stop_mesh()
1277 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_process_chnswitch()
1334 … "mesh STA %pM switches to unsupported channel (%d MHz, width:%d, CF1/2: %d/%d MHz), aborting\n", in ieee80211_mesh_process_chnswitch()
1350 … "mesh STA %pM switches to channel requiring DFS (%d MHz, width:%d, CF1/2: %d/%d MHz), aborting\n", in ieee80211_mesh_process_chnswitch()
1397 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_probe_req()
1461 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_bcn_presp()
1483 /* ignore non-mesh or secure / insecure mismatch */ in ieee80211_mesh_rx_bcn_presp()
1485 (elems->rsn && sdata->u.mesh.security == IEEE80211_MESH_SEC_NONE) || in ieee80211_mesh_rx_bcn_presp()
1486 (!elems->rsn && sdata->u.mesh.security != IEEE80211_MESH_SEC_NONE)) in ieee80211_mesh_rx_bcn_presp()
1501 sdata->u.mesh.mshcfg.rssi_threshold, rx_status->signal); in ieee80211_mesh_rx_bcn_presp()
1502 if (!sdata->u.mesh.user_mpm || in ieee80211_mesh_rx_bcn_presp()
1503 sdata->u.mesh.mshcfg.rssi_threshold == 0 || in ieee80211_mesh_rx_bcn_presp()
1504 sdata->u.mesh.mshcfg.rssi_threshold < rx_status->signal) in ieee80211_mesh_rx_bcn_presp()
1522 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_finish_csa()
1550 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_csa_beacon()
1608 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_rx_csa_frame()
1688 /* mesh already went down */ in ieee80211_mesh_rx_queued_mgmt()
1689 if (!sdata->u.mesh.mesh_id_len) in ieee80211_mesh_rx_queued_mgmt()
1713 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_bss_info_changed()
1736 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_work()
1740 /* mesh already went down */ in ieee80211_mesh_work()
1741 if (!sdata->u.mesh.mesh_id_len) in ieee80211_mesh_work()
1765 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_init_sdata()
1778 /* Allocate all mesh structures when creating the first mesh interface. */ in ieee80211_mesh_init_sdata()