|
@@ -736,9 +736,12 @@ static void hwmp_perr_frame_process(struct ieee80211_sub_if_data *sdata,
|
|
|
if (mpath->flags & MESH_PATH_ACTIVE &&
|
|
|
ether_addr_equal(ta, sta->sta.addr) &&
|
|
|
(!(mpath->flags & MESH_PATH_SN_VALID) ||
|
|
|
- SN_GT(target_sn, mpath->sn))) {
|
|
|
+ SN_GT(target_sn, mpath->sn) || target_sn == 0)) {
|
|
|
mpath->flags &= ~MESH_PATH_ACTIVE;
|
|
|
- mpath->sn = target_sn;
|
|
|
+ if (target_sn != 0)
|
|
|
+ mpath->sn = target_sn;
|
|
|
+ else
|
|
|
+ mpath->sn += 1;
|
|
|
spin_unlock_bh(&mpath->state_lock);
|
|
|
if (!ifmsh->mshcfg.dot11MeshForwarding)
|
|
|
goto endperr;
|