2011-05-06 22:11:57

by Javier Cardona

[permalink] [raw]
Subject: [PATCH] mac80211: Only process mesh PREPs with equal seq number if metric is better.

From: Fabrice Deyber <[email protected]>

This fixes routing loops in PREP propagation and is in accordance with Draft
11, Section: 11C.9.8.4.

Signed-off-by: Fabrice Deyber <[email protected]>
Signed-off-by: Javier Cardona <[email protected]>
---
net/mac80211/mesh_hwmp.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index e57f2e7..849fecd 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -391,7 +391,6 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
(mpath->flags & MESH_PATH_SN_VALID)) {
if (SN_GT(mpath->sn, orig_sn) ||
(mpath->sn == orig_sn &&
- action == MPATH_PREQ &&
new_metric >= mpath->metric)) {
process = false;
fresh_info = false;
--
1.7.1



2011-05-06 22:17:35

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Only process mesh PREPs with equal seq number if metric is better.

On Fri, 2011-05-06 at 15:11 -0700, Javier Cardona wrote:
> From: Fabrice Deyber <[email protected]>
>
> This fixes routing loops in PREP propagation and is in accordance with Draft
> 11, Section: 11C.9.8.4.

> +++ b/net/mac80211/mesh_hwmp.c
> @@ -391,7 +391,6 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
> (mpath->flags & MESH_PATH_SN_VALID)) {
> if (SN_GT(mpath->sn, orig_sn) ||
> (mpath->sn == orig_sn &&
> - action == MPATH_PREQ &&

I don't understand how removing the action comparison maps to the patch
description -- can you explain a bit more?

johannes


2011-05-06 22:28:25

by Javier Cardona

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Only process mesh PREPs with equal seq number if metric is better.

On Fri, May 6, 2011 at 3:17 PM, Johannes Berg <[email protected]> wrote:
> On Fri, 2011-05-06 at 15:11 -0700, Javier Cardona wrote:
>> From: Fabrice Deyber <[email protected]>
>>
>> This fixes routing loops in PREP propagation and is in accordance with Draft
>> 11, Section: 11C.9.8.4.
>
>> +++ b/net/mac80211/mesh_hwmp.c
>> @@ -391,7 +391,6 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? (mpath->flags & MESH_PATH_SN_VALID)) {
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (SN_GT(mpath->sn, orig_sn) ||
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (mpath->sn == orig_sn &&
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?action == MPATH_PREQ &&
>
> I don't understand how removing the action comparison maps to the patch
> description -- can you explain a bit more?

If the if condition is true, this PREQ or PREP will be ignored. The
first part of the condition eliminates old sequence numbers, where the
metric is not checked. The second part of the if condidion (||
(mpath->sn == ...) used to eliminate all the PREQs with equal seq
number and worse metric. The patch modifies it to also eliminate
PREPs.

j


--
Javier Cardona
cozybit Inc.
http://www.cozybit.com

2011-05-06 22:38:09

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: Only process mesh PREPs with equal seq number if metric is better.

On Fri, 2011-05-06 at 15:28 -0700, Javier Cardona wrote:

> >> This fixes routing loops in PREP propagation and is in accordance with Draft
> >> 11, Section: 11C.9.8.4.
> >
> >> +++ b/net/mac80211/mesh_hwmp.c
> >> @@ -391,7 +391,6 @@ static u32 hwmp_route_info_get(struct ieee80211_sub_if_data *sdata,
> >> (mpath->flags & MESH_PATH_SN_VALID)) {
> >> if (SN_GT(mpath->sn, orig_sn) ||
> >> (mpath->sn == orig_sn &&
> >> - action == MPATH_PREQ &&
> >
> > I don't understand how removing the action comparison maps to the patch
> > description -- can you explain a bit more?
>
> If the if condition is true, this PREQ or PREP will be ignored. The
> first part of the condition eliminates old sequence numbers, where the
> metric is not checked. The second part of the if condidion (||
> (mpath->sn == ...) used to eliminate all the PREQs with equal seq
> number and worse metric. The patch modifies it to also eliminate
> PREPs.

Ah. Thanks for the explanation, guess I shouldn't be trying to read this
after midnight :-)

johannes