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

Function iflib_rx_sds_free

freebsd/net/iflib.c:2285–2329  ·  view source on GitHub ↗

* * Free receive ring data structures * **********************************************************************/

Source from the content-addressed store, hash-verified

2283 *
2284 **********************************************************************/
2285static void
2286iflib_rx_sds_free(iflib_rxq_t rxq)
2287{
2288 iflib_fl_t fl;
2289 int i, j;
2290
2291 if (rxq->ifr_fl != NULL) {
2292 for (i = 0; i < rxq->ifr_nfl; i++) {
2293 fl = &rxq->ifr_fl[i];
2294 if (fl->ifl_buf_tag != NULL) {
2295 if (fl->ifl_sds.ifsd_map != NULL) {
2296 for (j = 0; j < fl->ifl_size; j++) {
2297 bus_dmamap_sync(
2298 fl->ifl_buf_tag,
2299 fl->ifl_sds.ifsd_map[j],
2300 BUS_DMASYNC_POSTREAD);
2301 bus_dmamap_unload(
2302 fl->ifl_buf_tag,
2303 fl->ifl_sds.ifsd_map[j]);
2304 bus_dmamap_destroy(
2305 fl->ifl_buf_tag,
2306 fl->ifl_sds.ifsd_map[j]);
2307 }
2308 }
2309 bus_dma_tag_destroy(fl->ifl_buf_tag);
2310 fl->ifl_buf_tag = NULL;
2311 }
2312 free(fl->ifl_sds.ifsd_m, M_IFLIB);
2313 free(fl->ifl_sds.ifsd_cl, M_IFLIB);
2314 free(fl->ifl_sds.ifsd_ba, M_IFLIB);
2315 free(fl->ifl_sds.ifsd_map, M_IFLIB);
2316 free(fl->ifl_rx_bitmap, M_IFLIB);
2317 fl->ifl_sds.ifsd_m = NULL;
2318 fl->ifl_sds.ifsd_cl = NULL;
2319 fl->ifl_sds.ifsd_ba = NULL;
2320 fl->ifl_sds.ifsd_map = NULL;
2321 fl->ifl_rx_bitmap = NULL;
2322 }
2323 free(rxq->ifr_fl, M_IFLIB);
2324 rxq->ifr_fl = NULL;
2325 free(rxq->ifr_ifdi, M_IFLIB);
2326 rxq->ifr_ifdi = NULL;
2327 rxq->ifr_cq_cidx = 0;
2328 }
2329}
2330
2331/*
2332 * Timer routine

Callers 1

iflib_rx_structures_freeFunction · 0.85

Calls 5

bus_dmamap_syncFunction · 0.50
bus_dmamap_unloadFunction · 0.50
bus_dmamap_destroyFunction · 0.50
bus_dma_tag_destroyFunction · 0.50
freeFunction · 0.50

Tested by

no test coverage detected