From owner-p4-projects@FreeBSD.ORG Wed Jul 27 07:33:24 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 128CB1065670; Wed, 27 Jul 2011 07:33:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD920106564A for ; Wed, 27 Jul 2011 07:33:23 +0000 (UTC) (envelope-from syuu@FreeBSD.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id AA9638FC16 for ; Wed, 27 Jul 2011 07:33:23 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p6R7XNBj049265 for ; Wed, 27 Jul 2011 07:33:23 GMT (envelope-from syuu@FreeBSD.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p6R7XNMn049262 for perforce@freebsd.org; Wed, 27 Jul 2011 07:33:23 GMT (envelope-from syuu@FreeBSD.org) Date: Wed, 27 Jul 2011 07:33:23 GMT Message-Id: <201107270733.p6R7XNMn049262@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to syuu@FreeBSD.org using -f From: Takuya ASADA To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 196777 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jul 2011 07:33:24 -0000 http://p4web.freebsd.org/@@196777?ac=10 Change 196777 by syuu@kikurage on 2011/07/27 07:32:47 defined macro for tracker Affected files ... .. //depot/projects/soc2011/mq_bpf/src/sys/net/bpf.c#19 edit .. //depot/projects/soc2011/mq_bpf/src/sys/net/bpfdesc.h#8 edit Differences ... ==== //depot/projects/soc2011/mq_bpf/src/sys/net/bpf.c#19 (text+ko) ==== @@ -2107,10 +2107,10 @@ #endif u_int slen; int gottime; - struct rm_priotracker tracker; + BPFIF_DEF_TRACKER(if_tracker); gottime = BPF_TSTAMP_NONE; - BPFIF_RLOCK(bp, &tracker); + BPFIF_RLOCK(bp, &if_tracker); LIST_FOREACH(d, &bp->bif_dlist, bd_next) { BPFD_LOCK(d); if (d->bd_qmask.qm_enabled) { @@ -2146,7 +2146,7 @@ } BPFD_UNLOCK(d); } - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); } #define BPF_CHECK_DIRECTION(d, r, i) \ @@ -2163,7 +2163,8 @@ #endif u_int pktlen, slen; int gottime; - struct rm_priotracker tracker; + BPFIF_DEF_TRACKER(if_tracker); + BPFQ_DEF_TRACKER(qm_tracker); /* Skip outgoing duplicate packets. */ if ((m->m_flags & M_PROMISC) != 0 && m->m_pkthdr.rcvif == NULL) { @@ -2174,10 +2175,8 @@ pktlen = m_length(m, NULL); gottime = BPF_TSTAMP_NONE; - BPFIF_RLOCK(bp, &tracker); + BPFIF_RLOCK(bp, &if_tracker); LIST_FOREACH(d, &bp->bif_dlist, bd_next) { - struct rm_priotracker qm_tracker; - BPFQ_RLOCK(&d->bd_qmask, &qm_tracker); if (d->bd_qmask.qm_enabled) { M_ASSERTPKTHDR(m); @@ -2192,7 +2191,7 @@ if (m->m_pkthdr.rxqueue >= ifp->if_get_rxqueue_len(ifp)) { log(LOG_DEBUG, "invalid rxqueue:%d len:%d\n", m->m_pkthdr.rxqueue, ifp->if_get_rxqueue_len(ifp)); BPFQ_RUNLOCK(&d->bd_qmask, &qm_tracker); - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); return; } if (!d->bd_qmask.qm_rxq_mask[m->m_pkthdr.rxqueue]) { @@ -2204,7 +2203,7 @@ if (m->m_pkthdr.txqueue >= ifp->if_get_txqueue_len(ifp)) { log(LOG_DEBUG, "invalid txqueue:%d len:%d\n", m->m_pkthdr.txqueue, ifp->if_get_txqueue_len(ifp)); BPFQ_RUNLOCK(&d->bd_qmask, &qm_tracker); - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); return; } if (!d->bd_qmask.qm_txq_mask[m->m_pkthdr.txqueue]) { @@ -2240,7 +2239,7 @@ } BPFD_UNLOCK(d); } - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); } /* @@ -2255,7 +2254,8 @@ struct bpf_d *d; u_int pktlen, slen; int gottime; - struct rm_priotracker tracker; + BPFIF_DEF_TRACKER(if_tracker); + BPFQ_DEF_TRACKER(qm_tracker); /* Skip outgoing duplicate packets. */ if ((m->m_flags & M_PROMISC) != 0 && m->m_pkthdr.rcvif == NULL) { @@ -2275,10 +2275,8 @@ pktlen += dlen; gottime = BPF_TSTAMP_NONE; - BPFIF_RLOCK(bp, &tracker); + BPFIF_RLOCK(bp, &if_tracker); LIST_FOREACH(d, &bp->bif_dlist, bd_next) { - struct rm_priotracker qm_tracker; - BPFQ_RLOCK(&d->bd_qmask, &qm_tracker); if (d->bd_qmask.qm_enabled) { M_ASSERTPKTHDR(m); @@ -2293,7 +2291,7 @@ if (m->m_pkthdr.rxqueue >= ifp->if_get_rxqueue_len(ifp)) { log(LOG_DEBUG, "invalid rxqueue:%d len:%d\n", m->m_pkthdr.rxqueue, ifp->if_get_rxqueue_len(ifp)); BPFQ_RUNLOCK(&d->bd_qmask, &qm_tracker); - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); return; } if (!d->bd_qmask.qm_rxq_mask[m->m_pkthdr.rxqueue]) { @@ -2305,7 +2303,7 @@ if (m->m_pkthdr.txqueue >= ifp->if_get_txqueue_len(ifp)) { log(LOG_DEBUG, "invalid txqueue:%d len:%d\n", m->m_pkthdr.txqueue, ifp->if_get_txqueue_len(ifp)); BPFQ_RUNLOCK(&d->bd_qmask, &qm_tracker); - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); return; } if (!d->bd_qmask.qm_txq_mask[m->m_pkthdr.txqueue]) { @@ -2334,7 +2332,7 @@ } BPFD_UNLOCK(d); } - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); } #undef BPF_CHECK_DIRECTION @@ -2759,11 +2757,11 @@ { struct bpf_if *bp; struct bpf_d *bd; - struct rm_priotracker tracker; + BPFIF_DEF_TRACKER(if_tracker); mtx_lock(&bpf_mtx); LIST_FOREACH(bp, &bpf_iflist, bif_next) { - BPFIF_RLOCK(bp, &tracker); + BPFIF_RLOCK(bp, &if_tracker); LIST_FOREACH(bd, &bp->bif_dlist, bd_next) { BPFD_LOCK(bd); bd->bd_rcount = 0; @@ -2774,7 +2772,7 @@ bd->bd_zcopy = 0; BPFD_UNLOCK(bd); } - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); } mtx_unlock(&bpf_mtx); } @@ -2817,7 +2815,7 @@ int index, error; struct bpf_if *bp; struct bpf_d *bd; - struct rm_priotracker tracker; + BPFIF_DEF_TRACKER(if_tracker); /* * XXX This is not technically correct. It is possible for non @@ -2856,14 +2854,14 @@ } index = 0; LIST_FOREACH(bp, &bpf_iflist, bif_next) { - BPFIF_RLOCK(bp, &tracker); + BPFIF_RLOCK(bp, &if_tracker); LIST_FOREACH(bd, &bp->bif_dlist, bd_next) { xbd = &xbdbuf[index++]; BPFD_LOCK(bd); bpfstats_fill_xbpf(xbd, bd); BPFD_UNLOCK(bd); } - BPFIF_RUNLOCK(bp, &tracker); + BPFIF_RUNLOCK(bp, &if_tracker); } mtx_unlock(&bpf_mtx); error = SYSCTL_OUT(req, xbdbuf, index * sizeof(*xbd)); ==== //depot/projects/soc2011/mq_bpf/src/sys/net/bpfdesc.h#8 (text+ko) ==== @@ -58,6 +58,7 @@ #define BPFQ_LOCK_INIT(qm, d) \ rm_init_flags(&(qm)->qm_lock, (d), RM_NOWITNESS | RM_RECURSE); #define BPFQ_LOCK_DESTROY(qm) rm_destroy(&(qm)->qm_lock) +#define BPFQ_DEF_TRACKER(name) struct rm_priotracker name #define BPFQ_RLOCK(qm, tracker) rm_rlock(&(qm)->qm_lock, (tracker)) #define BPFQ_RUNLOCK(qm, tracker) rm_runlock(&(qm)->qm_lock, (tracker)) #define BPFQ_WLOCK(qm) rm_wlock(&(qm)->qm_lock) @@ -166,6 +167,7 @@ #define BPFIF_LOCK_INIT(bif, d) \ rm_init_flags(&(bif)->bif_lock, (d), RM_NOWITNESS | RM_RECURSE); #define BPFIF_LOCK_DESTROY(bif) rm_destroy(&(bif)->bif_lock) +#define BPFIF_DEF_TRACKER(name) struct rm_priotracker name #define BPFIF_RLOCK(bif, tracker) rm_rlock(&(bif)->bif_lock, (tracker)) #define BPFIF_RUNLOCK(bif, tracker) rm_runlock(&(bif)->bif_lock, (tracker)) #define BPFIF_WLOCK(bif) rm_wlock(&(bif)->bif_lock)