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

Function ena_queue_start

dpdk/drivers/net/ena/ena_ethdev.c:1427–1463  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1425}
1426
1427static int ena_queue_start(struct rte_eth_dev *dev, struct ena_ring *ring)
1428{
1429 int rc, bufs_num;
1430
1431 ena_assert_msg(ring->configured == 1,
1432 "Trying to start unconfigured queue\n");
1433
1434 rc = ena_create_io_queue(dev, ring);
1435 if (rc) {
1436 PMD_INIT_LOG(ERR, "Failed to create IO queue\n");
1437 return rc;
1438 }
1439
1440 ring->next_to_clean = 0;
1441 ring->next_to_use = 0;
1442
1443 if (ring->type == ENA_RING_TYPE_TX) {
1444 ring->tx_stats.available_desc =
1445 ena_com_free_q_entries(ring->ena_com_io_sq);
1446 return 0;
1447 }
1448
1449 bufs_num = ring->ring_size - 1;
1450 rc = ena_populate_rx_queue(ring, bufs_num);
1451 if (rc != bufs_num) {
1452 ena_com_destroy_io_queue(&ring->adapter->ena_dev,
1453 ENA_IO_RXQ_IDX(ring->id));
1454 PMD_INIT_LOG(ERR, "Failed to populate Rx ring\n");
1455 return ENA_COM_FAULT;
1456 }
1457 /* Flush per-core RX buffers pools cache as they can be used on other
1458 * cores as well.
1459 */
1460 rte_mempool_cache_flush(NULL, ring->mb_pool);
1461
1462 return 0;
1463}
1464
1465static int ena_tx_queue_setup(struct rte_eth_dev *dev,
1466 uint16_t queue_idx,

Callers 1

ena_queue_start_allFunction · 0.85

Calls 5

ena_create_io_queueFunction · 0.85
ena_populate_rx_queueFunction · 0.85
rte_mempool_cache_flushFunction · 0.85
ena_com_free_q_entriesFunction · 0.50
ena_com_destroy_io_queueFunction · 0.50

Tested by

no test coverage detected