Lines Matching refs:sdata
188 static u32 mesh_table_hash(const u8 *addr, struct ieee80211_sub_if_data *sdata, in mesh_table_hash() argument
192 return jhash_2words(*(u32 *)(addr+2), sdata->dev->ifindex, in mesh_table_hash()
218 memcpy(hdr->addr2, mpath->sdata->vif.addr, ETH_ALEN); in mesh_path_assign_nexthop()
219 ieee80211_mps_set_frame_flags(sta->sdata, sta, hdr); in mesh_path_assign_nexthop()
261 memcpy(hdr->addr2, gate_mpath->sdata->vif.addr, ETH_ALEN); in prepare_for_gate()
305 mpath_dbg(gate_mpath->sdata, "mpath queue full!\n"); in mesh_path_move_to_queue()
323 mpath_dbg(gate_mpath->sdata, "Mpath queue for gate %pM has %d frames\n", in mesh_path_move_to_queue()
336 struct ieee80211_sub_if_data *sdata) in mpath_lookup() argument
342 bucket = &tbl->hash_buckets[mesh_table_hash(dst, sdata, tbl)]; in mpath_lookup()
345 if (mpath->sdata == sdata && in mpath_lookup()
368 mesh_path_lookup(struct ieee80211_sub_if_data *sdata, const u8 *dst) in mesh_path_lookup() argument
370 return mpath_lookup(rcu_dereference(mesh_paths), dst, sdata); in mesh_path_lookup()
374 mpp_path_lookup(struct ieee80211_sub_if_data *sdata, const u8 *dst) in mpp_path_lookup() argument
376 return mpath_lookup(rcu_dereference(mpp_paths), dst, sdata); in mpp_path_lookup()
390 mesh_path_lookup_by_idx(struct ieee80211_sub_if_data *sdata, int idx) in mesh_path_lookup_by_idx() argument
398 if (sdata && node->mpath->sdata != sdata) in mesh_path_lookup_by_idx()
423 mpp_path_lookup_by_idx(struct ieee80211_sub_if_data *sdata, int idx) in mpp_path_lookup_by_idx() argument
431 if (sdata && node->mpath->sdata != sdata) in mpp_path_lookup_by_idx()
466 mpath->sdata->u.mesh.num_gates++; in mesh_path_add_gate()
471 mpath_dbg(mpath->sdata, in mesh_path_add_gate()
473 mpath->dst, mpath->sdata->u.mesh.num_gates); in mesh_path_add_gate()
499 mpath->sdata->u.mesh.num_gates--; in mesh_gate_del()
501 mpath_dbg(mpath->sdata, in mesh_gate_del()
503 mpath->dst, mpath->sdata->u.mesh.num_gates); in mesh_gate_del()
512 int mesh_gate_num(struct ieee80211_sub_if_data *sdata) in mesh_gate_num() argument
514 return sdata->u.mesh.num_gates; in mesh_gate_num()
526 struct mesh_path *mesh_path_add(struct ieee80211_sub_if_data *sdata, in mesh_path_add() argument
529 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_path_add()
530 struct ieee80211_local *local = sdata->local; in mesh_path_add()
539 if (ether_addr_equal(dst, sdata->vif.addr)) in mesh_path_add()
546 if (atomic_add_unless(&sdata->u.mesh.mpaths, 1, MESH_MAX_MPATHS) == 0) in mesh_path_add()
552 hash_idx = mesh_table_hash(dst, sdata, tbl); in mesh_path_add()
559 if (mpath->sdata == sdata && in mesh_path_add()
576 new_mpath->sdata = sdata; in mesh_path_add()
595 ieee80211_queue_work(&local->hw, &sdata->work); in mesh_path_add()
606 atomic_dec(&sdata->u.mesh.mpaths); in mesh_path_add()
660 int mpp_path_add(struct ieee80211_sub_if_data *sdata, in mpp_path_add() argument
663 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mpp_path_add()
664 struct ieee80211_local *local = sdata->local; in mpp_path_add()
673 if (ether_addr_equal(dst, sdata->vif.addr)) in mpp_path_add()
692 new_mpath->sdata = sdata; in mpp_path_add()
702 hash_idx = mesh_table_hash(dst, sdata, tbl); in mpp_path_add()
710 if (mpath->sdata == sdata && in mpp_path_add()
727 ieee80211_queue_work(&local->hw, &sdata->work); in mpp_path_add()
756 struct ieee80211_sub_if_data *sdata = sta->sdata; in mesh_plink_broken() local
770 mesh_path_error_tx(sdata, in mesh_plink_broken()
771 sdata->u.mesh.mshcfg.element_ttl, in mesh_plink_broken()
792 struct ieee80211_sub_if_data *sdata = node->mpath->sdata; in __mesh_path_del() local
801 atomic_dec(&sdata->u.mesh.mpaths); in __mesh_path_del()
839 struct ieee80211_sub_if_data *sdata) in table_flush_by_iface() argument
848 if (mpath->sdata != sdata) in table_flush_by_iface()
864 void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) in mesh_path_flush_by_iface() argument
871 table_flush_by_iface(tbl, sdata); in mesh_path_flush_by_iface()
873 table_flush_by_iface(tbl, sdata); in mesh_path_flush_by_iface()
886 int mesh_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) in mesh_path_del() argument
897 hash_idx = mesh_table_hash(addr, sdata, tbl); in mesh_path_del()
903 if (mpath->sdata == sdata && in mesh_path_del()
929 ieee80211_add_pending_skbs(mpath->sdata->local, in mesh_path_tx_pending()
945 struct ieee80211_sub_if_data *sdata = mpath->sdata; in mesh_path_send_to_gates() local
961 if (gate->mpath->sdata != sdata) in mesh_path_send_to_gates()
965 mpath_dbg(sdata, "Forwarding to %pM\n", gate->mpath->dst); in mesh_path_send_to_gates()
970 mpath_dbg(sdata, in mesh_path_send_to_gates()
977 if (gate->mpath->sdata == sdata) { in mesh_path_send_to_gates()
978 mpath_dbg(sdata, "Sending to %pM\n", gate->mpath->dst); in mesh_path_send_to_gates()
993 void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, in mesh_path_discard_frame() argument
997 sdata->u.mesh.mshstats.dropped_frames_no_route++; in mesh_path_discard_frame()
1012 mesh_path_discard_frame(mpath->sdata, skb); in mesh_path_flush_pending()
1063 hash_idx = mesh_table_hash(mpath->dst, mpath->sdata, newtbl); in mesh_path_node_copy()
1116 void mesh_path_expire(struct ieee80211_sub_if_data *sdata) in mesh_path_expire() argument
1126 if (node->mpath->sdata != sdata) in mesh_path_expire()
1132 mesh_path_del(mpath->sdata, mpath->dst); in mesh_path_expire()