Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright (C), 2025, Wuxi Stars Micro System Technologies Co., Ltd. 3 : : */ 4 : : 5 : : #include "sxe2_ethdev.h" 6 : : #include "sxe2_queue.h" 7 : : #include "sxe2_common_log.h" 8 : : #include "sxe2_tx.h" 9 : : #include "sxe2_rx.h" 10 : : 11 : 0 : void sxe2_sw_queue_ctx_hw_cap_set(struct sxe2_adapter *adapter, 12 : : struct sxe2_drv_queue_caps *q_caps) 13 : : { 14 : 0 : adapter->q_ctxt.qp_cnt_assign = q_caps->queues_cnt; 15 : 0 : adapter->q_ctxt.base_idx_in_pf = q_caps->base_idx_in_pf; 16 : 0 : } 17 : : 18 : 0 : int32_t sxe2_queues_init(struct rte_eth_dev *dev) 19 : : { 20 : 0 : int32_t ret = 0; 21 : 0 : uint16_t buf_size; 22 : 0 : uint16_t frame_size; 23 : 0 : struct sxe2_rx_queue *rxq; 24 : 0 : uint16_t nb_rxq; 25 : : 26 : 0 : frame_size = dev->data->mtu + SXE2_ETH_OVERHEAD; 27 [ # # ]: 0 : for (nb_rxq = 0; nb_rxq < dev->data->nb_rx_queues; nb_rxq++) { 28 : 0 : rxq = dev->data->rx_queues[nb_rxq]; 29 [ # # ]: 0 : if (!rxq) 30 : 0 : continue; 31 : : 32 [ # # ]: 0 : buf_size = rte_pktmbuf_data_room_size(rxq->mb_pool) - RTE_PKTMBUF_HEADROOM; 33 : 0 : rxq->rx_buf_len = RTE_ALIGN_FLOOR(buf_size, (1 << SXE2_RXQ_CTX_DBUFF_SHIFT)); 34 : 0 : rxq->rx_buf_len = RTE_MIN(rxq->rx_buf_len, SXE2_RX_MAX_DATA_BUF_SIZE); 35 [ # # ]: 0 : if (frame_size > rxq->rx_buf_len) 36 : 0 : dev->data->scattered_rx = 1; 37 : : } 38 : : 39 : 0 : return ret; 40 : : } 41 : : 42 : 0 : int32_t sxe2_queues_start(struct rte_eth_dev *dev) 43 : : { 44 : 0 : int32_t ret = 0; 45 : : 46 : 0 : ret = sxe2_txqs_all_start(dev); 47 [ # # ]: 0 : if (ret) { 48 : 0 : PMD_LOG_ERR(INIT, "Failed to start tx queue."); 49 : 0 : goto l_end; 50 : : } 51 : : 52 : 0 : ret = sxe2_rxqs_all_start(dev); 53 [ # # ]: 0 : if (ret) { 54 : 0 : PMD_LOG_ERR(INIT, "Failed to start rx queue."); 55 : 0 : sxe2_txqs_all_stop(dev); 56 : : } 57 : 0 : l_end: 58 : 0 : return ret; 59 : : } 60 : : 61 : 0 : void sxe2_queues_release(struct rte_eth_dev *dev) 62 : : { 63 : 0 : sxe2_all_rxqs_release(dev); 64 : : 65 : 0 : sxe2_all_txqs_release(dev); 66 : 0 : }