From owner-p4-projects@FreeBSD.ORG Tue Jan 27 17:12:26 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3E5CA16A4D0; Tue, 27 Jan 2004 17:12:26 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 126B316A4CE for ; Tue, 27 Jan 2004 17:12:26 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3330243D54 for ; Tue, 27 Jan 2004 17:12:11 -0800 (PST) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i0S1CB0B072846 for ; Tue, 27 Jan 2004 17:12:11 -0800 (PST) (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i0S1CAjb072837 for perforce@freebsd.org; Tue, 27 Jan 2004 17:12:10 -0800 (PST) (envelope-from sam@freebsd.org) Date: Tue, 27 Jan 2004 17:12:10 -0800 (PST) Message-Id: <200401280112.i0S1CAjb072837@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 46029 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jan 2004 01:12:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=46029 Change 46029 by sam@sam_ebb on 2004/01/27 17:11:35 o correct ieee80211_node_dectestref o add comments describing reference counting macros Affected files ... .. //depot/projects/netperf+sockets/sys/net80211/ieee80211_freebsd.h#2 edit .. //depot/projects/netperf+sockets/sys/net80211/ieee80211_netbsd.h#2 edit Differences ... ==== //depot/projects/netperf+sockets/sys/net80211/ieee80211_freebsd.h#2 (text+ko) ==== @@ -76,12 +76,19 @@ #define ALTQ_DECL(_x) /* - * Node reference counting definitions. + * Node reference counting definitions: + * + * ieee80211_node_initref initialize the reference count to 1 + * ieee80211_node_incref add a reference + * ieee80211_node_decref remove a reference + * ieee80211_node_dectestref remove a reference and return 1 if this + * is the last reference, otherwise 0 */ #define ieee80211_node_initref(_ni) ((_ni)->ni_refcnt = 1) #define ieee80211_node_incref(_ni) atomic_add_int(&(_ni)->ni_refcnt,1) #define ieee80211_node_decref(_ni) atomic_subtract_int(&(_ni)->ni_refcnt,1) +/* XXX handle circularity required by inline function */ #include #include @@ -92,7 +99,7 @@ do { orefcnt = ni->ni_refcnt; } while (atomic_cmpset_int(&ni->ni_refcnt, orefcnt, orefcnt - 1) == 0); - return orefcnt - 1; + return (orefcnt == 1); } extern struct mbuf *ieee80211_getmgtframe(u_int8_t **frm, u_int pktlen); ==== //depot/projects/netperf+sockets/sys/net80211/ieee80211_netbsd.h#2 (text+ko) ==== @@ -74,6 +74,15 @@ void if_printf(struct ifnet *, const char *, ...) __attribute__((__format__(__printf__,2,3))); +/* + * Node reference counting definitions: + * + * ieee80211_node_initref initialize the reference count to 1 + * ieee80211_node_incref add a reference + * ieee80211_node_decref remove a reference + * ieee80211_node_dectestref remove a reference and return 1 if this + * is the last reference, otherwise 0 + */ #define ieee80211_node_incref(ni) \ do { \ int _s = splnet(); \ @@ -94,10 +103,12 @@ s = splnet(); refcnt = --ni->ni_refcnt; splx(s); - return refcnt; + return (refcnt == 0); } #define ifmedia_removeall(_media) \ ifmedia_delete_instance((_media), IFM_INST_ANY) +extern struct mbuf *ieee80211_getmgtframe(u_int8_t **frm, u_int pktlen); + #endif /* _NET80211_IEEE80211_NETBSD_H_ */