PERFORCE change 129435 for review

Kip Macy kmacy at FreeBSD.org
Fri Nov 23 15:30:21 PST 2007


http://perforce.freebsd.org/chv.cgi?CH=129435

Change 129435 by kmacy at kmacy:storage:toestack on 2007/11/23 23:30:00

	add add mbuf iovec allocation routine
	declare routine to initialize mbuf iovec from sgl

Affected files ...

.. //depot/projects/toestack/sys/dev/cxgb/sys/mvec.h#8 edit
.. //depot/projects/toestack/sys/dev/cxgb/sys/uipc_mvec.c#5 edit

Differences ...

==== //depot/projects/toestack/sys/dev/cxgb/sys/mvec.h#8 (text+ko) ====

@@ -157,6 +157,8 @@
 }
 
 struct mbuf *mi_collapse_mbuf(struct mbuf_iovec *mi, struct mbuf *m);
+struct mbuf *mi_collapse_sge(struct mbuf_iovec *mi, bus_dma_segment_t *seg);
+void *mcl_alloc(int seg_count, int *type);
 
 static __inline int
 m_collapse(struct mbuf *m, int maxbufs, struct mbuf **mnew) 

==== //depot/projects/toestack/sys/dev/cxgb/sys/uipc_mvec.c#5 (text+ko) ====

@@ -168,6 +168,24 @@
 	return _mcl_collapse_mbuf(mi, m);
 }
 	
+void *
+mcl_alloc(int seg_count, int *type) 
+{
+	uma_zone_t zone;
+	
+	if (seg_count > MAX_CL_IOV) {
+		zone = zone_jumbop;
+		*type = EXT_JMPIOVEC;
+	} else if (seg_count > MAX_MIOVEC_IOV) {
+		zone = zone_clust;
+		*type = EXT_CLIOVEC;
+	} else {
+		*type = EXT_IOVEC;
+		zone = zone_miovec;
+	}
+	return uma_zalloc_arg(zone, NULL, M_NOWAIT);
+}
+
 int
 busdma_map_sg_collapse(struct mbuf **m, bus_dma_segment_t *segs, int *nsegs)
 {
@@ -176,7 +194,6 @@
 	struct mbuf *marray[TX_MAX_SEGS];
 	int i, type, seg_count, defragged = 0, err = 0;
 	struct mbuf_vec *mv;
-	uma_zone_t zone;
 
 	KASSERT(n->m_pkthdr.len, ("packet has zero header len"));
 		
@@ -262,17 +279,8 @@
 		err = EFBIG;
 		goto err_out;
 	}
-	if (seg_count > MAX_CL_IOV) {
-		zone = zone_jumbop;
-		type = EXT_JMPIOVEC;
-	} else if (seg_count > MAX_MIOVEC_IOV) {
-		zone = zone_clust;
-		type = EXT_CLIOVEC;
-	} else {
-		type = EXT_IOVEC;
-		zone = zone_miovec;
-	}
-	if ((m0 = uma_zalloc_arg(zone, NULL, M_NOWAIT)) == NULL) {
+
+	if ((m0 = mcl_alloc(seg_count, &type)) == NULL) {
 		err = ENOMEM;
 		goto err_out;
 	}


More information about the p4-projects mailing list