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