* * Free receive ring data structures * **********************************************************************/
| 2283 | * |
| 2284 | **********************************************************************/ |
| 2285 | static void |
| 2286 | iflib_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 |
no test coverage detected