| 520 | } |
| 521 | |
| 522 | static int bnxt_alloc_rx_ring(struct bnxt *bp, int queue_index) |
| 523 | { |
| 524 | struct bnxt_rx_queue *rxq = bp->rx_queues[queue_index]; |
| 525 | struct bnxt_cp_ring_info *cpr = rxq->cp_ring; |
| 526 | struct bnxt_ring *cp_ring = cpr->cp_ring_struct; |
| 527 | struct bnxt_rx_ring_info *rxr = rxq->rx_ring; |
| 528 | struct bnxt_ring *ring = rxr->rx_ring_struct; |
| 529 | uint8_t ring_type; |
| 530 | int rc = 0; |
| 531 | |
| 532 | ring_type = HWRM_RING_ALLOC_INPUT_RING_TYPE_RX; |
| 533 | |
| 534 | rc = bnxt_hwrm_ring_alloc(bp, ring, ring_type, |
| 535 | queue_index, cpr->hw_stats_ctx_id, |
| 536 | cp_ring->fw_ring_id, 0); |
| 537 | if (rc) |
| 538 | return rc; |
| 539 | |
| 540 | rxr->rx_raw_prod = 0; |
| 541 | if (BNXT_HAS_RING_GRPS(bp)) |
| 542 | bp->grp_info[queue_index].rx_fw_ring_id = ring->fw_ring_id; |
| 543 | bnxt_set_db(bp, &rxr->rx_db, ring_type, queue_index, ring->fw_ring_id, |
| 544 | ring->ring_mask); |
| 545 | bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); |
| 546 | |
| 547 | return 0; |
| 548 | } |
| 549 | |
| 550 | static int bnxt_alloc_rx_agg_ring(struct bnxt *bp, int queue_index) |
| 551 | { |
no test coverage detected