1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2020 Marvell International Ltd. 3 */ 4 #ifndef __INCLUDE_ETHDEV_RX_PRIV_H__ 5 #define __INCLUDE_ETHDEV_RX_PRIV_H__ 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 #include <rte_common.h> 12 13 struct ethdev_rx_node_elem; 14 struct ethdev_rx_node_ctx; 15 typedef struct ethdev_rx_node_elem ethdev_rx_node_elem_t; 16 typedef struct ethdev_rx_node_ctx ethdev_rx_node_ctx_t; 17 18 /** 19 * @internal 20 * 21 * Ethernet device Rx node context structure. 22 */ 23 struct ethdev_rx_node_ctx { 24 uint16_t port_id; /**< Port identifier of the Rx node. */ 25 uint16_t queue_id; /**< Queue identifier of the Rx node. */ 26 uint16_t cls_next; 27 }; 28 29 /** 30 * @internal 31 * 32 * Ethernet device Rx node list element structure. 33 */ 34 struct ethdev_rx_node_elem { 35 struct ethdev_rx_node_elem *next; 36 /**< Pointer to the next Rx node element. */ 37 struct ethdev_rx_node_ctx ctx; 38 /**< Rx node context. */ 39 rte_node_t nid; 40 /**< Node identifier of the Rx node. */ 41 }; 42 43 enum ethdev_rx_next_nodes { 44 ETHDEV_RX_NEXT_IP4_LOOKUP, 45 ETHDEV_RX_NEXT_PKT_CLS, 46 ETHDEV_RX_NEXT_MAX, 47 }; 48 49 /** 50 * @internal 51 * 52 * Ethernet Rx node main structure. 53 */ 54 struct ethdev_rx_node_main { 55 ethdev_rx_node_elem_t *head; 56 /**< Pointer to the head Rx node element. */ 57 }; 58 59 /** 60 * @internal 61 * 62 * Get the Ethernet Rx node data. 63 * 64 * @return 65 * Pointer to Ethernet Rx node data. 66 */ 67 struct ethdev_rx_node_main *ethdev_rx_get_node_data_get(void); 68 69 /** 70 * @internal 71 * 72 * Get the Ethernet Rx node. 73 * 74 * @retrun 75 * Pointer to the Ethernet Rx node. 76 */ 77 struct rte_node_register *ethdev_rx_node_get(void); 78 79 #ifdef __cplusplus 80 } 81 #endif 82 83 #endif /* __INCLUDE_ETHDEV_RX_PRIV_H__ */ 84