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