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