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: Alexis Green <agreen@cococorp.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
703ee73a41
commit
d82547106f
|
@ -1179,7 +1179,9 @@ void mesh_path_timer(unsigned long data)
|
||||||
spin_unlock_bh(&mpath->state_lock);
|
spin_unlock_bh(&mpath->state_lock);
|
||||||
mesh_queue_preq(mpath, 0);
|
mesh_queue_preq(mpath, 0);
|
||||||
} else {
|
} else {
|
||||||
mpath->flags = 0;
|
mpath->flags &= ~(MESH_PATH_RESOLVING |
|
||||||
|
MESH_PATH_RESOLVED |
|
||||||
|
MESH_PATH_REQ_QUEUED);
|
||||||
mpath->exp_time = jiffies;
|
mpath->exp_time = jiffies;
|
||||||
spin_unlock_bh(&mpath->state_lock);
|
spin_unlock_bh(&mpath->state_lock);
|
||||||
if (!mpath->is_gate && mesh_gate_num(sdata) > 0) {
|
if (!mpath->is_gate && mesh_gate_num(sdata) > 0) {
|
||||||
|
|
Loading…
Reference in New Issue