1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2023 Marvell International Ltd. 3 */ 4 5 #ifndef __KERNEL_RX_PRIV_H__ 6 #define __KERNEL_RX_PRIV_H__ 7 8 #define KERN_RX_CACHE_COUNT 64 9 10 typedef struct kernel_rx_info { 11 struct rte_mbuf *rx_bufs[KERN_RX_CACHE_COUNT]; 12 uint16_t node_next; 13 uint16_t idx; 14 uint16_t cnt; 15 int sock; 16 } kernel_rx_info_t; 17 18 /* kernel_rx node context structure */ 19 typedef struct kernel_rx_node_ctx { 20 struct rte_mempool *pktmbuf_pool; 21 kernel_rx_info_t *recv_info; 22 } kernel_rx_node_ctx_t; 23 24 /* kernel_rx node list element structure */ 25 typedef struct kernel_rx_node_elem { 26 struct kernel_rx_node_elem *next; /* Pointer to the next node element. */ 27 struct kernel_rx_node_ctx ctx; /* kernel_rx node context. */ 28 rte_node_t nid; /* Node identifier of the kernel_rx node. */ 29 } kernel_rx_node_elem_t; 30 31 enum kernel_rx_next_nodes { 32 KERNEL_RX_NEXT_PKT_CLS, 33 KERNEL_RX_NEXT_IP4_LOOKUP, 34 KERNEL_RX_NEXT_MAX, 35 }; 36 37 /* kernel_rx node main structure */ 38 struct kernel_rx_node_main { 39 kernel_rx_node_elem_t *head; /* Pointer to the head node element. */ 40 }; 41 42 /* Get the pointer of kernel_rx node data */ 43 struct kernel_rx_node_main *kernel_rx_node_data_get(void); 44 45 /* Get the pointer of kernel_rx node register structure */ 46 struct rte_node_register *kernel_rx_node_get(void); 47 48 #endif /* __KERNEL_RX_PRIV_H__ */ 49