xref: /dpdk/lib/node/kernel_rx_priv.h (revision 2d0cf6a7b5a86b57d1a5d0331d5a055c20deee96)
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