diff mbox

mac80211: Only process mesh PREPs with equal seq number if metric is better.

Message ID 1304719911-22636-1-git-send-email-javier@cozybit.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Javier Cardona May 6, 2011, 10:11 p.m. UTC
From: Fabrice Deyber <fabricedeyber@agilemesh.com>

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

Signed-off-by: Fabrice Deyber <fabricedeyber@agilemesh.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
---
 net/mac80211/mesh_hwmp.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

Comments

Johannes Berg May 6, 2011, 10:17 p.m. UTC | #1
On Fri, 2011-05-06 at 15:11 -0700, Javier Cardona wrote:
> From: Fabrice Deyber <fabricedeyber@agilemesh.com>
> 
> 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

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Javier Cardona May 6, 2011, 10:28 p.m. UTC | #2
On Fri, May 6, 2011 at 3:17 PM, Johannes Berg <johannes@sipsolutions.net> wrote:
> On Fri, 2011-05-06 at 15:11 -0700, Javier Cardona wrote:
>> From: Fabrice Deyber <fabricedeyber@agilemesh.com>
>>
>> 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
Johannes Berg May 6, 2011, 10:38 p.m. UTC | #3
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

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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;