Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Jan 2012 19:35:40 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r230752 - head/sys/net80211
Message-ID:  <201201291935.q0TJZeZ9049674@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Sun Jan 29 19:35:40 2012
New Revision: 230752
URL: http://svn.freebsd.org/changeset/base/230752

Log:
  Missing code for receiving MESH PREP that should be part of r230409.
  
  Submitted by:	<monthadar@gmail.com>

Modified:
  head/sys/net80211/ieee80211_hwmp.c

Modified: head/sys/net80211/ieee80211_hwmp.c
==============================================================================
--- head/sys/net80211/ieee80211_hwmp.c	Sun Jan 29 18:54:25 2012	(r230751)
+++ head/sys/net80211/ieee80211_hwmp.c	Sun Jan 29 19:35:40 2012	(r230752)
@@ -1044,12 +1044,21 @@ hwmp_recv_prep(struct ieee80211vap *vap,
 	 * Sequence number validation.
 	 */
 	hr = IEEE80211_MESH_ROUTE_PRIV(rt, struct ieee80211_hwmp_route);
-	if (HWMP_SEQ_LEQ(prep->prep_targetseq, hr->hr_seq)) {
-		IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni,
-		    "discard PREP from %6D, old seq no %u <= %u",
-		    prep->prep_targetaddr, ":",
-		    prep->prep_targetseq, hr->hr_seq);
-		return;
+	if ((rt->rt_flags & IEEE80211_MESHRT_FLAGS_VALID)) {
+		if (HWMP_SEQ_LT(prep->prep_targetseq, hr->hr_seq)) {
+			IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni,
+			    "discard PREP from %6D, old seq no %u < %u",
+			    prep->prep_targetaddr, ":",
+			    prep->prep_targetseq, hr->hr_seq);
+			return;
+		} else if (HWMP_SEQ_LEQ(prep->prep_targetseq, hr->hr_seq) &&
+		    prep->prep_metric > rt->rt_metric) {
+			IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni,
+			    "discard PREP from %6D, new metric %u > %u",
+			    prep->prep_targetaddr, ":",
+			    prep->prep_metric, rt->rt_metric);
+			return;
+		}
 	}
 
 	hr->hr_seq = prep->prep_targetseq;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201291935.q0TJZeZ9049674>