diff options
author | adrian <adrian@FreeBSD.org> | 2012-07-09 08:37:59 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-07-09 08:37:59 +0000 |
commit | 2977d109d83eadd054368540f3b409f99c34ce25 (patch) | |
tree | 49f2c5f5f3846719f0fd9927481d62c22a66a9dc /sys/dev/ath/if_ath_rx.c | |
parent | 559bc2034e8aa725e443f70d45bbaa57a713aed4 (diff) | |
download | FreeBSD-src-2977d109d83eadd054368540f3b409f99c34ce25.zip FreeBSD-src-2977d109d83eadd054368540f3b409f99c34ce25.tar.gz |
Further preparations for the RX EDMA support.
Break out the DMA descriptor setup/teardown code into a method.
The EDMA RX code doesn't allocate descriptors, just ath_buf entries.
Diffstat (limited to 'sys/dev/ath/if_ath_rx.c')
-rw-r--r-- | sys/dev/ath/if_ath_rx.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath_rx.c b/sys/dev/ath/if_ath_rx.c index 6c22de1..53aab74 100644 --- a/sys/dev/ath/if_ath_rx.c +++ b/sys/dev/ath/if_ath_rx.c @@ -1053,6 +1053,31 @@ ath_legacy_startrecv(struct ath_softc *sc) return 0; } +static int +ath_legacy_dma_rxsetup(struct ath_softc *sc) +{ + int error; + + device_printf(sc->sc_dev, "%s: called\n", __func__); + + error = ath_descdma_setup(sc, &sc->sc_rxdma, &sc->sc_rxbuf, + "rx", ath_rxbuf, 1); + if (error != 0) + return (error); + + return (0); +} + +static int +ath_legacy_dma_rxteardown(struct ath_softc *sc) +{ + + device_printf(sc->sc_dev, "%s: called\n", __func__); + + if (sc->sc_rxdma.dd_desc_len != 0) + ath_descdma_cleanup(sc, &sc->sc_rxdma, &sc->sc_rxbuf); + return (0); +} void ath_recv_setup_legacy(struct ath_softc *sc) @@ -1065,4 +1090,7 @@ ath_recv_setup_legacy(struct ath_softc *sc) sc->sc_rx.recv_flush = ath_legacy_flushrecv; sc->sc_rx.recv_tasklet = ath_legacy_rx_tasklet; sc->sc_rx.recv_rxbuf_init = ath_legacy_rxbuf_init; + + sc->sc_rx.recv_setup = ath_legacy_dma_rxsetup; + sc->sc_rx.recv_teardown = ath_legacy_dma_rxteardown; } |