MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bnxt_init_rx_ring_struct

Function bnxt_init_rx_ring_struct

dpdk/drivers/net/bnxt/bnxt_rxr.c:1181–1275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1179}
1180
1181int bnxt_init_rx_ring_struct(struct bnxt_rx_queue *rxq, unsigned int socket_id)
1182{
1183 struct bnxt_cp_ring_info *cpr;
1184 struct bnxt_rx_ring_info *rxr;
1185 struct bnxt_ring *ring;
1186
1187 rxq->rx_buf_size = BNXT_MAX_PKT_LEN + sizeof(struct rte_mbuf);
1188
1189 if (rxq->rx_ring != NULL) {
1190 rxr = rxq->rx_ring;
1191 } else {
1192
1193 rxr = rte_zmalloc_socket("bnxt_rx_ring",
1194 sizeof(struct bnxt_rx_ring_info),
1195 RTE_CACHE_LINE_SIZE, socket_id);
1196 if (rxr == NULL)
1197 return -ENOMEM;
1198 rxq->rx_ring = rxr;
1199 }
1200
1201 if (rxr->rx_ring_struct == NULL) {
1202 ring = rte_zmalloc_socket("bnxt_rx_ring_struct",
1203 sizeof(struct bnxt_ring),
1204 RTE_CACHE_LINE_SIZE, socket_id);
1205 if (ring == NULL)
1206 return -ENOMEM;
1207 rxr->rx_ring_struct = ring;
1208 ring->ring_size = rte_align32pow2(rxq->nb_rx_desc);
1209 ring->ring_mask = ring->ring_size - 1;
1210 ring->bd = (void *)rxr->rx_desc_ring;
1211 ring->bd_dma = rxr->rx_desc_mapping;
1212
1213 /* Allocate extra rx ring entries for vector rx. */
1214 ring->vmem_size = sizeof(struct rte_mbuf *) *
1215 (ring->ring_size + BNXT_RX_EXTRA_MBUF_ENTRIES);
1216
1217 ring->vmem = (void **)&rxr->rx_buf_ring;
1218 ring->fw_ring_id = INVALID_HW_RING_ID;
1219 }
1220
1221 if (rxq->cp_ring != NULL) {
1222 cpr = rxq->cp_ring;
1223 } else {
1224 cpr = rte_zmalloc_socket("bnxt_rx_ring",
1225 sizeof(struct bnxt_cp_ring_info),
1226 RTE_CACHE_LINE_SIZE, socket_id);
1227 if (cpr == NULL)
1228 return -ENOMEM;
1229 rxq->cp_ring = cpr;
1230 }
1231
1232 if (cpr->cp_ring_struct == NULL) {
1233 ring = rte_zmalloc_socket("bnxt_rx_ring_struct",
1234 sizeof(struct bnxt_ring),
1235 RTE_CACHE_LINE_SIZE, socket_id);
1236 if (ring == NULL)
1237 return -ENOMEM;
1238 cpr->cp_ring_struct = ring;

Callers 2

bnxt_alloc_hwrm_ringsFunction · 0.85
bnxt_rx_queue_setup_opFunction · 0.85

Calls 3

rte_zmalloc_socketFunction · 0.85
bnxt_need_agg_ringFunction · 0.85
rte_align32pow2Function · 0.50

Tested by

no test coverage detected