PERFORCE change 196777 for review

Takuya ASADA syuu at FreeBSD.org
Wed Jul 27 07:33:24 UTC 2011


http://p4web.freebsd.org/@@196777?ac=10

Change 196777 by syuu at 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)


More information about the p4-projects mailing list