mpath              51 drivers/s390/cio/device_ops.c 	cdev->private->options.mpath = (flags & CCWDEV_DO_MULTIPATH) != 0;
mpath              80 drivers/s390/cio/device_ops.c 	cdev->private->options.mpath |= (flags & CCWDEV_DO_MULTIPATH) != 0;
mpath              97 drivers/s390/cio/device_ops.c 	cdev->private->options.mpath &= (flags & CCWDEV_DO_MULTIPATH) == 0;
mpath             120 drivers/s390/cio/device_ops.c 	return cdev->private->flags.mpath;
mpath              37 drivers/s390/cio/device_pgid.c 	int mpath = cdev->private->flags.mpath;
mpath              43 drivers/s390/cio/device_pgid.c 	if (sch->config.mp != mpath) {
mpath              44 drivers/s390/cio/device_pgid.c 		sch->config.mp = mpath;
mpath              49 drivers/s390/cio/device_pgid.c 			 "vpm=%02x\n", id->ssid, id->devno, rc, pgroup, mpath,
mpath             185 drivers/s390/cio/device_pgid.c 	if (cdev->private->flags.mpath)
mpath             209 drivers/s390/cio/device_pgid.c 	if (cdev->private->flags.mpath)
mpath             244 drivers/s390/cio/device_pgid.c 		if (cdev->private->flags.mpath) {
mpath             246 drivers/s390/cio/device_pgid.c 			cdev->private->flags.mpath = 0;
mpath             353 drivers/s390/cio/device_pgid.c 		if (cdev->private->flags.mpath) {
mpath             425 drivers/s390/cio/device_pgid.c 		cdev->private->flags.mpath = 0;
mpath             565 drivers/s390/cio/device_pgid.c 	cdev->private->flags.mpath = cdev->private->options.mpath;
mpath             582 drivers/s390/cio/device_pgid.c 	cdev->private->flags.mpath = 0;
mpath             617 drivers/s390/cio/device_pgid.c 	if (cdev->private->flags.mpath)
mpath             154 drivers/s390/cio/io_sch.h 		unsigned int mpath:1;	/* do multipathing */
mpath             165 drivers/s390/cio/io_sch.h 		unsigned int mpath:1;	    /* multipathing is set up */
mpath              75 include/net/nexthop.h 	bool			mpath;
mpath             129 include/net/nexthop.h 		return nh_grp->mpath;
mpath             144 include/net/nexthop.h 		if (nh_grp->mpath)
mpath             225 include/net/nexthop.h 		if (nh_grp->mpath) {
mpath             192 net/ipv4/nexthop.c 	if (nhg->mpath)
mpath             381 net/ipv4/nexthop.c 		if (nhg->mpath) {
mpath             726 net/ipv4/nexthop.c 	newg->mpath = nhg->mpath;
mpath            1148 net/ipv4/nexthop.c 		nhg->mpath = 1;
mpath            1725 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1737 net/mac80211/cfg.c 	mpath = mesh_path_add(sdata, dst);
mpath            1738 net/mac80211/cfg.c 	if (IS_ERR(mpath)) {
mpath            1740 net/mac80211/cfg.c 		return PTR_ERR(mpath);
mpath            1743 net/mac80211/cfg.c 	mesh_path_fix_nexthop(mpath, sta);
mpath            1765 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1778 net/mac80211/cfg.c 	mpath = mesh_path_lookup(sdata, dst);
mpath            1779 net/mac80211/cfg.c 	if (!mpath) {
mpath            1784 net/mac80211/cfg.c 	mesh_path_fix_nexthop(mpath, sta);
mpath            1790 net/mac80211/cfg.c static void mpath_set_pinfo(struct mesh_path *mpath, u8 *next_hop,
mpath            1793 net/mac80211/cfg.c 	struct sta_info *next_hop_sta = rcu_dereference(mpath->next_hop);
mpath            1802 net/mac80211/cfg.c 	pinfo->generation = mpath->sdata->u.mesh.mesh_paths_generation;
mpath            1814 net/mac80211/cfg.c 	pinfo->frame_qlen = mpath->frame_queue.qlen;
mpath            1815 net/mac80211/cfg.c 	pinfo->sn = mpath->sn;
mpath            1816 net/mac80211/cfg.c 	pinfo->metric = mpath->metric;
mpath            1817 net/mac80211/cfg.c 	if (time_before(jiffies, mpath->exp_time))
mpath            1818 net/mac80211/cfg.c 		pinfo->exptime = jiffies_to_msecs(mpath->exp_time - jiffies);
mpath            1820 net/mac80211/cfg.c 			jiffies_to_msecs(mpath->discovery_timeout);
mpath            1821 net/mac80211/cfg.c 	pinfo->discovery_retries = mpath->discovery_retries;
mpath            1822 net/mac80211/cfg.c 	if (mpath->flags & MESH_PATH_ACTIVE)
mpath            1824 net/mac80211/cfg.c 	if (mpath->flags & MESH_PATH_RESOLVING)
mpath            1826 net/mac80211/cfg.c 	if (mpath->flags & MESH_PATH_SN_VALID)
mpath            1828 net/mac80211/cfg.c 	if (mpath->flags & MESH_PATH_FIXED)
mpath            1830 net/mac80211/cfg.c 	if (mpath->flags & MESH_PATH_RESOLVED)
mpath            1832 net/mac80211/cfg.c 	pinfo->hop_count = mpath->hop_count;
mpath            1833 net/mac80211/cfg.c 	pinfo->path_change_count = mpath->path_change_count;
mpath            1841 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1846 net/mac80211/cfg.c 	mpath = mesh_path_lookup(sdata, dst);
mpath            1847 net/mac80211/cfg.c 	if (!mpath) {
mpath            1851 net/mac80211/cfg.c 	memcpy(dst, mpath->dst, ETH_ALEN);
mpath            1852 net/mac80211/cfg.c 	mpath_set_pinfo(mpath, next_hop, pinfo);
mpath            1862 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1867 net/mac80211/cfg.c 	mpath = mesh_path_lookup_by_idx(sdata, idx);
mpath            1868 net/mac80211/cfg.c 	if (!mpath) {
mpath            1872 net/mac80211/cfg.c 	memcpy(dst, mpath->dst, ETH_ALEN);
mpath            1873 net/mac80211/cfg.c 	mpath_set_pinfo(mpath, next_hop, pinfo);
mpath            1878 net/mac80211/cfg.c static void mpp_set_pinfo(struct mesh_path *mpath, u8 *mpp,
mpath            1882 net/mac80211/cfg.c 	memcpy(mpp, mpath->mpp, ETH_ALEN);
mpath            1884 net/mac80211/cfg.c 	pinfo->generation = mpath->sdata->u.mesh.mpp_paths_generation;
mpath            1892 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1897 net/mac80211/cfg.c 	mpath = mpp_path_lookup(sdata, dst);
mpath            1898 net/mac80211/cfg.c 	if (!mpath) {
mpath            1902 net/mac80211/cfg.c 	memcpy(dst, mpath->dst, ETH_ALEN);
mpath            1903 net/mac80211/cfg.c 	mpp_set_pinfo(mpath, mpp, pinfo);
mpath            1913 net/mac80211/cfg.c 	struct mesh_path *mpath;
mpath            1918 net/mac80211/cfg.c 	mpath = mpp_path_lookup_by_idx(sdata, idx);
mpath            1919 net/mac80211/cfg.c 	if (!mpath) {
mpath            1923 net/mac80211/cfg.c 	memcpy(dst, mpath->dst, ETH_ALEN);
mpath            1924 net/mac80211/cfg.c 	mpp_set_pinfo(mpath, mpp, pinfo);
mpath             272 net/mac80211/mesh.h void mesh_path_fix_nexthop(struct mesh_path *mpath, struct sta_info *next_hop);
mpath             279 net/mac80211/mesh.h int mesh_path_add_gate(struct mesh_path *mpath);
mpath             280 net/mac80211/mesh.h int mesh_path_send_to_gates(struct mesh_path *mpath);
mpath             306 net/mac80211/mesh.h void mesh_path_assign_nexthop(struct mesh_path *mpath, struct sta_info *sta);
mpath             307 net/mac80211/mesh.h void mesh_path_flush_pending(struct mesh_path *mpath);
mpath             308 net/mac80211/mesh.h void mesh_path_tx_pending(struct mesh_path *mpath);
mpath             347 net/mac80211/mesh.h static inline void mesh_path_activate(struct mesh_path *mpath)
mpath             349 net/mac80211/mesh.h 	mpath->flags |= MESH_PATH_ACTIVE | MESH_PATH_RESOLVED;
mpath             385 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath             442 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_lookup(sdata, orig_addr);
mpath             443 net/mac80211/mesh_hwmp.c 		if (mpath) {
mpath             444 net/mac80211/mesh_hwmp.c 			spin_lock_bh(&mpath->state_lock);
mpath             445 net/mac80211/mesh_hwmp.c 			if (mpath->flags & MESH_PATH_FIXED)
mpath             447 net/mac80211/mesh_hwmp.c 			else if ((mpath->flags & MESH_PATH_ACTIVE) &&
mpath             448 net/mac80211/mesh_hwmp.c 			    (mpath->flags & MESH_PATH_SN_VALID)) {
mpath             449 net/mac80211/mesh_hwmp.c 				if (SN_GT(mpath->sn, orig_sn) ||
mpath             450 net/mac80211/mesh_hwmp.c 				    (mpath->sn == orig_sn &&
mpath             451 net/mac80211/mesh_hwmp.c 				     (rcu_access_pointer(mpath->next_hop) !=
mpath             454 net/mac80211/mesh_hwmp.c 					      new_metric) >= mpath->metric)) {
mpath             458 net/mac80211/mesh_hwmp.c 			} else if (!(mpath->flags & MESH_PATH_ACTIVE)) {
mpath             461 net/mac80211/mesh_hwmp.c 				have_sn = mpath->flags & MESH_PATH_SN_VALID;
mpath             462 net/mac80211/mesh_hwmp.c 				newer_sn = have_sn && SN_GT(orig_sn, mpath->sn);
mpath             464 net/mac80211/mesh_hwmp.c 					  (SN_DELTA(orig_sn, mpath->sn) >
mpath             480 net/mac80211/mesh_hwmp.c 			mpath = mesh_path_add(sdata, orig_addr);
mpath             481 net/mac80211/mesh_hwmp.c 			if (IS_ERR(mpath)) {
mpath             485 net/mac80211/mesh_hwmp.c 			spin_lock_bh(&mpath->state_lock);
mpath             489 net/mac80211/mesh_hwmp.c 			if (rcu_access_pointer(mpath->next_hop) != sta)
mpath             490 net/mac80211/mesh_hwmp.c 				mpath->path_change_count++;
mpath             491 net/mac80211/mesh_hwmp.c 			mesh_path_assign_nexthop(mpath, sta);
mpath             492 net/mac80211/mesh_hwmp.c 			mpath->flags |= MESH_PATH_SN_VALID;
mpath             493 net/mac80211/mesh_hwmp.c 			mpath->metric = new_metric;
mpath             494 net/mac80211/mesh_hwmp.c 			mpath->sn = orig_sn;
mpath             495 net/mac80211/mesh_hwmp.c 			mpath->exp_time = time_after(mpath->exp_time, exp_time)
mpath             496 net/mac80211/mesh_hwmp.c 					  ?  mpath->exp_time : exp_time;
mpath             497 net/mac80211/mesh_hwmp.c 			mpath->hop_count = hopcount;
mpath             498 net/mac80211/mesh_hwmp.c 			mesh_path_activate(mpath);
mpath             499 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             503 net/mac80211/mesh_hwmp.c 			mesh_path_tx_pending(mpath);
mpath             508 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             518 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_lookup(sdata, ta);
mpath             519 net/mac80211/mesh_hwmp.c 		if (mpath) {
mpath             520 net/mac80211/mesh_hwmp.c 			spin_lock_bh(&mpath->state_lock);
mpath             521 net/mac80211/mesh_hwmp.c 			if ((mpath->flags & MESH_PATH_FIXED) ||
mpath             522 net/mac80211/mesh_hwmp.c 			    ((mpath->flags & MESH_PATH_ACTIVE) &&
mpath             523 net/mac80211/mesh_hwmp.c 			     ((rcu_access_pointer(mpath->next_hop) != sta ?
mpath             525 net/mac80211/mesh_hwmp.c 				       last_hop_metric) > mpath->metric)))
mpath             528 net/mac80211/mesh_hwmp.c 			mpath = mesh_path_add(sdata, ta);
mpath             529 net/mac80211/mesh_hwmp.c 			if (IS_ERR(mpath)) {
mpath             533 net/mac80211/mesh_hwmp.c 			spin_lock_bh(&mpath->state_lock);
mpath             537 net/mac80211/mesh_hwmp.c 			if (rcu_access_pointer(mpath->next_hop) != sta)
mpath             538 net/mac80211/mesh_hwmp.c 				mpath->path_change_count++;
mpath             539 net/mac80211/mesh_hwmp.c 			mesh_path_assign_nexthop(mpath, sta);
mpath             540 net/mac80211/mesh_hwmp.c 			mpath->metric = last_hop_metric;
mpath             541 net/mac80211/mesh_hwmp.c 			mpath->exp_time = time_after(mpath->exp_time, exp_time)
mpath             542 net/mac80211/mesh_hwmp.c 					  ?  mpath->exp_time : exp_time;
mpath             543 net/mac80211/mesh_hwmp.c 			mpath->hop_count = 1;
mpath             544 net/mac80211/mesh_hwmp.c 			mesh_path_activate(mpath);
mpath             545 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             549 net/mac80211/mesh_hwmp.c 			mesh_path_tx_pending(mpath);
mpath             551 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             564 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath = NULL;
mpath             604 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_lookup(sdata, orig_addr);
mpath             605 net/mac80211/mesh_hwmp.c 		if (mpath) {
mpath             614 net/mac80211/mesh_hwmp.c 				mesh_path_add_gate(mpath);
mpath             619 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_lookup(sdata, target_addr);
mpath             620 net/mac80211/mesh_hwmp.c 		if (mpath) {
mpath             621 net/mac80211/mesh_hwmp.c 			if ((!(mpath->flags & MESH_PATH_SN_VALID)) ||
mpath             622 net/mac80211/mesh_hwmp.c 					SN_LT(mpath->sn, target_sn)) {
mpath             623 net/mac80211/mesh_hwmp.c 				mpath->sn = target_sn;
mpath             624 net/mac80211/mesh_hwmp.c 				mpath->flags |= MESH_PATH_SN_VALID;
mpath             626 net/mac80211/mesh_hwmp.c 					(mpath->flags & MESH_PATH_ACTIVE)) {
mpath             628 net/mac80211/mesh_hwmp.c 				target_metric = mpath->metric;
mpath             629 net/mac80211/mesh_hwmp.c 				target_sn = mpath->sn;
mpath             666 net/mac80211/mesh_hwmp.c 		da = (mpath && mpath->is_root) ?
mpath             667 net/mac80211/mesh_hwmp.c 			mpath->rann_snd_addr : broadcast_addr;
mpath             688 net/mac80211/mesh_hwmp.c next_hop_deref_protected(struct mesh_path *mpath)
mpath             690 net/mac80211/mesh_hwmp.c 	return rcu_dereference_protected(mpath->next_hop,
mpath             691 net/mac80211/mesh_hwmp.c 					 lockdep_is_held(&mpath->state_lock));
mpath             700 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath             724 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, orig_addr);
mpath             725 net/mac80211/mesh_hwmp.c 	if (mpath)
mpath             726 net/mac80211/mesh_hwmp.c 		spin_lock_bh(&mpath->state_lock);
mpath             729 net/mac80211/mesh_hwmp.c 	if (!(mpath->flags & MESH_PATH_ACTIVE)) {
mpath             730 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath             733 net/mac80211/mesh_hwmp.c 	memcpy(next_hop, next_hop_deref_protected(mpath)->sta.addr, ETH_ALEN);
mpath             734 net/mac80211/mesh_hwmp.c 	spin_unlock_bh(&mpath->state_lock);
mpath             762 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath             780 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, target_addr);
mpath             781 net/mac80211/mesh_hwmp.c 	if (mpath) {
mpath             784 net/mac80211/mesh_hwmp.c 		spin_lock_bh(&mpath->state_lock);
mpath             785 net/mac80211/mesh_hwmp.c 		sta = next_hop_deref_protected(mpath);
mpath             786 net/mac80211/mesh_hwmp.c 		if (mpath->flags & MESH_PATH_ACTIVE &&
mpath             788 net/mac80211/mesh_hwmp.c 		    !(mpath->flags & MESH_PATH_FIXED) &&
mpath             789 net/mac80211/mesh_hwmp.c 		    (!(mpath->flags & MESH_PATH_SN_VALID) ||
mpath             790 net/mac80211/mesh_hwmp.c 		    SN_GT(target_sn, mpath->sn)  || target_sn == 0)) {
mpath             791 net/mac80211/mesh_hwmp.c 			mpath->flags &= ~MESH_PATH_ACTIVE;
mpath             793 net/mac80211/mesh_hwmp.c 				mpath->sn = target_sn;
mpath             795 net/mac80211/mesh_hwmp.c 				mpath->sn += 1;
mpath             796 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             803 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath             816 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath             852 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, orig_addr);
mpath             853 net/mac80211/mesh_hwmp.c 	if (!mpath) {
mpath             854 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_add(sdata, orig_addr);
mpath             855 net/mac80211/mesh_hwmp.c 		if (IS_ERR(mpath)) {
mpath             862 net/mac80211/mesh_hwmp.c 	if (!(SN_LT(mpath->sn, orig_sn)) &&
mpath             863 net/mac80211/mesh_hwmp.c 	    !(mpath->sn == orig_sn && new_metric < mpath->rann_metric)) {
mpath             868 net/mac80211/mesh_hwmp.c 	if ((!(mpath->flags & (MESH_PATH_ACTIVE | MESH_PATH_RESOLVING)) ||
mpath             869 net/mac80211/mesh_hwmp.c 	     (time_after(jiffies, mpath->last_preq_to_root +
mpath             871 net/mac80211/mesh_hwmp.c 	     time_before(jiffies, mpath->last_preq_to_root))) &&
mpath             872 net/mac80211/mesh_hwmp.c 	     !(mpath->flags & MESH_PATH_FIXED) && (ttl != 0)) {
mpath             876 net/mac80211/mesh_hwmp.c 		mesh_queue_preq(mpath, PREQ_Q_F_START | PREQ_Q_F_REFRESH);
mpath             877 net/mac80211/mesh_hwmp.c 		mpath->last_preq_to_root = jiffies;
mpath             880 net/mac80211/mesh_hwmp.c 	mpath->sn = orig_sn;
mpath             881 net/mac80211/mesh_hwmp.c 	mpath->rann_metric = new_metric;
mpath             882 net/mac80211/mesh_hwmp.c 	mpath->is_root = true;
mpath             885 net/mac80211/mesh_hwmp.c 	memcpy(mpath->rann_snd_addr, mgmt->sa, ETH_ALEN);
mpath             888 net/mac80211/mesh_hwmp.c 		mesh_path_add_gate(mpath);
mpath             971 net/mac80211/mesh_hwmp.c static void mesh_queue_preq(struct mesh_path *mpath, u8 flags)
mpath             973 net/mac80211/mesh_hwmp.c 	struct ieee80211_sub_if_data *sdata = mpath->sdata;
mpath             992 net/mac80211/mesh_hwmp.c 	spin_lock(&mpath->state_lock);
mpath             993 net/mac80211/mesh_hwmp.c 	if (mpath->flags & MESH_PATH_REQ_QUEUED) {
mpath             994 net/mac80211/mesh_hwmp.c 		spin_unlock(&mpath->state_lock);
mpath            1000 net/mac80211/mesh_hwmp.c 	memcpy(preq_node->dst, mpath->dst, ETH_ALEN);
mpath            1003 net/mac80211/mesh_hwmp.c 	mpath->flags |= MESH_PATH_REQ_QUEUED;
mpath            1004 net/mac80211/mesh_hwmp.c 	spin_unlock(&mpath->state_lock);
mpath            1033 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath            1053 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, preq_node->dst);
mpath            1054 net/mac80211/mesh_hwmp.c 	if (!mpath)
mpath            1057 net/mac80211/mesh_hwmp.c 	spin_lock_bh(&mpath->state_lock);
mpath            1058 net/mac80211/mesh_hwmp.c 	if (mpath->flags & (MESH_PATH_DELETED | MESH_PATH_FIXED)) {
mpath            1059 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1062 net/mac80211/mesh_hwmp.c 	mpath->flags &= ~MESH_PATH_REQ_QUEUED;
mpath            1064 net/mac80211/mesh_hwmp.c 		if (mpath->flags & MESH_PATH_RESOLVING) {
mpath            1065 net/mac80211/mesh_hwmp.c 			spin_unlock_bh(&mpath->state_lock);
mpath            1068 net/mac80211/mesh_hwmp.c 			mpath->flags &= ~MESH_PATH_RESOLVED;
mpath            1069 net/mac80211/mesh_hwmp.c 			mpath->flags |= MESH_PATH_RESOLVING;
mpath            1070 net/mac80211/mesh_hwmp.c 			mpath->discovery_retries = 0;
mpath            1071 net/mac80211/mesh_hwmp.c 			mpath->discovery_timeout = disc_timeout_jiff(sdata);
mpath            1073 net/mac80211/mesh_hwmp.c 	} else if (!(mpath->flags & MESH_PATH_RESOLVING) ||
mpath            1074 net/mac80211/mesh_hwmp.c 			mpath->flags & MESH_PATH_RESOLVED) {
mpath            1075 net/mac80211/mesh_hwmp.c 		mpath->flags &= ~MESH_PATH_RESOLVING;
mpath            1076 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1092 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1101 net/mac80211/mesh_hwmp.c 	spin_unlock_bh(&mpath->state_lock);
mpath            1102 net/mac80211/mesh_hwmp.c 	da = (mpath->is_root) ? mpath->rann_snd_addr : broadcast_addr;
mpath            1104 net/mac80211/mesh_hwmp.c 			       target_flags, mpath->dst, mpath->sn, da, 0,
mpath            1107 net/mac80211/mesh_hwmp.c 	spin_lock_bh(&mpath->state_lock);
mpath            1108 net/mac80211/mesh_hwmp.c 	if (mpath->flags & MESH_PATH_DELETED) {
mpath            1109 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1112 net/mac80211/mesh_hwmp.c 	mod_timer(&mpath->timer, jiffies + mpath->discovery_timeout);
mpath            1113 net/mac80211/mesh_hwmp.c 	spin_unlock_bh(&mpath->state_lock);
mpath            1137 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath            1153 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, target_addr);
mpath            1154 net/mac80211/mesh_hwmp.c 	if (!mpath) {
mpath            1155 net/mac80211/mesh_hwmp.c 		mpath = mesh_path_add(sdata, target_addr);
mpath            1156 net/mac80211/mesh_hwmp.c 		if (IS_ERR(mpath)) {
mpath            1158 net/mac80211/mesh_hwmp.c 			return PTR_ERR(mpath);
mpath            1162 net/mac80211/mesh_hwmp.c 	if (!(mpath->flags & MESH_PATH_RESOLVING) &&
mpath            1164 net/mac80211/mesh_hwmp.c 		mesh_queue_preq(mpath, PREQ_Q_F_START);
mpath            1166 net/mac80211/mesh_hwmp.c 	if (skb_queue_len(&mpath->frame_queue) >= MESH_FRAME_QUEUE_LEN)
mpath            1167 net/mac80211/mesh_hwmp.c 		skb_to_free = skb_dequeue(&mpath->frame_queue);
mpath            1171 net/mac80211/mesh_hwmp.c 	skb_queue_tail(&mpath->frame_queue, skb);
mpath            1191 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath;
mpath            1196 net/mac80211/mesh_hwmp.c 	mpath = mesh_path_lookup(sdata, target_addr);
mpath            1197 net/mac80211/mesh_hwmp.c 	if (!mpath || !(mpath->flags & MESH_PATH_ACTIVE))
mpath            1201 net/mac80211/mesh_hwmp.c 		       mpath->exp_time -
mpath            1204 net/mac80211/mesh_hwmp.c 	    !(mpath->flags & MESH_PATH_RESOLVING) &&
mpath            1205 net/mac80211/mesh_hwmp.c 	    !(mpath->flags & MESH_PATH_FIXED))
mpath            1206 net/mac80211/mesh_hwmp.c 		mesh_queue_preq(mpath, PREQ_Q_F_START | PREQ_Q_F_REFRESH);
mpath            1208 net/mac80211/mesh_hwmp.c 	next_hop = rcu_dereference(mpath->next_hop);
mpath            1221 net/mac80211/mesh_hwmp.c 	struct mesh_path *mpath = from_timer(mpath, t, timer);
mpath            1222 net/mac80211/mesh_hwmp.c 	struct ieee80211_sub_if_data *sdata = mpath->sdata;
mpath            1228 net/mac80211/mesh_hwmp.c 	spin_lock_bh(&mpath->state_lock);
mpath            1229 net/mac80211/mesh_hwmp.c 	if (mpath->flags & MESH_PATH_RESOLVED ||
mpath            1230 net/mac80211/mesh_hwmp.c 			(!(mpath->flags & MESH_PATH_RESOLVING))) {
mpath            1231 net/mac80211/mesh_hwmp.c 		mpath->flags &= ~(MESH_PATH_RESOLVING | MESH_PATH_RESOLVED);
mpath            1232 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1233 net/mac80211/mesh_hwmp.c 	} else if (mpath->discovery_retries < max_preq_retries(sdata)) {
mpath            1234 net/mac80211/mesh_hwmp.c 		++mpath->discovery_retries;
mpath            1235 net/mac80211/mesh_hwmp.c 		mpath->discovery_timeout *= 2;
mpath            1236 net/mac80211/mesh_hwmp.c 		mpath->flags &= ~MESH_PATH_REQ_QUEUED;
mpath            1237 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1238 net/mac80211/mesh_hwmp.c 		mesh_queue_preq(mpath, 0);
mpath            1240 net/mac80211/mesh_hwmp.c 		mpath->flags &= ~(MESH_PATH_RESOLVING |
mpath            1243 net/mac80211/mesh_hwmp.c 		mpath->exp_time = jiffies;
mpath            1244 net/mac80211/mesh_hwmp.c 		spin_unlock_bh(&mpath->state_lock);
mpath            1245 net/mac80211/mesh_hwmp.c 		if (!mpath->is_gate && mesh_gate_num(sdata) > 0) {
mpath            1246 net/mac80211/mesh_hwmp.c 			ret = mesh_path_send_to_gates(mpath);
mpath            1250 net/mac80211/mesh_hwmp.c 			mesh_path_flush_pending(mpath);
mpath              18 net/mac80211/mesh_pathtbl.c static void mesh_path_free_rcu(struct mesh_table *tbl, struct mesh_path *mpath);
mpath              35 net/mac80211/mesh_pathtbl.c static inline bool mpath_expired(struct mesh_path *mpath)
mpath              37 net/mac80211/mesh_pathtbl.c 	return (mpath->flags & MESH_PATH_ACTIVE) &&
mpath              38 net/mac80211/mesh_pathtbl.c 	       time_after(jiffies, mpath->exp_time) &&
mpath              39 net/mac80211/mesh_pathtbl.c 	       !(mpath->flags & MESH_PATH_FIXED);
mpath              44 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath = ptr;
mpath              47 net/mac80211/mesh_pathtbl.c 	mesh_path_free_rcu(tbl, mpath);
mpath              83 net/mac80211/mesh_pathtbl.c void mesh_path_assign_nexthop(struct mesh_path *mpath, struct sta_info *sta)
mpath              89 net/mac80211/mesh_pathtbl.c 	rcu_assign_pointer(mpath->next_hop, sta);
mpath              91 net/mac80211/mesh_pathtbl.c 	spin_lock_irqsave(&mpath->frame_queue.lock, flags);
mpath              92 net/mac80211/mesh_pathtbl.c 	skb_queue_walk(&mpath->frame_queue, skb) {
mpath              95 net/mac80211/mesh_pathtbl.c 		memcpy(hdr->addr2, mpath->sdata->vif.addr, ETH_ALEN);
mpath              99 net/mac80211/mesh_pathtbl.c 	spin_unlock_irqrestore(&mpath->frame_queue.lock, flags);
mpath             215 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             217 net/mac80211/mesh_pathtbl.c 	mpath = rhashtable_lookup(&tbl->rhead, dst, mesh_rht_params);
mpath             219 net/mac80211/mesh_pathtbl.c 	if (mpath && mpath_expired(mpath)) {
mpath             220 net/mac80211/mesh_pathtbl.c 		spin_lock_bh(&mpath->state_lock);
mpath             221 net/mac80211/mesh_pathtbl.c 		mpath->flags &= ~MESH_PATH_ACTIVE;
mpath             222 net/mac80211/mesh_pathtbl.c 		spin_unlock_bh(&mpath->state_lock);
mpath             224 net/mac80211/mesh_pathtbl.c 	return mpath;
mpath             252 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             254 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
mpath             259 net/mac80211/mesh_pathtbl.c 	if (!mpath)
mpath             262 net/mac80211/mesh_pathtbl.c 	if (mpath_expired(mpath)) {
mpath             263 net/mac80211/mesh_pathtbl.c 		spin_lock_bh(&mpath->state_lock);
mpath             264 net/mac80211/mesh_pathtbl.c 		mpath->flags &= ~MESH_PATH_ACTIVE;
mpath             265 net/mac80211/mesh_pathtbl.c 		spin_unlock_bh(&mpath->state_lock);
mpath             267 net/mac80211/mesh_pathtbl.c 	return mpath;
mpath             304 net/mac80211/mesh_pathtbl.c int mesh_path_add_gate(struct mesh_path *mpath)
mpath             310 net/mac80211/mesh_pathtbl.c 	tbl = mpath->sdata->u.mesh.mesh_paths;
mpath             312 net/mac80211/mesh_pathtbl.c 	spin_lock_bh(&mpath->state_lock);
mpath             313 net/mac80211/mesh_pathtbl.c 	if (mpath->is_gate) {
mpath             315 net/mac80211/mesh_pathtbl.c 		spin_unlock_bh(&mpath->state_lock);
mpath             318 net/mac80211/mesh_pathtbl.c 	mpath->is_gate = true;
mpath             319 net/mac80211/mesh_pathtbl.c 	mpath->sdata->u.mesh.num_gates++;
mpath             322 net/mac80211/mesh_pathtbl.c 	hlist_add_head_rcu(&mpath->gate_list, &tbl->known_gates);
mpath             325 net/mac80211/mesh_pathtbl.c 	spin_unlock_bh(&mpath->state_lock);
mpath             327 net/mac80211/mesh_pathtbl.c 	mpath_dbg(mpath->sdata,
mpath             329 net/mac80211/mesh_pathtbl.c 		  mpath->dst, mpath->sdata->u.mesh.num_gates);
mpath             341 net/mac80211/mesh_pathtbl.c static void mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath)
mpath             343 net/mac80211/mesh_pathtbl.c 	lockdep_assert_held(&mpath->state_lock);
mpath             344 net/mac80211/mesh_pathtbl.c 	if (!mpath->is_gate)
mpath             347 net/mac80211/mesh_pathtbl.c 	mpath->is_gate = false;
mpath             349 net/mac80211/mesh_pathtbl.c 	hlist_del_rcu(&mpath->gate_list);
mpath             350 net/mac80211/mesh_pathtbl.c 	mpath->sdata->u.mesh.num_gates--;
mpath             353 net/mac80211/mesh_pathtbl.c 	mpath_dbg(mpath->sdata,
mpath             355 net/mac80211/mesh_pathtbl.c 		  mpath->dst, mpath->sdata->u.mesh.num_gates);
mpath             403 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath, *new_mpath;
mpath             421 net/mac80211/mesh_pathtbl.c 	mpath = rhashtable_lookup_get_insert_fast(&tbl->rhead,
mpath             424 net/mac80211/mesh_pathtbl.c 	if (!mpath)
mpath             428 net/mac80211/mesh_pathtbl.c 	if (mpath) {
mpath             431 net/mac80211/mesh_pathtbl.c 		if (IS_ERR(mpath))
mpath             432 net/mac80211/mesh_pathtbl.c 			return mpath;
mpath             434 net/mac80211/mesh_pathtbl.c 		new_mpath = mpath;
mpath             492 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             495 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_rcu(mpath, &tbl->walk_head, walk_list) {
mpath             496 net/mac80211/mesh_pathtbl.c 		if (rcu_access_pointer(mpath->next_hop) == sta &&
mpath             497 net/mac80211/mesh_pathtbl.c 		    mpath->flags & MESH_PATH_ACTIVE &&
mpath             498 net/mac80211/mesh_pathtbl.c 		    !(mpath->flags & MESH_PATH_FIXED)) {
mpath             499 net/mac80211/mesh_pathtbl.c 			spin_lock_bh(&mpath->state_lock);
mpath             500 net/mac80211/mesh_pathtbl.c 			mpath->flags &= ~MESH_PATH_ACTIVE;
mpath             501 net/mac80211/mesh_pathtbl.c 			++mpath->sn;
mpath             502 net/mac80211/mesh_pathtbl.c 			spin_unlock_bh(&mpath->state_lock);
mpath             505 net/mac80211/mesh_pathtbl.c 				mpath->dst, mpath->sn,
mpath             513 net/mac80211/mesh_pathtbl.c 			       struct mesh_path *mpath)
mpath             515 net/mac80211/mesh_pathtbl.c 	struct ieee80211_sub_if_data *sdata = mpath->sdata;
mpath             517 net/mac80211/mesh_pathtbl.c 	spin_lock_bh(&mpath->state_lock);
mpath             518 net/mac80211/mesh_pathtbl.c 	mpath->flags |= MESH_PATH_RESOLVING | MESH_PATH_DELETED;
mpath             519 net/mac80211/mesh_pathtbl.c 	mesh_gate_del(tbl, mpath);
mpath             520 net/mac80211/mesh_pathtbl.c 	spin_unlock_bh(&mpath->state_lock);
mpath             521 net/mac80211/mesh_pathtbl.c 	del_timer_sync(&mpath->timer);
mpath             524 net/mac80211/mesh_pathtbl.c 	kfree_rcu(mpath, rcu);
mpath             527 net/mac80211/mesh_pathtbl.c static void __mesh_path_del(struct mesh_table *tbl, struct mesh_path *mpath)
mpath             529 net/mac80211/mesh_pathtbl.c 	hlist_del_rcu(&mpath->walk_list);
mpath             530 net/mac80211/mesh_pathtbl.c 	rhashtable_remove_fast(&tbl->rhead, &mpath->rhash, mesh_rht_params);
mpath             531 net/mac80211/mesh_pathtbl.c 	mesh_path_free_rcu(tbl, mpath);
mpath             549 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             553 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
mpath             554 net/mac80211/mesh_pathtbl.c 		if (rcu_access_pointer(mpath->next_hop) == sta)
mpath             555 net/mac80211/mesh_pathtbl.c 			__mesh_path_del(tbl, mpath);
mpath             564 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             568 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
mpath             569 net/mac80211/mesh_pathtbl.c 		if (ether_addr_equal(mpath->mpp, proxy))
mpath             570 net/mac80211/mesh_pathtbl.c 			__mesh_path_del(tbl, mpath);
mpath             577 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             581 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
mpath             582 net/mac80211/mesh_pathtbl.c 		__mesh_path_del(tbl, mpath);
mpath             614 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             617 net/mac80211/mesh_pathtbl.c 	mpath = rhashtable_lookup_fast(&tbl->rhead, addr, mesh_rht_params);
mpath             618 net/mac80211/mesh_pathtbl.c 	if (!mpath) {
mpath             623 net/mac80211/mesh_pathtbl.c 	__mesh_path_del(tbl, mpath);
mpath             657 net/mac80211/mesh_pathtbl.c void mesh_path_tx_pending(struct mesh_path *mpath)
mpath             659 net/mac80211/mesh_pathtbl.c 	if (mpath->flags & MESH_PATH_ACTIVE)
mpath             660 net/mac80211/mesh_pathtbl.c 		ieee80211_add_pending_skbs(mpath->sdata->local,
mpath             661 net/mac80211/mesh_pathtbl.c 				&mpath->frame_queue);
mpath             674 net/mac80211/mesh_pathtbl.c int mesh_path_send_to_gates(struct mesh_path *mpath)
mpath             676 net/mac80211/mesh_pathtbl.c 	struct ieee80211_sub_if_data *sdata = mpath->sdata;
mpath             678 net/mac80211/mesh_pathtbl.c 	struct mesh_path *from_mpath = mpath;
mpath             704 net/mac80211/mesh_pathtbl.c 	return (from_mpath == mpath) ? -EHOSTUNREACH : 0;
mpath             729 net/mac80211/mesh_pathtbl.c void mesh_path_flush_pending(struct mesh_path *mpath)
mpath             733 net/mac80211/mesh_pathtbl.c 	while ((skb = skb_dequeue(&mpath->frame_queue)) != NULL)
mpath             734 net/mac80211/mesh_pathtbl.c 		mesh_path_discard_frame(mpath->sdata, skb);
mpath             745 net/mac80211/mesh_pathtbl.c void mesh_path_fix_nexthop(struct mesh_path *mpath, struct sta_info *next_hop)
mpath             747 net/mac80211/mesh_pathtbl.c 	spin_lock_bh(&mpath->state_lock);
mpath             748 net/mac80211/mesh_pathtbl.c 	mesh_path_assign_nexthop(mpath, next_hop);
mpath             749 net/mac80211/mesh_pathtbl.c 	mpath->sn = 0xffff;
mpath             750 net/mac80211/mesh_pathtbl.c 	mpath->metric = 0;
mpath             751 net/mac80211/mesh_pathtbl.c 	mpath->hop_count = 0;
mpath             752 net/mac80211/mesh_pathtbl.c 	mpath->exp_time = 0;
mpath             753 net/mac80211/mesh_pathtbl.c 	mpath->flags = MESH_PATH_FIXED | MESH_PATH_SN_VALID;
mpath             754 net/mac80211/mesh_pathtbl.c 	mesh_path_activate(mpath);
mpath             755 net/mac80211/mesh_pathtbl.c 	spin_unlock_bh(&mpath->state_lock);
mpath             759 net/mac80211/mesh_pathtbl.c 	mesh_path_tx_pending(mpath);
mpath             794 net/mac80211/mesh_pathtbl.c 	struct mesh_path *mpath;
mpath             798 net/mac80211/mesh_pathtbl.c 	hlist_for_each_entry_safe(mpath, n, &tbl->walk_head, walk_list) {
mpath             799 net/mac80211/mesh_pathtbl.c 		if ((!(mpath->flags & MESH_PATH_RESOLVING)) &&
mpath             800 net/mac80211/mesh_pathtbl.c 		    (!(mpath->flags & MESH_PATH_FIXED)) &&
mpath             801 net/mac80211/mesh_pathtbl.c 		     time_after(jiffies, mpath->exp_time + MESH_PATH_EXPIRE))
mpath             802 net/mac80211/mesh_pathtbl.c 			__mesh_path_del(tbl, mpath);
mpath            2472 net/mac80211/tx.c 	struct mesh_path __maybe_unused *mppath = NULL, *mpath = NULL;
mpath            2556 net/mac80211/tx.c 			mpath = mesh_path_lookup(sdata, skb->data);
mpath            2557 net/mac80211/tx.c 			if (mpath) {
mpath            2559 net/mac80211/tx.c 				next_hop = rcu_dereference(mpath->next_hop);
mpath            2561 net/mac80211/tx.c 				    !(mpath->flags & (MESH_PATH_ACTIVE |
mpath            2572 net/mac80211/tx.c 			if (mppath && mpath)
mpath            2573 net/mac80211/tx.c 				mesh_path_del(sdata, mpath->dst);
mpath            2599 net/mac80211/tx.c 			else if (mpath)
mpath            2600 net/mac80211/tx.c 				mesh_da = mpath->dst;