PERFORCE change 126229 for review

Oleksandr Tymoshenko gonzo at FreeBSD.org
Sun Sep 9 09:35:44 PDT 2007


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

Change 126229 by gonzo at gonzo_jeeves on 2007/09/09 16:35:08

	o Implement bus_dmamap_load_mbuf_sg

Affected files ...

.. //depot/projects/mips2/src/sys/mips/mips/busdma_machdep.c#6 edit

Differences ...

==== //depot/projects/mips2/src/sys/mips/mips/busdma_machdep.c#6 (text+ko) ====

@@ -672,8 +672,37 @@
 {
 	int error = 0;
 
-	panic("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__);
+	M_ASSERTPKTHDR(m0);
+
+	flags |= BUS_DMA_NOWAIT;
+	*nsegs = -1;
+	map->flags &= ~DMAMAP_TYPE_MASK;
+	map->flags |= DMAMAP_MBUF | DMAMAP_COHERENT;
+	map->buffer = m0;
+	map->len = 0;
+
+	if (m0->m_pkthdr.len <= dmat->maxsize) {
+		vm_offset_t lastaddr = 0;
+		struct mbuf *m;
+
+		for (m = m0; m != NULL && error == 0; m = m->m_next) {
+			if (m->m_len > 0) {
+				error = bus_dmamap_load_buffer(dmat, segs, map,
+				    m->m_data, m->m_len, 
+				    pmap_kernel(), flags, &lastaddr, nsegs);
+				map->len += m->m_len;
+			}
+		}
+	} else {
+		error = EINVAL;
+	}
+
+	++*nsegs;
+	CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d",
+	    __func__, dmat, dmat->flags, error, *nsegs);
+
 	return (error);
+
 }
 
 /*


More information about the p4-projects mailing list