Lines Matching refs:ring

1586 static void bnxt_free_ring(struct bnxt *bp, struct bnxt_ring_struct *ring)  in bnxt_free_ring()  argument
1591 for (i = 0; i < ring->nr_pages; i++) { in bnxt_free_ring()
1592 if (!ring->pg_arr[i]) in bnxt_free_ring()
1595 dma_free_coherent(&pdev->dev, ring->page_size, in bnxt_free_ring()
1596 ring->pg_arr[i], ring->dma_arr[i]); in bnxt_free_ring()
1598 ring->pg_arr[i] = NULL; in bnxt_free_ring()
1600 if (ring->pg_tbl) { in bnxt_free_ring()
1601 dma_free_coherent(&pdev->dev, ring->nr_pages * 8, in bnxt_free_ring()
1602 ring->pg_tbl, ring->pg_tbl_map); in bnxt_free_ring()
1603 ring->pg_tbl = NULL; in bnxt_free_ring()
1605 if (ring->vmem_size && *ring->vmem) { in bnxt_free_ring()
1606 vfree(*ring->vmem); in bnxt_free_ring()
1607 *ring->vmem = NULL; in bnxt_free_ring()
1611 static int bnxt_alloc_ring(struct bnxt *bp, struct bnxt_ring_struct *ring) in bnxt_alloc_ring() argument
1616 if (ring->nr_pages > 1) { in bnxt_alloc_ring()
1617 ring->pg_tbl = dma_alloc_coherent(&pdev->dev, in bnxt_alloc_ring()
1618 ring->nr_pages * 8, in bnxt_alloc_ring()
1619 &ring->pg_tbl_map, in bnxt_alloc_ring()
1621 if (!ring->pg_tbl) in bnxt_alloc_ring()
1625 for (i = 0; i < ring->nr_pages; i++) { in bnxt_alloc_ring()
1626 ring->pg_arr[i] = dma_alloc_coherent(&pdev->dev, in bnxt_alloc_ring()
1627 ring->page_size, in bnxt_alloc_ring()
1628 &ring->dma_arr[i], in bnxt_alloc_ring()
1630 if (!ring->pg_arr[i]) in bnxt_alloc_ring()
1633 if (ring->nr_pages > 1) in bnxt_alloc_ring()
1634 ring->pg_tbl[i] = cpu_to_le64(ring->dma_arr[i]); in bnxt_alloc_ring()
1637 if (ring->vmem_size) { in bnxt_alloc_ring()
1638 *ring->vmem = vzalloc(ring->vmem_size); in bnxt_alloc_ring()
1639 if (!(*ring->vmem)) in bnxt_alloc_ring()
1655 struct bnxt_ring_struct *ring; in bnxt_free_rx_rings() local
1668 ring = &rxr->rx_ring_struct; in bnxt_free_rx_rings()
1669 bnxt_free_ring(bp, ring); in bnxt_free_rx_rings()
1671 ring = &rxr->rx_agg_ring_struct; in bnxt_free_rx_rings()
1672 bnxt_free_ring(bp, ring); in bnxt_free_rx_rings()
1689 struct bnxt_ring_struct *ring; in bnxt_alloc_rx_rings() local
1695 ring = &rxr->rx_ring_struct; in bnxt_alloc_rx_rings()
1697 rc = bnxt_alloc_ring(bp, ring); in bnxt_alloc_rx_rings()
1704 ring = &rxr->rx_agg_ring_struct; in bnxt_alloc_rx_rings()
1705 rc = bnxt_alloc_ring(bp, ring); in bnxt_alloc_rx_rings()
1738 struct bnxt_ring_struct *ring; in bnxt_free_tx_rings() local
1751 ring = &txr->tx_ring_struct; in bnxt_free_tx_rings()
1753 bnxt_free_ring(bp, ring); in bnxt_free_tx_rings()
1780 struct bnxt_ring_struct *ring; in bnxt_alloc_tx_rings() local
1786 ring = &txr->tx_ring_struct; in bnxt_alloc_tx_rings()
1788 rc = bnxt_alloc_ring(bp, ring); in bnxt_alloc_tx_rings()
1815 ring->queue_id = bp->q_info[j].queue_id; in bnxt_alloc_tx_rings()
1832 struct bnxt_ring_struct *ring; in bnxt_free_cp_rings() local
1838 ring = &cpr->cp_ring_struct; in bnxt_free_cp_rings()
1840 bnxt_free_ring(bp, ring); in bnxt_free_cp_rings()
1851 struct bnxt_ring_struct *ring; in bnxt_alloc_cp_rings() local
1857 ring = &cpr->cp_ring_struct; in bnxt_alloc_cp_rings()
1859 rc = bnxt_alloc_ring(bp, ring); in bnxt_alloc_cp_rings()
1875 struct bnxt_ring_struct *ring; in bnxt_init_ring_struct() local
1881 ring = &cpr->cp_ring_struct; in bnxt_init_ring_struct()
1882 ring->nr_pages = bp->cp_nr_pages; in bnxt_init_ring_struct()
1883 ring->page_size = HW_CMPD_RING_SIZE; in bnxt_init_ring_struct()
1884 ring->pg_arr = (void **)cpr->cp_desc_ring; in bnxt_init_ring_struct()
1885 ring->dma_arr = cpr->cp_desc_mapping; in bnxt_init_ring_struct()
1886 ring->vmem_size = 0; in bnxt_init_ring_struct()
1889 ring = &rxr->rx_ring_struct; in bnxt_init_ring_struct()
1890 ring->nr_pages = bp->rx_nr_pages; in bnxt_init_ring_struct()
1891 ring->page_size = HW_RXBD_RING_SIZE; in bnxt_init_ring_struct()
1892 ring->pg_arr = (void **)rxr->rx_desc_ring; in bnxt_init_ring_struct()
1893 ring->dma_arr = rxr->rx_desc_mapping; in bnxt_init_ring_struct()
1894 ring->vmem_size = SW_RXBD_RING_SIZE * bp->rx_nr_pages; in bnxt_init_ring_struct()
1895 ring->vmem = (void **)&rxr->rx_buf_ring; in bnxt_init_ring_struct()
1897 ring = &rxr->rx_agg_ring_struct; in bnxt_init_ring_struct()
1898 ring->nr_pages = bp->rx_agg_nr_pages; in bnxt_init_ring_struct()
1899 ring->page_size = HW_RXBD_RING_SIZE; in bnxt_init_ring_struct()
1900 ring->pg_arr = (void **)rxr->rx_agg_desc_ring; in bnxt_init_ring_struct()
1901 ring->dma_arr = rxr->rx_agg_desc_mapping; in bnxt_init_ring_struct()
1902 ring->vmem_size = SW_RXBD_AGG_RING_SIZE * bp->rx_agg_nr_pages; in bnxt_init_ring_struct()
1903 ring->vmem = (void **)&rxr->rx_agg_ring; in bnxt_init_ring_struct()
1906 ring = &txr->tx_ring_struct; in bnxt_init_ring_struct()
1907 ring->nr_pages = bp->tx_nr_pages; in bnxt_init_ring_struct()
1908 ring->page_size = HW_RXBD_RING_SIZE; in bnxt_init_ring_struct()
1909 ring->pg_arr = (void **)txr->tx_desc_ring; in bnxt_init_ring_struct()
1910 ring->dma_arr = txr->tx_desc_mapping; in bnxt_init_ring_struct()
1911 ring->vmem_size = SW_TXBD_RING_SIZE * bp->tx_nr_pages; in bnxt_init_ring_struct()
1912 ring->vmem = (void **)&txr->tx_buf_ring; in bnxt_init_ring_struct()
1916 static void bnxt_init_rxbd_pages(struct bnxt_ring_struct *ring, u32 type) in bnxt_init_rxbd_pages() argument
1922 rx_buf_ring = (struct rx_bd **)ring->pg_arr; in bnxt_init_rxbd_pages()
1923 for (i = 0, prod = 0; i < ring->nr_pages; i++) { in bnxt_init_rxbd_pages()
1943 struct bnxt_ring_struct *ring; in bnxt_init_one_rx_ring() local
1957 ring = &rxr->rx_ring_struct; in bnxt_init_one_rx_ring()
1958 bnxt_init_rxbd_pages(ring, type); in bnxt_init_one_rx_ring()
1970 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_init_one_rx_ring()
1975 ring = &rxr->rx_agg_ring_struct; in bnxt_init_one_rx_ring()
1980 bnxt_init_rxbd_pages(ring, type); in bnxt_init_one_rx_ring()
1992 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_init_one_rx_ring()
2040 struct bnxt_ring_struct *ring = &txr->tx_ring_struct; in bnxt_init_tx_rings() local
2042 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_init_tx_rings()
3206 struct bnxt_ring_struct *ring, in hwrm_ring_alloc_send_msg() argument
3218 if (ring->nr_pages > 1) { in hwrm_ring_alloc_send_msg()
3219 req.page_tbl_addr = cpu_to_le64(ring->pg_tbl_map); in hwrm_ring_alloc_send_msg()
3224 req.page_tbl_addr = cpu_to_le64(ring->dma_arr[0]); in hwrm_ring_alloc_send_msg()
3238 req.queue_id = cpu_to_le16(ring->queue_id); in hwrm_ring_alloc_send_msg()
3288 ring->fw_ring_id = ring_id; in hwrm_ring_alloc_send_msg()
3300 struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; in bnxt_hwrm_ring_alloc() local
3302 rc = hwrm_ring_alloc_send_msg(bp, ring, in bnxt_hwrm_ring_alloc()
3309 bp->grp_info[i].cp_fw_ring_id = ring->fw_ring_id; in bnxt_hwrm_ring_alloc()
3317 struct bnxt_ring_struct *ring = &txr->tx_ring_struct; in bnxt_hwrm_ring_alloc() local
3320 rc = hwrm_ring_alloc_send_msg(bp, ring, in bnxt_hwrm_ring_alloc()
3333 struct bnxt_ring_struct *ring = &rxr->rx_ring_struct; in bnxt_hwrm_ring_alloc() local
3335 rc = hwrm_ring_alloc_send_msg(bp, ring, in bnxt_hwrm_ring_alloc()
3342 bp->grp_info[i].rx_fw_ring_id = ring->fw_ring_id; in bnxt_hwrm_ring_alloc()
3350 struct bnxt_ring_struct *ring = in bnxt_hwrm_ring_alloc() local
3353 rc = hwrm_ring_alloc_send_msg(bp, ring, in bnxt_hwrm_ring_alloc()
3364 bp->grp_info[i].agg_fw_ring_id = ring->fw_ring_id; in bnxt_hwrm_ring_alloc()
3372 struct bnxt_ring_struct *ring, in hwrm_ring_free_send_msg() argument
3382 req.ring_id = cpu_to_le16(ring->fw_ring_id); in hwrm_ring_free_send_msg()
3422 struct bnxt_ring_struct *ring = &txr->tx_ring_struct; in bnxt_hwrm_ring_free() local
3425 if (ring->fw_ring_id != INVALID_HW_RING_ID) { in bnxt_hwrm_ring_free()
3427 bp, ring, in bnxt_hwrm_ring_free()
3431 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_hwrm_ring_free()
3440 struct bnxt_ring_struct *ring = &rxr->rx_ring_struct; in bnxt_hwrm_ring_free() local
3443 if (ring->fw_ring_id != INVALID_HW_RING_ID) { in bnxt_hwrm_ring_free()
3445 bp, ring, in bnxt_hwrm_ring_free()
3449 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_hwrm_ring_free()
3460 struct bnxt_ring_struct *ring = in bnxt_hwrm_ring_free() local
3464 if (ring->fw_ring_id != INVALID_HW_RING_ID) { in bnxt_hwrm_ring_free()
3466 bp, ring, in bnxt_hwrm_ring_free()
3470 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_hwrm_ring_free()
3481 struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; in bnxt_hwrm_ring_free() local
3483 if (ring->fw_ring_id != INVALID_HW_RING_ID) { in bnxt_hwrm_ring_free()
3485 bp, ring, in bnxt_hwrm_ring_free()
3488 ring->fw_ring_id = INVALID_HW_RING_ID; in bnxt_hwrm_ring_free()