From owner-svn-src-stable@FreeBSD.ORG Tue Jun 18 22:22:00 2013 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 6D45DC04; Tue, 18 Jun 2013 22:22:00 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 45BCE1821; Tue, 18 Jun 2013 22:22:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r5IMM0SJ038752; Tue, 18 Jun 2013 22:22:00 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r5IMM0Zl038751; Tue, 18 Jun 2013 22:22:00 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201306182222.r5IMM0Zl038751@svn.freebsd.org> From: Marius Strobl Date: Tue, 18 Jun 2013 22:22:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r251971 - stable/9/sys/dev/bce X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Jun 2013 22:22:00 -0000 Author: marius Date: Tue Jun 18 22:21:59 2013 New Revision: 251971 URL: http://svnweb.freebsd.org/changeset/base/251971 Log: Now that r251221 has been MFC'ed to stable/9 in r251939, merge the remainder of r251146 previously partially MFC'ed in r251573: In bce_get_pg_buf(), take advantage of bus_dmamap_load_mbuf_sg(9). Modified: stable/9/sys/dev/bce/if_bce.c Modified: stable/9/sys/dev/bce/if_bce.c ============================================================================== --- stable/9/sys/dev/bce/if_bce.c Tue Jun 18 22:21:59 2013 (r251970) +++ stable/9/sys/dev/bce/if_bce.c Tue Jun 18 22:21:59 2013 (r251971) @@ -5466,10 +5466,10 @@ bce_get_rx_buf_exit: static int bce_get_pg_buf(struct bce_softc *sc, u16 prod, u16 prod_idx) { - bus_addr_t busaddr; + bus_dma_segment_t segs[1]; struct mbuf *m_new = NULL; struct rx_bd *pgbd; - int error, rc = 0; + int error, nsegs, rc = 0; #ifdef BCE_DEBUG u16 debug_prod_idx = prod_idx; #endif @@ -5512,12 +5512,11 @@ bce_get_pg_buf(struct bce_softc *sc, u16 /* ToDo: Consider calling m_fragment() to test error handling. */ /* Map the mbuf cluster into device memory. */ - error = bus_dmamap_load(sc->pg_mbuf_tag, sc->pg_mbuf_map[prod_idx], - mtod(m_new, void *), MCLBYTES, bce_dma_map_addr, &busaddr, - BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(sc->pg_mbuf_tag, + sc->pg_mbuf_map[prod_idx], m_new, segs, &nsegs, BUS_DMA_NOWAIT); /* Handle any mapping errors. */ - if (error || busaddr == 0) { + if (error) { BCE_PRINTF("%s(%d): Error mapping mbuf into page chain!\n", __FILE__, __LINE__); @@ -5528,6 +5527,10 @@ bce_get_pg_buf(struct bce_softc *sc, u16 goto bce_get_pg_buf_exit; } + /* All mbufs must map to a single segment. */ + KASSERT(nsegs == 1, ("%s(): Too many segments returned (%d)!", + __FUNCTION__, nsegs)); + /* ToDo: Do we need bus_dmamap_sync(,,BUS_DMASYNC_PREREAD) here? */ /* @@ -5536,8 +5539,8 @@ bce_get_pg_buf(struct bce_softc *sc, u16 */ pgbd = &sc->pg_bd_chain[PG_PAGE(prod_idx)][PG_IDX(prod_idx)]; - pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(busaddr)); - pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(busaddr)); + pgbd->rx_bd_haddr_lo = htole32(BCE_ADDR_LO(segs[0].ds_addr)); + pgbd->rx_bd_haddr_hi = htole32(BCE_ADDR_HI(segs[0].ds_addr)); pgbd->rx_bd_len = htole32(MCLBYTES); pgbd->rx_bd_flags = htole32(RX_BD_FLAGS_START | RX_BD_FLAGS_END);