diff options
author | kevlo <kevlo@FreeBSD.org> | 2009-07-31 09:57:42 +0000 |
---|---|---|
committer | kevlo <kevlo@FreeBSD.org> | 2009-07-31 09:57:42 +0000 |
commit | ee695c0b4b51fdb522a1706339d3476b2cbe0982 (patch) | |
tree | 91ab827c6227ca5f0df9eafc2d547b3272ea9c3c /sys/dev/alc | |
parent | 1eac2402ef00de3a96ce1d9d21792a8d8bff046d (diff) | |
download | FreeBSD-src-ee695c0b4b51fdb522a1706339d3476b2cbe0982.zip FreeBSD-src-ee695c0b4b51fdb522a1706339d3476b2cbe0982.tar.gz |
Free allocated Rx ring dma memory/tags.
Reviewed by: yongari@
Approved by: re (kib)
Diffstat (limited to 'sys/dev/alc')
-rw-r--r-- | sys/dev/alc/if_alc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/dev/alc/if_alc.c b/sys/dev/alc/if_alc.c index b28a411..f3483b7 100644 --- a/sys/dev/alc/if_alc.c +++ b/sys/dev/alc/if_alc.c @@ -1501,6 +1501,21 @@ alc_dma_free(struct alc_softc *sc) bus_dma_tag_destroy(sc->alc_cdata.alc_tx_ring_tag); sc->alc_cdata.alc_tx_ring_tag = NULL; } + /* Rx ring. */ + if (sc->alc_cdata.alc_rx_ring_tag != NULL) { + if (sc->alc_cdata.alc_rx_ring_map != NULL) + bus_dmamap_unload(sc->alc_cdata.alc_rx_ring_tag, + sc->alc_cdata.alc_rx_ring_map); + if (sc->alc_cdata.alc_rx_ring_map != NULL && + sc->alc_rdata.alc_rx_ring != NULL) + bus_dmamem_free(sc->alc_cdata.alc_rx_ring_tag, + sc->alc_rdata.alc_rx_ring, + sc->alc_cdata.alc_rx_ring_map); + sc->alc_rdata.alc_rx_ring = NULL; + sc->alc_cdata.alc_rx_ring_map = NULL; + bus_dma_tag_destroy(sc->alc_cdata.alc_rx_ring_tag); + sc->alc_cdata.alc_rx_ring_tag = NULL; + } /* Rx return ring. */ if (sc->alc_cdata.alc_rr_ring_tag != NULL) { if (sc->alc_cdata.alc_rr_ring_map != NULL) |