Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Jul 2019 15:26:03 +0000 (UTC)
From:      Ruslan Bukin <br@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r349732 - head/sys/dev/xdma
Message-ID:  <201907041526.x64FQ3Uw094741@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: br
Date: Thu Jul  4 15:26:02 2019
New Revision: 349732
URL: https://svnweb.freebsd.org/changeset/base/349732

Log:
  Fix transfers that don't use busdma or bounce buffer (e.g. software dmas).
  Busdma data loaded by different function (the bug introduced in r349727).
  
  Sponsored by:	DARPA, AFRL

Modified:
  head/sys/dev/xdma/xdma_sg.c

Modified: head/sys/dev/xdma/xdma_sg.c
==============================================================================
--- head/sys/dev/xdma/xdma_sg.c	Thu Jul  4 15:09:58 2019	(r349731)
+++ head/sys/dev/xdma/xdma_sg.c	Thu Jul  4 15:26:02 2019	(r349732)
@@ -493,14 +493,13 @@ _xdma_load_data(xdma_channel_t *xchan, struct xdma_req
 
 	switch (xr->req_type) {
 	case XR_TYPE_MBUF:
-		if (xchan->caps & XCHAN_CAP_BUSDMA)
-			seg[0].ds_addr = mtod(m, bus_addr_t);
-		else if (xchan->caps & XCHAN_CAP_BOUNCE) {
+		if (xchan->caps & XCHAN_CAP_BOUNCE) {
 			if (xr->direction == XDMA_MEM_TO_DEV)
 				m_copydata(m, 0, m->m_pkthdr.len,
 				    (void *)xr->buf.vaddr);
 			seg[0].ds_addr = (bus_addr_t)xr->buf.paddr;
-		}
+		} else
+			seg[0].ds_addr = mtod(m, bus_addr_t);
 		seg[0].ds_len = m->m_pkthdr.len;
 		break;
 	case XR_TYPE_BIO:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201907041526.x64FQ3Uw094741>