| 1425 | } |
| 1426 | |
| 1427 | static 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 | |
| 1465 | static int ena_tx_queue_setup(struct rte_eth_dev *dev, |
| 1466 | uint16_t queue_idx, |
no test coverage detected