From owner-svn-src-projects@FreeBSD.ORG Tue Jun 30 13:38:15 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0811C1065674; Tue, 30 Jun 2009 13:38:15 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E8CDD8FC13; Tue, 30 Jun 2009 13:38:14 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n5UDcE1u082111; Tue, 30 Jun 2009 13:38:14 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5UDcEPp082108; Tue, 30 Jun 2009 13:38:14 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200906301338.n5UDcEPp082108@svn.freebsd.org> From: Rui Paulo Date: Tue, 30 Jun 2009 13:38:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195190 - projects/mesh11s/sys/net80211 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 13:38:15 -0000 Author: rpaulo Date: Tue Jun 30 13:38:14 2009 New Revision: 195190 URL: http://svn.freebsd.org/changeset/base/195190 Log: Add a helper function to detect duplicates. Sponsored by: The FreeBSD Foundation Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c projects/mesh11s/sys/net80211/ieee80211_hwmp.h Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue Jun 30 12:35:47 2009 (r195189) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c Tue Jun 30 13:38:14 2009 (r195190) @@ -1165,6 +1165,26 @@ ieee80211_hwmp_find_txnode(struct ieee80 return ieee80211_find_txnode(vap, rt->rt_nexthop); } +int +ieee80211_hwmp_checkpseq(struct ieee80211vap *vap, + uint8_t source[IEEE80211_ADDR_LEN], uint32_t seq) +{ + struct ieee80211_hwmp_route *rt; + + rt = hwmp_rt_find(vap, source); + if (rt == NULL) { + rt = hwmp_rt_add(vap, source); + rt->rt_lastpseq = seq; + return 0; + } + if (rt->rt_lastpseq >= seq) + return 1; + else { + rt->rt_lastpseq = seq; + return 0; + } +} + static int hwmp_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq) { Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.h ============================================================================== --- projects/mesh11s/sys/net80211/ieee80211_hwmp.h Tue Jun 30 12:35:47 2009 (r195189) +++ projects/mesh11s/sys/net80211/ieee80211_hwmp.h Tue Jun 30 13:38:14 2009 (r195190) @@ -48,6 +48,8 @@ struct ieee80211_hwmp_route { uint8_t rt_prevhop[IEEE80211_ADDR_LEN]; uint32_t rt_lifetime; int rt_preqretries; + uint32_t rt_lastpseq; /* last mesh seq number + from this node */ }; #ifdef _KERNEL @@ -76,8 +78,10 @@ void ieee80211_hwmp_recv_action(struct i struct ieee80211_node *ieee80211_hwmp_discover(struct ieee80211vap *, uint8_t [IEEE80211_ADDR_LEN], struct mbuf *); struct ieee80211_node * -ieee80211_hwmp_find_txnode(struct ieee80211vap *vap, + ieee80211_hwmp_find_txnode(struct ieee80211vap *vap, uint8_t dest[IEEE80211_ADDR_LEN]); +int ieee80211_hwmp_checkpseq(struct ieee80211vap *, + uint8_t [IEEE80211_ADDR_LEN], uint32_t); void ieee80211_hwmp_peerdown(struct ieee80211_node *); #endif /* _KERNEL */