- struct bnxt_rx_queue *rxq = (struct bnxt_rx_queue *)rx_queue;
-
- if (rxq) {
- if (is_bnxt_in_error(rxq->bp))
- return;
-
- bnxt_rx_queue_release_mbufs(rxq);
+ bnxt_rx_queue_release_mbufs(rxq);
+
+ /* Free RX, AGG ring hardware descriptors */
+ if (rxq->rx_ring) {
+ bnxt_free_ring(rxq->rx_ring->rx_ring_struct);
+ rte_free(rxq->rx_ring->rx_ring_struct);
+ rxq->rx_ring->rx_ring_struct = NULL;
+ /* Free RX Agg ring hardware descriptors */
+ bnxt_free_ring(rxq->rx_ring->ag_ring_struct);
+ rte_free(rxq->rx_ring->ag_ring_struct);
+ rxq->rx_ring->ag_ring_struct = NULL;
+
+ rte_free(rxq->rx_ring);
+ rxq->rx_ring = NULL;
+ }
+ /* Free RX completion ring hardware descriptors */
+ if (rxq->cp_ring) {
+ bnxt_free_ring(rxq->cp_ring->cp_ring_struct);
+ rte_free(rxq->cp_ring->cp_ring_struct);
+ rxq->cp_ring->cp_ring_struct = NULL;
+ rte_free(rxq->cp_ring);
+ rxq->cp_ring = NULL;
+ }