1*2d9fd380Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause 2*2d9fd380Sjfb8856606 * Copyright(C) 2020 Marvell International Ltd. 3*2d9fd380Sjfb8856606 */ 4*2d9fd380Sjfb8856606 5*2d9fd380Sjfb8856606 #ifndef __INCLUDE_RTE_NODE_ETH_API_H__ 6*2d9fd380Sjfb8856606 #define __INCLUDE_RTE_NODE_ETH_API_H__ 7*2d9fd380Sjfb8856606 8*2d9fd380Sjfb8856606 /** 9*2d9fd380Sjfb8856606 * @file rte_node_eth_api.h 10*2d9fd380Sjfb8856606 * 11*2d9fd380Sjfb8856606 * @warning 12*2d9fd380Sjfb8856606 * @b EXPERIMENTAL: 13*2d9fd380Sjfb8856606 * All functions in this file may be changed or removed without prior notice. 14*2d9fd380Sjfb8856606 * 15*2d9fd380Sjfb8856606 * This API allows to setup ethdev_rx and ethdev_tx nodes 16*2d9fd380Sjfb8856606 * and its queue associations. 17*2d9fd380Sjfb8856606 * 18*2d9fd380Sjfb8856606 */ 19*2d9fd380Sjfb8856606 20*2d9fd380Sjfb8856606 #ifdef __cplusplus 21*2d9fd380Sjfb8856606 extern "C" { 22*2d9fd380Sjfb8856606 #endif 23*2d9fd380Sjfb8856606 24*2d9fd380Sjfb8856606 #include <rte_common.h> 25*2d9fd380Sjfb8856606 #include <rte_mempool.h> 26*2d9fd380Sjfb8856606 27*2d9fd380Sjfb8856606 /** 28*2d9fd380Sjfb8856606 * Port config for ethdev_rx and ethdev_tx node. 29*2d9fd380Sjfb8856606 */ 30*2d9fd380Sjfb8856606 struct rte_node_ethdev_config { 31*2d9fd380Sjfb8856606 uint16_t port_id; 32*2d9fd380Sjfb8856606 /**< Port identifier */ 33*2d9fd380Sjfb8856606 uint16_t num_rx_queues; 34*2d9fd380Sjfb8856606 /**< Number of Rx queues. */ 35*2d9fd380Sjfb8856606 uint16_t num_tx_queues; 36*2d9fd380Sjfb8856606 /**< Number of Tx queues. */ 37*2d9fd380Sjfb8856606 struct rte_mempool **mp; 38*2d9fd380Sjfb8856606 /**< Array of mempools associated to Rx queue. */ 39*2d9fd380Sjfb8856606 uint16_t mp_count; 40*2d9fd380Sjfb8856606 /**< Size of mp array. */ 41*2d9fd380Sjfb8856606 }; 42*2d9fd380Sjfb8856606 43*2d9fd380Sjfb8856606 /** 44*2d9fd380Sjfb8856606 * Initializes ethdev nodes. 45*2d9fd380Sjfb8856606 * 46*2d9fd380Sjfb8856606 * @param cfg 47*2d9fd380Sjfb8856606 * Array of ethdev config that identifies which port's 48*2d9fd380Sjfb8856606 * ethdev_rx and ethdev_tx nodes need to be created 49*2d9fd380Sjfb8856606 * and queue association. 50*2d9fd380Sjfb8856606 * @param cnt 51*2d9fd380Sjfb8856606 * Size of cfg array. 52*2d9fd380Sjfb8856606 * @param nb_graphs 53*2d9fd380Sjfb8856606 * Number of graphs that will be used. 54*2d9fd380Sjfb8856606 * 55*2d9fd380Sjfb8856606 * @return 56*2d9fd380Sjfb8856606 * 0 on successful initialization, negative otherwise. 57*2d9fd380Sjfb8856606 */ 58*2d9fd380Sjfb8856606 __rte_experimental 59*2d9fd380Sjfb8856606 int rte_node_eth_config(struct rte_node_ethdev_config *cfg, 60*2d9fd380Sjfb8856606 uint16_t cnt, uint16_t nb_graphs); 61*2d9fd380Sjfb8856606 #ifdef __cplusplus 62*2d9fd380Sjfb8856606 } 63*2d9fd380Sjfb8856606 #endif 64*2d9fd380Sjfb8856606 65*2d9fd380Sjfb8856606 #endif /* __INCLUDE_RTE_NODE_ETH_API_H__ */ 66