version 1.37, 2017/05/17 20:13:02 |
version 1.38, 2017/06/01 02:45:11 |
Line 382 vioif_alloc_mems(struct vioif_softc *sc) |
|
Line 382 vioif_alloc_mems(struct vioif_softc *sc) |
|
allocsize2 += sizeof(bus_dmamap_t) * (rxqsize + txqsize); |
allocsize2 += sizeof(bus_dmamap_t) * (rxqsize + txqsize); |
allocsize2 += sizeof(struct mbuf*) * (rxqsize + txqsize); |
allocsize2 += sizeof(struct mbuf*) * (rxqsize + txqsize); |
sc->sc_arrays = kmem_zalloc(allocsize2, KM_SLEEP); |
sc->sc_arrays = kmem_zalloc(allocsize2, KM_SLEEP); |
if (sc->sc_arrays == NULL) |
|
goto err_dmamem_map; |
|
sc->sc_txhdr_dmamaps = sc->sc_arrays + rxqsize; |
sc->sc_txhdr_dmamaps = sc->sc_arrays + rxqsize; |
sc->sc_rx_dmamaps = sc->sc_txhdr_dmamaps + txqsize; |
sc->sc_rx_dmamaps = sc->sc_txhdr_dmamaps + txqsize; |
sc->sc_tx_dmamaps = sc->sc_rx_dmamaps + rxqsize; |
sc->sc_tx_dmamaps = sc->sc_rx_dmamaps + rxqsize; |
|
|
kmem_free(sc->sc_arrays, allocsize2); |
kmem_free(sc->sc_arrays, allocsize2); |
sc->sc_arrays = 0; |
sc->sc_arrays = 0; |
} |
} |
err_dmamem_map: |
|
bus_dmamem_unmap(virtio_dmat(vsc), sc->sc_hdrs, allocsize); |
bus_dmamem_unmap(virtio_dmat(vsc), sc->sc_hdrs, allocsize); |
err_dmamem_alloc: |
err_dmamem_alloc: |
bus_dmamem_free(virtio_dmat(vsc), &sc->sc_hdr_segs[0], 1); |
bus_dmamem_free(virtio_dmat(vsc), &sc->sc_hdr_segs[0], 1); |