Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Feb 2008 10:41:19 GMT
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 135299 for review
Message-ID:  <200802131041.m1DAfJ2o055129@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=135299

Change 135299 by sephe@sephe_zealot:sam_wifi on 2008/02/13 10:41:08

	Use NOWAIT under most of the cases, it should be safe in FreeBSD though.

Affected files ...

.. //depot/projects/wifi/sys/dev/bwi/if_bwi.c#13 edit

Differences ...

==== //depot/projects/wifi/sys/dev/bwi/if_bwi.c#13 (text+ko) ====

@@ -1963,7 +1963,7 @@
 
 	error = bus_dmamap_load(dtag, rd->rdata_dmap, rd->rdata_desc, size,
 				bwi_dma_ring_addr, &rd->rdata_paddr,
-				BUS_DMA_WAITOK);
+				BUS_DMA_NOWAIT);
 	if (error) {
 		device_printf(sc->sc_dev, "can't load DMA mem\n");
 		bus_dmamem_free(dtag, rd->rdata_desc, rd->rdata_dmap);
@@ -1983,7 +1983,11 @@
 	bus_size_t dma_size;
 	int error;
 
-	st = malloc(sizeof(*st), M_DEVBUF, M_WAITOK | M_ZERO);
+	st = malloc(sizeof(*st), M_DEVBUF, M_NOWAIT | M_ZERO);
+	if (st == NULL) {
+		device_printf(sc->sc_dev, "can't allocate txstats data\n");
+		return ENOMEM;
+	}
 	sc->sc_txstats = st;
 
 	/*
@@ -2023,7 +2027,7 @@
 	error = bus_dmamap_load(st->stats_ring_dtag, st->stats_ring_dmap,
 				st->stats_ring, dma_size,
 				bwi_dma_ring_addr, &st->stats_ring_paddr,
-				BUS_DMA_WAITOK);
+				BUS_DMA_NOWAIT);
 	if (error) {
 		device_printf(sc->sc_dev, "can't load txstats ring DMA mem\n");
 		bus_dmamem_free(st->stats_ring_dtag, st->stats_ring,
@@ -2068,7 +2072,7 @@
 
 	error = bus_dmamap_load(st->stats_dtag, st->stats_dmap, st->stats,
 				dma_size, bwi_dma_ring_addr, &st->stats_paddr,
-				BUS_DMA_WAITOK);
+				BUS_DMA_NOWAIT);
 	if (error) {
 		device_printf(sc->sc_dev, "can't load txstats DMA mem\n");
 		bus_dmamem_free(st->stats_dtag, st->stats, st->stats_dmap);
@@ -2440,7 +2444,7 @@
 
 	KASSERT(buf_idx < BWI_RX_NDESC, ("buf_idx %d", buf_idx));
 
-	m = m_getcl(init ? M_WAIT : M_DONTWAIT, MT_DATA, M_PKTHDR);
+	m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
 	if (m == NULL) {
 		error = ENOBUFS;
 
@@ -2460,8 +2464,7 @@
 	 * Try to load RX buf into temporary DMA map
 	 */
 	error = bus_dmamap_load_mbuf(sc->sc_buf_dtag, rbd->rbd_tmp_dmap, m,
-				     bwi_dma_buf_addr, &paddr,
-				     init ? BUS_DMA_WAITOK : BUS_DMA_NOWAIT);
+				     bwi_dma_buf_addr, &paddr, BUS_DMA_NOWAIT);
 	if (error) {
 		m_freem(m);
 



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