Lines Matching refs:sdata
187 static u32 mesh_table_hash(const u8 *addr, struct ieee80211_sub_if_data *sdata, in mesh_table_hash() argument
191 return jhash_2words(*(u32 *)(addr+2), sdata->dev->ifindex, in mesh_table_hash()
217 memcpy(hdr->addr2, mpath->sdata->vif.addr, ETH_ALEN); in mesh_path_assign_nexthop()
218 ieee80211_mps_set_frame_flags(sta->sdata, sta, hdr); in mesh_path_assign_nexthop()
260 memcpy(hdr->addr2, gate_mpath->sdata->vif.addr, ETH_ALEN); in prepare_for_gate()
302 mpath_dbg(gate_mpath->sdata, "mpath queue full!\n"); in mesh_path_move_to_queue()
320 mpath_dbg(gate_mpath->sdata, "Mpath queue for gate %pM has %d frames\n", in mesh_path_move_to_queue()
333 struct ieee80211_sub_if_data *sdata) in mpath_lookup() argument
339 bucket = &tbl->hash_buckets[mesh_table_hash(dst, sdata, tbl)]; in mpath_lookup()
342 if (mpath->sdata == sdata && in mpath_lookup()
365 mesh_path_lookup(struct ieee80211_sub_if_data *sdata, const u8 *dst) in mesh_path_lookup() argument
367 return mpath_lookup(rcu_dereference(mesh_paths), dst, sdata); in mesh_path_lookup()
371 mpp_path_lookup(struct ieee80211_sub_if_data *sdata, const u8 *dst) in mpp_path_lookup() argument
373 return mpath_lookup(rcu_dereference(mpp_paths), dst, sdata); in mpp_path_lookup()
387 mesh_path_lookup_by_idx(struct ieee80211_sub_if_data *sdata, int idx) in mesh_path_lookup_by_idx() argument
395 if (sdata && node->mpath->sdata != sdata) in mesh_path_lookup_by_idx()
436 mpath->sdata->u.mesh.num_gates++; in mesh_path_add_gate()
441 mpath_dbg(mpath->sdata, in mesh_path_add_gate()
443 mpath->dst, mpath->sdata->u.mesh.num_gates); in mesh_path_add_gate()
469 mpath->sdata->u.mesh.num_gates--; in mesh_gate_del()
471 mpath_dbg(mpath->sdata, in mesh_gate_del()
473 mpath->dst, mpath->sdata->u.mesh.num_gates); in mesh_gate_del()
482 int mesh_gate_num(struct ieee80211_sub_if_data *sdata) in mesh_gate_num() argument
484 return sdata->u.mesh.num_gates; in mesh_gate_num()
496 struct mesh_path *mesh_path_add(struct ieee80211_sub_if_data *sdata, in mesh_path_add() argument
499 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mesh_path_add()
500 struct ieee80211_local *local = sdata->local; in mesh_path_add()
509 if (ether_addr_equal(dst, sdata->vif.addr)) in mesh_path_add()
516 if (atomic_add_unless(&sdata->u.mesh.mpaths, 1, MESH_MAX_MPATHS) == 0) in mesh_path_add()
522 hash_idx = mesh_table_hash(dst, sdata, tbl); in mesh_path_add()
529 if (mpath->sdata == sdata && in mesh_path_add()
546 new_mpath->sdata = sdata; in mesh_path_add()
565 ieee80211_queue_work(&local->hw, &sdata->work); in mesh_path_add()
576 atomic_dec(&sdata->u.mesh.mpaths); in mesh_path_add()
630 int mpp_path_add(struct ieee80211_sub_if_data *sdata, in mpp_path_add() argument
633 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; in mpp_path_add()
634 struct ieee80211_local *local = sdata->local; in mpp_path_add()
643 if (ether_addr_equal(dst, sdata->vif.addr)) in mpp_path_add()
662 new_mpath->sdata = sdata; in mpp_path_add()
672 hash_idx = mesh_table_hash(dst, sdata, tbl); in mpp_path_add()
680 if (mpath->sdata == sdata && in mpp_path_add()
694 ieee80211_queue_work(&local->hw, &sdata->work); in mpp_path_add()
723 struct ieee80211_sub_if_data *sdata = sta->sdata; in mesh_plink_broken() local
738 mesh_path_error_tx(sdata, in mesh_plink_broken()
739 sdata->u.mesh.mshcfg.element_ttl, in mesh_plink_broken()
750 struct ieee80211_sub_if_data *sdata = node->mpath->sdata; in mesh_path_node_reclaim() local
753 atomic_dec(&sdata->u.mesh.mpaths); in mesh_path_node_reclaim()
807 struct ieee80211_sub_if_data *sdata) in table_flush_by_iface() argument
816 if (mpath->sdata != sdata) in table_flush_by_iface()
832 void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) in mesh_path_flush_by_iface() argument
839 table_flush_by_iface(tbl, sdata); in mesh_path_flush_by_iface()
841 table_flush_by_iface(tbl, sdata); in mesh_path_flush_by_iface()
854 int mesh_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) in mesh_path_del() argument
865 hash_idx = mesh_table_hash(addr, sdata, tbl); in mesh_path_del()
871 if (mpath->sdata == sdata && in mesh_path_del()
897 ieee80211_add_pending_skbs(mpath->sdata->local, in mesh_path_tx_pending()
913 struct ieee80211_sub_if_data *sdata = mpath->sdata; in mesh_path_send_to_gates() local
929 if (gate->mpath->sdata != sdata) in mesh_path_send_to_gates()
933 mpath_dbg(sdata, "Forwarding to %pM\n", gate->mpath->dst); in mesh_path_send_to_gates()
938 mpath_dbg(sdata, in mesh_path_send_to_gates()
945 if (gate->mpath->sdata == sdata) { in mesh_path_send_to_gates()
946 mpath_dbg(sdata, "Sending to %pM\n", gate->mpath->dst); in mesh_path_send_to_gates()
961 void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, in mesh_path_discard_frame() argument
965 sdata->u.mesh.mshstats.dropped_frames_no_route++; in mesh_path_discard_frame()
980 mesh_path_discard_frame(mpath->sdata, skb); in mesh_path_flush_pending()
1031 hash_idx = mesh_table_hash(mpath->dst, mpath->sdata, newtbl); in mesh_path_node_copy()
1084 void mesh_path_expire(struct ieee80211_sub_if_data *sdata) in mesh_path_expire() argument
1094 if (node->mpath->sdata != sdata) in mesh_path_expire()
1100 mesh_path_del(mpath->sdata, mpath->dst); in mesh_path_expire()