Lines Matching refs:sdata

44 	struct ieee80211_sub_if_data *sdata = (void *) data;  in ieee80211_mesh_housekeeping_timer()  local
45 struct ieee80211_local *local = sdata->local; in ieee80211_mesh_housekeeping_timer()
46 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_housekeeping_timer()
50 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_mesh_housekeeping_timer()
62 bool mesh_matches_local(struct ieee80211_sub_if_data *sdata, in mesh_matches_local() argument
65 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_matches_local()
88 ieee80211_sta_get_rates(sdata, ie, ieee80211_get_sdata_band(sdata), in mesh_matches_local()
91 if (sdata->vif.bss_conf.basic_rates != basic_rates) in mesh_matches_local()
94 ieee80211_ht_oper_to_chandef(sdata->vif.bss_conf.chandef.chan, in mesh_matches_local()
97 ieee80211_vht_oper_to_chandef(sdata->vif.bss_conf.chandef.chan, in mesh_matches_local()
100 if (!cfg80211_chandef_compatible(&sdata->vif.bss_conf.chandef, in mesh_matches_local()
125 u32 mesh_accept_plinks_update(struct ieee80211_sub_if_data *sdata) in mesh_accept_plinks_update() argument
136 free_plinks = mesh_plink_availables(sdata); in mesh_accept_plinks_update()
138 if (free_plinks != sdata->u.mesh.accepting_plinks) { in mesh_accept_plinks_update()
139 sdata->u.mesh.accepting_plinks = free_plinks; in mesh_accept_plinks_update()
153 struct ieee80211_sub_if_data *sdata = sta->sdata; in mesh_sta_cleanup() local
161 changed = mesh_accept_plinks_update(sdata); in mesh_sta_cleanup()
162 if (!sdata->u.mesh.user_mpm) { in mesh_sta_cleanup()
168 ieee80211_mbss_info_change_notify(sdata, changed); in mesh_sta_cleanup()
171 int mesh_rmc_init(struct ieee80211_sub_if_data *sdata) in mesh_rmc_init() argument
175 sdata->u.mesh.rmc = kmalloc(sizeof(struct mesh_rmc), GFP_KERNEL); in mesh_rmc_init()
176 if (!sdata->u.mesh.rmc) in mesh_rmc_init()
178 sdata->u.mesh.rmc->idx_mask = RMC_BUCKETS - 1; in mesh_rmc_init()
180 INIT_LIST_HEAD(&sdata->u.mesh.rmc->bucket[i]); in mesh_rmc_init()
184 void mesh_rmc_free(struct ieee80211_sub_if_data *sdata) in mesh_rmc_free() argument
186 struct mesh_rmc *rmc = sdata->u.mesh.rmc; in mesh_rmc_free()
190 if (!sdata->u.mesh.rmc) in mesh_rmc_free()
201 sdata->u.mesh.rmc = NULL; in mesh_rmc_free()
217 int mesh_rmc_check(struct ieee80211_sub_if_data *sdata, in mesh_rmc_check() argument
220 struct mesh_rmc *rmc = sdata->u.mesh.rmc; in mesh_rmc_check()
251 int mesh_add_meshconf_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_meshconf_ie() argument
254 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshconf_ie()
298 int mesh_add_meshid_ie(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) in mesh_add_meshid_ie() argument
300 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_meshid_ie()
315 static int mesh_add_awake_window_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_awake_window_ie() argument
318 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_awake_window_ie()
338 int mesh_add_vendor_ies(struct ieee80211_sub_if_data *sdata, in mesh_add_vendor_ies() argument
341 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_vendor_ies()
362 int mesh_add_rsn_ie(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) in mesh_add_rsn_ie() argument
364 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_add_rsn_ie()
385 static int mesh_add_ds_params_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_ds_params_ie() argument
396 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in mesh_add_ds_params_ie()
412 int mesh_add_ht_cap_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_ht_cap_ie() argument
415 struct ieee80211_local *local = sdata->local; in mesh_add_ht_cap_ie()
416 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in mesh_add_ht_cap_ie()
422 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT || in mesh_add_ht_cap_ie()
423 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 || in mesh_add_ht_cap_ie()
424 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_10) in mesh_add_ht_cap_ie()
436 int mesh_add_ht_oper_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_ht_oper_ie() argument
439 struct ieee80211_local *local = sdata->local; in mesh_add_ht_oper_ie()
447 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in mesh_add_ht_oper_ie()
459 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT || in mesh_add_ht_oper_ie()
460 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 || in mesh_add_ht_oper_ie()
461 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_10) in mesh_add_ht_oper_ie()
468 ieee80211_ie_build_ht_oper(pos, ht_cap, &sdata->vif.bss_conf.chandef, in mesh_add_ht_oper_ie()
469 sdata->vif.bss_conf.ht_operation_mode, in mesh_add_ht_oper_ie()
475 int mesh_add_vht_cap_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_vht_cap_ie() argument
478 struct ieee80211_local *local = sdata->local; in mesh_add_vht_cap_ie()
479 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in mesh_add_vht_cap_ie()
485 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT || in mesh_add_vht_cap_ie()
486 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 || in mesh_add_vht_cap_ie()
487 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_10) in mesh_add_vht_cap_ie()
499 int mesh_add_vht_oper_ie(struct ieee80211_sub_if_data *sdata, in mesh_add_vht_oper_ie() argument
502 struct ieee80211_local *local = sdata->local; in mesh_add_vht_oper_ie()
510 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in mesh_add_vht_oper_ie()
522 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT || in mesh_add_vht_oper_ie()
523 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 || in mesh_add_vht_oper_ie()
524 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_10) in mesh_add_vht_oper_ie()
532 &sdata->vif.bss_conf.chandef); in mesh_add_vht_oper_ie()
539 struct ieee80211_sub_if_data *sdata = in ieee80211_mesh_path_timer() local
542 ieee80211_queue_work(&sdata->local->hw, &sdata->work); in ieee80211_mesh_path_timer()
547 struct ieee80211_sub_if_data *sdata = in ieee80211_mesh_path_root_timer() local
549 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_path_root_timer()
553 ieee80211_queue_work(&sdata->local->hw, &sdata->work); in ieee80211_mesh_path_root_timer()
610 unsigned int ieee80211_new_mesh_header(struct ieee80211_sub_if_data *sdata, in ieee80211_new_mesh_header() argument
619 meshhdr->ttl = sdata->u.mesh.mshcfg.dot11MeshTTL; in ieee80211_new_mesh_header()
622 put_unaligned(cpu_to_le32(sdata->u.mesh.mesh_seqnum), &meshhdr->seqnum); in ieee80211_new_mesh_header()
623 sdata->u.mesh.mesh_seqnum++; in ieee80211_new_mesh_header()
639 static void ieee80211_mesh_housekeeping(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_housekeeping() argument
641 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_housekeeping()
645 ieee80211_sta_expire(sdata, ifmsh->mshcfg.plink_timeout * HZ); in ieee80211_mesh_housekeeping()
646 mesh_path_expire(sdata); in ieee80211_mesh_housekeeping()
648 changed = mesh_accept_plinks_update(sdata); in ieee80211_mesh_housekeeping()
649 ieee80211_mbss_info_change_notify(sdata, changed); in ieee80211_mesh_housekeeping()
656 static void ieee80211_mesh_rootpath(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_rootpath() argument
658 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rootpath()
661 mesh_path_tx_root_frame(sdata); in ieee80211_mesh_rootpath()
683 struct ieee80211_sub_if_data *sdata; in ieee80211_mesh_build_beacon() local
687 sdata = container_of(ifmsh, struct ieee80211_sub_if_data, u.mesh); in ieee80211_mesh_build_beacon()
689 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf); in ieee80211_mesh_build_beacon()
730 memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); in ieee80211_mesh_build_beacon()
731 memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); in ieee80211_mesh_build_beacon()
732 ieee80211_mps_set_frame_flags(sdata, NULL, (void *) mgmt); in ieee80211_mesh_build_beacon()
734 cpu_to_le16(sdata->vif.bss_conf.beacon_int); in ieee80211_mesh_build_beacon()
736 sdata->u.mesh.security ? WLAN_CAPABILITY_PRIVACY : 0); in ieee80211_mesh_build_beacon()
772 if (ieee80211_add_srates_ie(sdata, skb, true, band) || in ieee80211_mesh_build_beacon()
773 mesh_add_ds_params_ie(sdata, skb)) in ieee80211_mesh_build_beacon()
783 if (ieee80211_add_ext_srates_ie(sdata, skb, true, band) || in ieee80211_mesh_build_beacon()
784 mesh_add_rsn_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
785 mesh_add_ht_cap_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
786 mesh_add_ht_oper_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
787 mesh_add_meshid_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
788 mesh_add_meshconf_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
789 mesh_add_awake_window_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
790 mesh_add_vht_cap_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
791 mesh_add_vht_oper_ie(sdata, skb) || in ieee80211_mesh_build_beacon()
792 mesh_add_vendor_ies(sdata, skb)) in ieee80211_mesh_build_beacon()
810 ieee80211_mesh_rebuild_beacon(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_rebuild_beacon() argument
815 old_bcn = rcu_dereference_protected(sdata->u.mesh.beacon, in ieee80211_mesh_rebuild_beacon()
816 lockdep_is_held(&sdata->wdev.mtx)); in ieee80211_mesh_rebuild_beacon()
817 ret = ieee80211_mesh_build_beacon(&sdata->u.mesh); in ieee80211_mesh_rebuild_beacon()
827 void ieee80211_mbss_info_change_notify(struct ieee80211_sub_if_data *sdata, in ieee80211_mbss_info_change_notify() argument
830 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mbss_info_change_notify()
841 ieee80211_queue_work(&sdata->local->hw, &sdata->work); in ieee80211_mbss_info_change_notify()
844 int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata) in ieee80211_start_mesh() argument
846 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_start_mesh()
847 struct ieee80211_local *local = sdata->local; in ieee80211_start_mesh()
866 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_start_mesh()
867 sdata->vif.bss_conf.ht_operation_mode = in ieee80211_start_mesh()
869 sdata->vif.bss_conf.enable_beacon = true; in ieee80211_start_mesh()
871 changed |= ieee80211_mps_local_status_update(sdata); in ieee80211_start_mesh()
874 ieee80211_stop_mesh(sdata); in ieee80211_start_mesh()
878 ieee80211_recalc_dtim(local, sdata); in ieee80211_start_mesh()
879 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_start_mesh()
881 netif_carrier_on(sdata->dev); in ieee80211_start_mesh()
885 void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata) in ieee80211_stop_mesh() argument
887 struct ieee80211_local *local = sdata->local; in ieee80211_stop_mesh()
888 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_stop_mesh()
891 netif_carrier_off(sdata->dev); in ieee80211_stop_mesh()
895 sdata->vif.bss_conf.enable_beacon = false; in ieee80211_stop_mesh()
896 clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state); in ieee80211_stop_mesh()
897 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED); in ieee80211_stop_mesh()
899 lockdep_is_held(&sdata->wdev.mtx)); in ieee80211_stop_mesh()
904 sta_info_flush(sdata); in ieee80211_stop_mesh()
905 mesh_path_flush_by_iface(sdata); in ieee80211_stop_mesh()
911 del_timer_sync(&sdata->u.mesh.housekeeping_timer); in ieee80211_stop_mesh()
912 del_timer_sync(&sdata->u.mesh.mesh_path_root_timer); in ieee80211_stop_mesh()
913 del_timer_sync(&sdata->u.mesh.mesh_path_timer); in ieee80211_stop_mesh()
925 ieee80211_mesh_process_chnswitch(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_process_chnswitch() argument
930 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_process_chnswitch()
931 enum ieee80211_band band = ieee80211_get_sdata_band(sdata); in ieee80211_mesh_process_chnswitch()
935 sdata_assert_lock(sdata); in ieee80211_mesh_process_chnswitch()
938 switch (sdata->vif.bss_conf.chandef.width) { in ieee80211_mesh_process_chnswitch()
950 err = ieee80211_parse_ch_switch_ie(sdata, elems, band, in ieee80211_mesh_process_chnswitch()
951 sta_flags, sdata->vif.addr, in ieee80211_mesh_process_chnswitch()
961 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, &params.chandef, in ieee80211_mesh_process_chnswitch()
963 sdata_info(sdata, in ieee80211_mesh_process_chnswitch()
965 sdata->vif.addr, in ieee80211_mesh_process_chnswitch()
973 err = cfg80211_chandef_dfs_required(sdata->local->hw.wiphy, in ieee80211_mesh_process_chnswitch()
985 &sdata->vif.bss_conf.chandef)) { in ieee80211_mesh_process_chnswitch()
986 mcsa_dbg(sdata, in ieee80211_mesh_process_chnswitch()
991 mcsa_dbg(sdata, in ieee80211_mesh_process_chnswitch()
1008 if (ieee80211_channel_switch(sdata->local->hw.wiphy, sdata->dev, in ieee80211_mesh_process_chnswitch()
1016 ieee80211_mesh_rx_probe_req(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_rx_probe_req() argument
1019 struct ieee80211_local *local = sdata->local; in ieee80211_mesh_rx_probe_req()
1020 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_probe_req()
1039 if ((!ether_addr_equal(mgmt->da, sdata->vif.addr) && in ieee80211_mesh_rx_probe_req()
1068 ieee80211_tx_skb(sdata, presp); in ieee80211_mesh_rx_probe_req()
1073 static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_rx_bcn_presp() argument
1079 struct ieee80211_local *local = sdata->local; in ieee80211_mesh_rx_bcn_presp()
1080 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_rx_bcn_presp()
1089 !ether_addr_equal(mgmt->da, sdata->vif.addr)) in ieee80211_mesh_rx_bcn_presp()
1101 (elems.rsn && sdata->u.mesh.security == IEEE80211_MESH_SEC_NONE) || in ieee80211_mesh_rx_bcn_presp()
1102 (!elems.rsn && sdata->u.mesh.security != IEEE80211_MESH_SEC_NONE)) in ieee80211_mesh_rx_bcn_presp()
1115 if (mesh_matches_local(sdata, &elems)) in ieee80211_mesh_rx_bcn_presp()
1116 mesh_neighbour_update(sdata, mgmt->sa, &elems); in ieee80211_mesh_rx_bcn_presp()
1119 ifmsh->sync_ops->rx_bcn_presp(sdata, in ieee80211_mesh_rx_bcn_presp()
1123 !sdata->vif.csa_active) in ieee80211_mesh_rx_bcn_presp()
1124 ieee80211_mesh_process_chnswitch(sdata, &elems, true); in ieee80211_mesh_rx_bcn_presp()
1127 int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_finish_csa() argument
1129 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_finish_csa()
1143 ret = ieee80211_mesh_rebuild_beacon(sdata); in ieee80211_mesh_finish_csa()
1149 mcsa_dbg(sdata, "complete switching to center freq %d MHz", in ieee80211_mesh_finish_csa()
1150 sdata->vif.bss_conf.chandef.chan->center_freq); in ieee80211_mesh_finish_csa()
1154 int ieee80211_mesh_csa_beacon(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_csa_beacon() argument
1157 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_csa_beacon()
1171 ret = ieee80211_mesh_rebuild_beacon(sdata); in ieee80211_mesh_csa_beacon()
1182 static int mesh_fwd_csa_frame(struct ieee80211_sub_if_data *sdata, in mesh_fwd_csa_frame() argument
1187 struct ieee80211_local *local = sdata->local; in mesh_fwd_csa_frame()
1207 memcpy(mgmt_fwd->sa, sdata->vif.addr, ETH_ALEN); in mesh_fwd_csa_frame()
1208 memcpy(mgmt_fwd->bssid, sdata->vif.addr, ETH_ALEN); in mesh_fwd_csa_frame()
1210 ieee80211_tx_skb(sdata, skb); in mesh_fwd_csa_frame()
1214 static void mesh_rx_csa_frame(struct ieee80211_sub_if_data *sdata, in mesh_rx_csa_frame() argument
1217 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_rx_csa_frame()
1243 if (!sdata->vif.csa_active && in mesh_rx_csa_frame()
1244 !ieee80211_mesh_process_chnswitch(sdata, &elems, false)) { in mesh_rx_csa_frame()
1245 mcsa_dbg(sdata, "Failed to process CSA action frame"); in mesh_rx_csa_frame()
1251 if (mesh_fwd_csa_frame(sdata, mgmt, len) < 0) in mesh_rx_csa_frame()
1252 mcsa_dbg(sdata, "Failed to forward the CSA frame"); in mesh_rx_csa_frame()
1256 static void ieee80211_mesh_rx_mgmt_action(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_rx_mgmt_action() argument
1267 mesh_rx_plink_frame(sdata, mgmt, len, rx_status); in ieee80211_mesh_rx_mgmt_action()
1273 mesh_rx_path_sel_frame(sdata, mgmt, len); in ieee80211_mesh_rx_mgmt_action()
1276 mesh_rx_csa_frame(sdata, mgmt, len); in ieee80211_mesh_rx_mgmt_action()
1281 void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, in ieee80211_mesh_rx_queued_mgmt() argument
1288 sdata_lock(sdata); in ieee80211_mesh_rx_queued_mgmt()
1291 if (!sdata->u.mesh.mesh_id_len) in ieee80211_mesh_rx_queued_mgmt()
1301 ieee80211_mesh_rx_bcn_presp(sdata, stype, mgmt, skb->len, in ieee80211_mesh_rx_queued_mgmt()
1305 ieee80211_mesh_rx_probe_req(sdata, mgmt, skb->len); in ieee80211_mesh_rx_queued_mgmt()
1308 ieee80211_mesh_rx_mgmt_action(sdata, mgmt, skb->len, rx_status); in ieee80211_mesh_rx_queued_mgmt()
1312 sdata_unlock(sdata); in ieee80211_mesh_rx_queued_mgmt()
1315 static void mesh_bss_info_changed(struct ieee80211_sub_if_data *sdata) in mesh_bss_info_changed() argument
1317 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_bss_info_changed()
1326 if (sdata->vif.bss_conf.enable_beacon && in mesh_bss_info_changed()
1331 if (ieee80211_mesh_rebuild_beacon(sdata)) in mesh_bss_info_changed()
1334 ieee80211_bss_info_change_notify(sdata, changed); in mesh_bss_info_changed()
1337 void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_work() argument
1339 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_work()
1341 sdata_lock(sdata); in ieee80211_mesh_work()
1344 if (!sdata->u.mesh.mesh_id_len) in ieee80211_mesh_work()
1350 mesh_path_start_discovery(sdata); in ieee80211_mesh_work()
1359 ieee80211_mesh_housekeeping(sdata); in ieee80211_mesh_work()
1362 ieee80211_mesh_rootpath(sdata); in ieee80211_mesh_work()
1365 mesh_sync_adjust_tbtt(sdata); in ieee80211_mesh_work()
1368 mesh_bss_info_changed(sdata); in ieee80211_mesh_work()
1370 sdata_unlock(sdata); in ieee80211_mesh_work()
1374 void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata) in ieee80211_mesh_init_sdata() argument
1376 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in ieee80211_mesh_init_sdata()
1381 (unsigned long) sdata); in ieee80211_mesh_init_sdata()
1385 mesh_rmc_init(sdata); in ieee80211_mesh_init_sdata()
1394 (unsigned long) sdata); in ieee80211_mesh_init_sdata()
1397 (unsigned long) sdata); in ieee80211_mesh_init_sdata()
1404 sdata->vif.bss_conf.bssid = zero_addr; in ieee80211_mesh_init_sdata()