| 3301 | * m_defrag'd mbufs |
| 3302 | */ |
| 3303 | static __noinline struct mbuf * |
| 3304 | iflib_remove_mbuf(iflib_txq_t txq) |
| 3305 | { |
| 3306 | int ntxd, pidx; |
| 3307 | struct mbuf *m, **ifsd_m; |
| 3308 | |
| 3309 | ifsd_m = txq->ift_sds.ifsd_m; |
| 3310 | ntxd = txq->ift_size; |
| 3311 | pidx = txq->ift_pidx & (ntxd - 1); |
| 3312 | ifsd_m = txq->ift_sds.ifsd_m; |
| 3313 | m = ifsd_m[pidx]; |
| 3314 | ifsd_m[pidx] = NULL; |
| 3315 | bus_dmamap_unload(txq->ift_buf_tag, txq->ift_sds.ifsd_map[pidx]); |
| 3316 | if (txq->ift_sds.ifsd_tso_map != NULL) |
| 3317 | bus_dmamap_unload(txq->ift_tso_buf_tag, |
| 3318 | txq->ift_sds.ifsd_tso_map[pidx]); |
| 3319 | #if MEMORY_LOGGING |
| 3320 | txq->ift_dequeued++; |
| 3321 | #endif |
| 3322 | return (m); |
| 3323 | } |
| 3324 | |
| 3325 | static inline caddr_t |
| 3326 | calc_next_txd(iflib_txq_t txq, int cidx, uint8_t qid) |
no test coverage detected