Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8254710 authored by Jesse Jones's avatar Jesse Jones Committed by Johannes Berg
Browse files

mac80211: mesh: don't invalidate SN on discovery failure



The 2012 spec mentions that path SNs can be invalid when created (see
section 13.10.8.4 table 13-9) but AFAICT never talks about invalidating
SNs. Which makes sense: if we have figured out the path to a target at a
certain SN then we want to remember that fact. Failing to do so can lead
to routing loops because if we don't have a valid SN then we have no way
of knowing whether an incoming path message leads to or away from the
target.

However currently when discovery fails we zero out mpath->flags which
clears MESH_PATH_SN_VALID. This patch fixes that so that only the
discovery relevant flags are cleared.

Signed-off-by: default avatarAlexis Green <agreen@cococorp.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 703ee73a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1179,7 +1179,9 @@ void mesh_path_timer(unsigned long data)
		spin_unlock_bh(&mpath->state_lock);
		mesh_queue_preq(mpath, 0);
	} else {
		mpath->flags = 0;
		mpath->flags &= ~(MESH_PATH_RESOLVING |
				  MESH_PATH_RESOLVED |
				  MESH_PATH_REQ_QUEUED);
		mpath->exp_time = jiffies;
		spin_unlock_bh(&mpath->state_lock);
		if (!mpath->is_gate && mesh_gate_num(sdata) > 0) {