svn commit: r195491 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Thu Jul 9 13:42:20 UTC 2009
Author: rpaulo
Date: Thu Jul 9 13:42:18 2009
New Revision: 195491
URL: http://svn.freebsd.org/changeset/base/195491
Log:
Set table seqno only if we didn't send one already.
Sponsored by: The FreeBSD Foundation
Modified:
projects/mesh11s/sys/net80211/ieee80211_hwmp.c
Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Thu Jul 9 12:48:43 2009 (r195490)
+++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Thu Jul 9 13:42:18 2009 (r195491)
@@ -720,7 +720,7 @@ hwmp_recv_preq(struct ieee80211vap *vap,
prep.prep_lifetime = preq->preq_lifetime;
prep.prep_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
IEEE80211_ADDR_COPY(prep.prep_origaddr, vap->iv_myaddr);
- prep.prep_origseq = hs->hs_seq++;
+ prep.prep_origseq = ++hs->hs_seq;
hwmp_send_prep(ni, vap->iv_myaddr, wh->i_addr2, &prep);
/*
* Build the reverse path, if we don't have it already.
@@ -983,8 +983,9 @@ hwmp_recv_prep(struct ieee80211vap *vap,
}
} else {
IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni,
- "discard PREP from %s, wrong seqno %u",
- ether_sprintf(prep->prep_origaddr), prep->prep_targetseq);
+ "discard PREP from %s, wrong seqno %u != %u",
+ ether_sprintf(prep->prep_origaddr), prep->prep_targetseq,
+ hr->hr_seq);
vap->iv_stats.is_hwmp_wrongseq++;
}
@@ -1239,8 +1240,10 @@ hwmp_discover(struct ieee80211vap *vap,
hr = IEEE80211_MESH_ROUTE_PRIV(rt,
struct ieee80211_hwmp_route);
if (IEEE80211_ADDR_EQ(rt->rt_nexthop, invalidaddr)) {
- hr->hr_seq = ++hs->hs_seq;
- hr->hr_preqid = ++hs->hs_preqid;
+ if (hr->hr_preqid == 0) {
+ hr->hr_seq = ++hs->hs_seq;
+ hr->hr_preqid = ++hs->hs_preqid;
+ }
rt->rt_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
rt->rt_lifetime =
timeval2msecs(ieee80211_hwmp_pathtimeout);
More information about the svn-src-projects
mailing list