1st) a PREQ should only be processed, if it has the same SN and better metric (instead of better or equal). 2nd) next_hop[ETH_ALEN] now actually used to buffer mpath->next_hop->sta.addr for use out of lock. Signed-off-by: Marco Porsch <marco.porsch@xxxxxxxxxxx> Acked-by: Javier Cardona <javier@xxxxxxxxxxx> --- net/mac80211/mesh_hwmp.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -upr a/net/mac80211/rx.c b/net/mac80211/rx.c --- a/net/mac80211/mesh_hwmp.c 2010-02-18 14:44:47.000000000 +0100 +++ b/net/mac80211/mesh_hwmp.c 2010-02-18 14:45:32.000000000 +0100 @@ -391,7 +391,7 @@ static u32 hwmp_route_info_get(struct ie if (SN_GT(mpath->sn, orig_sn) || (mpath->sn == orig_sn && action == MPATH_PREQ && - new_metric > mpath->metric)) { + new_metric >= mpath->metric)) { process = false; fresh_info = false; } @@ -611,7 +611,7 @@ static void hwmp_prep_frame_process(stru mesh_path_sel_frame_tx(MPATH_PREP, flags, orig_addr, cpu_to_le32(orig_sn), 0, target_addr, - cpu_to_le32(target_sn), mpath->next_hop->sta.addr, hopcount, + cpu_to_le32(target_sn), next_hop, hopcount, ttl, cpu_to_le32(lifetime), cpu_to_le32(metric), 0, sdata); rcu_read_unlock(); -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html