xref: /dpdk/lib/node/rte_node_eth_api.h (revision 99a2dd95)
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