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