MCPcopy Create free account
hub / github.com/F-Stack/f-stack / arge_tx_ring_init

Function arge_tx_ring_init

freebsd/mips/atheros/if_arge.c:2185–2215  ·  view source on GitHub ↗

* Initialize the transmit descriptors. */

Source from the content-addressed store, hash-verified

2183 * Initialize the transmit descriptors.
2184 */
2185static int
2186arge_tx_ring_init(struct arge_softc *sc)
2187{
2188 struct arge_ring_data *rd;
2189 struct arge_txdesc *txd;
2190 bus_addr_t addr;
2191 int i;
2192
2193 sc->arge_cdata.arge_tx_prod = 0;
2194 sc->arge_cdata.arge_tx_cons = 0;
2195 sc->arge_cdata.arge_tx_cnt = 0;
2196
2197 rd = &sc->arge_rdata;
2198 bzero(rd->arge_tx_ring, sizeof(*rd->arge_tx_ring));
2199 for (i = 0; i < ARGE_TX_RING_COUNT; i++) {
2200 if (i == ARGE_TX_RING_COUNT - 1)
2201 addr = ARGE_TX_RING_ADDR(sc, 0);
2202 else
2203 addr = ARGE_TX_RING_ADDR(sc, i + 1);
2204 rd->arge_tx_ring[i].packet_ctrl = ARGE_DESC_EMPTY;
2205 rd->arge_tx_ring[i].next_desc = addr;
2206 txd = &sc->arge_cdata.arge_txdesc[i];
2207 txd->tx_m = NULL;
2208 }
2209
2210 bus_dmamap_sync(sc->arge_cdata.arge_tx_ring_tag,
2211 sc->arge_cdata.arge_tx_ring_map,
2212 BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
2213
2214 return (0);
2215}
2216
2217/*
2218 * Free the Tx ring, unload any pending dma transaction and free the mbuf.

Callers 1

arge_init_lockedFunction · 0.85

Calls 2

bzeroFunction · 0.85
bus_dmamap_syncFunction · 0.50

Tested by

no test coverage detected