PERFORCE change 193100 for review

Takuya ASADA syuu at FreeBSD.org
Sat May 14 02:09:38 UTC 2011


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

Change 193100 by syuu at kikurage on 2011/05/14 02:08:48

	revert rwlock, remove KASSERT, temporarily commented out if_rcvq_affinity

Affected files ...

.. //depot/projects/soc2011/multiqueue_bpf/sys/dev/e1000/if_igb.c#3 edit
.. //depot/projects/soc2011/multiqueue_bpf/sys/net/bpf.c#4 edit
.. //depot/projects/soc2011/multiqueue_bpf/sys/net/bpf.h#4 edit
.. //depot/projects/soc2011/multiqueue_bpf/sys/net/bpfdesc.h#4 edit
.. //depot/projects/soc2011/multiqueue_bpf/sys/net/if_var.h#3 edit

Differences ...

==== //depot/projects/soc2011/multiqueue_bpf/sys/dev/e1000/if_igb.c#3 (text+ko) ====

@@ -2694,7 +2694,9 @@
 igb_setup_interface(device_t dev, struct adapter *adapter)
 {
 	struct ifnet   *ifp;
+#if 0
 	int i;
+#endif
 
 	INIT_DEBUGOUT("igb_setup_interface: begin");
 
@@ -2751,9 +2753,11 @@
 	** enable this and get full hardware tag filtering.
 	*/
 	ifp->if_capabilities |= IFCAP_VLAN_HWFILTER;
+#if 0
 	ifp->if_rcvq_affinity.ra_len = adapter->num_rx_desc;
 	for (i = 0; i < adapter->num_rx_desc; i++)
 		ifp->if_rcvq_affinity.ra_q[i] = i;
+#endif
 	
 	/*
 	 * Specify the media types supported by this adapter and register
@@ -4443,7 +4447,8 @@
 			rxr->fmp->m_flags |= M_FLOWID;
 #endif
 			rxr->fmp->m_pkthdr.rcvq = que->msix;
-			KASSERT(que->msix == PCPU_GET(cpuid), ("que->msix != cpuid"));
+			if (que->msix != PCPU_GET(cpuid))
+				printf("igb msix:%d cpuid:%d\n", que->msix, PCPU_GET(cpuid));
 			sendmp = rxr->fmp;
 			/* Make sure to set M_PKTHDR. */
 			sendmp->m_flags |= M_PKTHDR;

==== //depot/projects/soc2011/multiqueue_bpf/sys/net/bpf.c#4 (text+ko) ====

@@ -574,12 +574,12 @@
 	 * Finally, point the driver's bpf cookie at the interface so
 	 * it will divert packets to bpf.
 	 */
-	BPFIF_WLOCK(bp);
+	BPFIF_LOCK(bp);
 	d->bd_bif = bp;
 	LIST_INSERT_HEAD(&bp->bif_dlist, d, bd_next);
 
 	bpf_bpfd_cnt++;
-	BPFIF_WUNLOCK(bp);
+	BPFIF_UNLOCK(bp);
 
 	EVENTHANDLER_INVOKE(bpf_track, bp->bif_ifp, bp->bif_dlt, 1);
 }
@@ -595,7 +595,7 @@
 	struct ifnet *ifp;
 
 	bp = d->bd_bif;
-	BPFIF_WLOCK(bp);
+	BPFIF_LOCK(bp);
 	BPFD_LOCK(d);
 	ifp = d->bd_bif->bif_ifp;
 
@@ -607,7 +607,7 @@
 	bpf_bpfd_cnt--;
 	d->bd_bif = NULL;
 	BPFD_UNLOCK(d);
-	BPFIF_WUNLOCK(bp);
+	BPFIF_UNLOCK(bp);
 
 	EVENTHANDLER_INVOKE(bpf_track, ifp, bp->bif_dlt, 0);
 
@@ -1512,18 +1512,26 @@
 		error = bpf_ioctl_rotzbuf(td, d, (struct bpf_zbuf *)addr);
 		break;
 	case BIOCQLEN:
+#if 0
 		if (d->bd_bif == NULL)
 			error = EINVAL;
 		else
 			*(int *)addr = d->bd_bif->bif_ifp->if_rcvq_affinity.ra_len;
+#else
+		error = EINVAL;
+#endif
 		break;
 	case BIOCGETQAFFINITY:
+#if 0
 		if (d->bd_bif == NULL)
 			error = EINVAL;
 		else {
 			int index = *(int *)addr;
 			*(u_long *)addr = d->bd_bif->bif_ifp->if_rcvq_affinity.ra_q[index];
 		}
+#else
+		error = EINVAL;
+#endif
 		break;
 	case BIOCSETQMASK:
 		d->bd_qmask = *(u_int *)addr;
@@ -1840,7 +1848,7 @@
 	int gottime;
 
 	gottime = BPF_TSTAMP_NONE;
-	BPFIF_RLOCK(bp);
+	BPFIF_LOCK(bp);
 	LIST_FOREACH(d, &bp->bif_dlist, bd_next) {
 		BPFD_LOCK(d);
 		++d->bd_rcount;
@@ -1869,7 +1877,7 @@
 		}
 		BPFD_UNLOCK(d);
 	}
-	BPFIF_RUNLOCK(bp);
+	BPFIF_UNLOCK(bp);
 }
 
 #define	BPF_CHECK_DIRECTION(d, r, i)				\
@@ -1899,7 +1907,7 @@
 	pktlen = m_length(m, NULL);
 
 	gottime = BPF_TSTAMP_NONE;
