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