-	BPFIF_RLOCK(bp);
+	BPFIF_LOCK(bp);
 	LIST_FOREACH(d, &bp->bif_dlist, bd_next) {
 		if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif, bp->bif_ifp))
 			continue;
@@ -1927,7 +1935,7 @@
 		}
 		BPFD_UNLOCK(d);
 	}
-	BPFIF_RUNLOCK(bp);
+	BPFIF_UNLOCK(bp);
 }
 
 /*
@@ -1961,7 +1969,7 @@
 	pktlen += dlen;
 
 	gottime = BPF_TSTAMP_NONE;
-	BPFIF_RLOCK(bp);
+	BPFIF_LOCK(bp);
 	LIST_FOREACH(d, &bp->bif_dlist, bd_next) {
 		if (BPF_CHECK_DIRECTION(d, m->m_pkthdr.rcvif, bp->bif_ifp))
 			continue;
@@ -1982,7 +1990,7 @@
 		}
 		BPFD_UNLOCK(d);
 	}
-	BPFIF_RUNLOCK(bp);
+	BPFIF_UNLOCK(bp);
 }
 
 #undef	BPF_CHECK_DIRECTION
@@ -2253,7 +2261,7 @@
 	LIST_INIT(&bp->bif_dlist);
 	bp->bif_ifp = ifp;
 	bp->bif_dlt = dlt;
-	rw_init(&bp->bif_lock, "bpf interface lock");
+ 	mtx_init(&bp->bif_mtx, "bpf interface lock", NULL, MTX_DEF);
 	KASSERT(*driverp == NULL, ("bpfattach2: driverp already initialized"));
 	*driverp = bp;
 
@@ -2303,7 +2311,7 @@
 		BPFD_UNLOCK(d);
 	}
 
-	rw_destroy(&bp->bif_lock);
+ 	mtx_destroy(&bp->bif_mtx);
 	free(bp, M_BPF);
 }
 
@@ -2404,7 +2412,7 @@
 
 	mtx_lock(&bpf_mtx);
 	LIST_FOREACH(bp, &bpf_iflist, bif_next) {
-		BPFIF_RLOCK(bp);
+		BPFIF_LOCK(bp);
 		LIST_FOREACH(bd, &bp->bif_dlist, bd_next) {
 			BPFD_LOCK(bd);
 			bd->bd_rcount = 0;
@@ -2415,7 +2423,7 @@
 			bd->bd_zcopy = 0;
 			BPFD_UNLOCK(bd);
 		}
-		BPFIF_RUNLOCK(bp);
+		BPFIF_UNLOCK(bp);
 	}
 	mtx_unlock(&bpf_mtx);
 }
@@ -2496,14 +2504,14 @@
 	}
 	index = 0;
 	LIST_FOREACH(bp, &bpf_iflist, bif_next) {
-		BPFIF_RLOCK(bp);
+		BPFIF_LOCK(bp);
 		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);
+		BPFIF_UNLOCK(bp);
 	}
 	mtx_unlock(&bpf_mtx);
 	error = SYSCTL_OUT(req, xbdbuf, index * sizeof(*xbd));

==== //depot/projects/soc2011/multiqueue_bpf/sys/net/bpf.h#4 (text+ko) ====

@@ -40,8 +40,6 @@
 #ifndef _NET_BPF_H_
 #define _NET_BPF_H_
 
-#include <sys/rwlock.h>
-
 /* BSD style release date */
 #define	BPF_RELEASE 199606
 
@@ -1106,7 +1104,7 @@
 	u_int bif_dlt;				/* link layer type */
 	u_int bif_hdrlen;		/* length of link header */
 	struct ifnet *bif_ifp;		/* corresponding interface */
-	struct rwlock bif_lock;		/* rwlock for interface */
+	struct mtx	bif_mtx;	/* mutex for interface */
 };
 
 void	 bpf_bufheld(struct bpf_d *d);

==== //depot/projects/soc2011/multiqueue_bpf/sys/net/bpfdesc.h#4 (text+ko) ====

@@ -145,10 +145,7 @@
 	u_int64_t	bd_spare[4];
 };
 
-#define BPFIF_RLOCK(bif)	rw_rlock(&(bif)->bif_lock)
-#define BPFIF_RUNLOCK(bif)	rw_runlock(&(bif)->bif_lock)
-
-#define BPFIF_WLOCK(bif)	rw_wlock(&(bif)->bif_lock)
-#define BPFIF_WUNLOCK(bif)	rw_wunlock(&(bif)->bif_lock)
+#define BPFIF_LOCK(bif)		mtx_lock(&(bif)->bif_mtx)
+#define BPFIF_UNLOCK(bif)	mtx_unlock(&(bif)->bif_mtx)
 
 #endif

==== //depot/projects/soc2011/multiqueue_bpf/sys/net/if_var.h#3 (text+ko) ====

@@ -111,11 +111,13 @@
 	struct	mtx ifq_mtx;
 };
 
+#if 0
 /* XXX: should support large number of queues */
 struct	rcvq_affinity {
 	int ra_len;
 	u_long ra_q[32];
 };
+#endif
 
 /*
  * Structure defining a network interface.
@@ -203,7 +205,9 @@
 	void	*if_lagg;		/* lagg glue */
 	u_char	 if_alloctype;		/* if_type at time of allocation */
 
+#if 0
 	struct	rcvq_affinity	if_rcvq_affinity;
+#endif
 	
 	/*
 	 * Spare fields are added so that we can modify sensitive data


More information about the p4-projects mailing list