1*2d9fd380Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*2d9fd380Sjfb8856606  * Copyright (C) 2020 Marvell International Ltd.
3*2d9fd380Sjfb8856606  */
4*2d9fd380Sjfb8856606 #ifndef _IPSEC_WORKER_H_
5*2d9fd380Sjfb8856606 #define _IPSEC_WORKER_H_
6*2d9fd380Sjfb8856606 
7*2d9fd380Sjfb8856606 #include "ipsec.h"
8*2d9fd380Sjfb8856606 
9*2d9fd380Sjfb8856606 enum pkt_type {
10*2d9fd380Sjfb8856606 	PKT_TYPE_PLAIN_IPV4 = 1,
11*2d9fd380Sjfb8856606 	PKT_TYPE_IPSEC_IPV4,
12*2d9fd380Sjfb8856606 	PKT_TYPE_PLAIN_IPV6,
13*2d9fd380Sjfb8856606 	PKT_TYPE_IPSEC_IPV6,
14*2d9fd380Sjfb8856606 	PKT_TYPE_INVALID
15*2d9fd380Sjfb8856606 };
16*2d9fd380Sjfb8856606 
17*2d9fd380Sjfb8856606 enum {
18*2d9fd380Sjfb8856606 	PKT_DROPPED = 0,
19*2d9fd380Sjfb8856606 	PKT_FORWARDED,
20*2d9fd380Sjfb8856606 	PKT_POSTED	/* for lookaside case */
21*2d9fd380Sjfb8856606 };
22*2d9fd380Sjfb8856606 
23*2d9fd380Sjfb8856606 struct route_table {
24*2d9fd380Sjfb8856606 	struct rt_ctx *rt4_ctx;
25*2d9fd380Sjfb8856606 	struct rt_ctx *rt6_ctx;
26*2d9fd380Sjfb8856606 };
27*2d9fd380Sjfb8856606 
28*2d9fd380Sjfb8856606 /*
29*2d9fd380Sjfb8856606  * Conf required by event mode worker with tx internal port
30*2d9fd380Sjfb8856606  */
31*2d9fd380Sjfb8856606 struct lcore_conf_ev_tx_int_port_wrkr {
32*2d9fd380Sjfb8856606 	struct ipsec_ctx inbound;
33*2d9fd380Sjfb8856606 	struct ipsec_ctx outbound;
34*2d9fd380Sjfb8856606 	struct route_table rt;
35*2d9fd380Sjfb8856606 } __rte_cache_aligned;
36*2d9fd380Sjfb8856606 
37*2d9fd380Sjfb8856606 void ipsec_poll_mode_worker(void);
38*2d9fd380Sjfb8856606 
39*2d9fd380Sjfb8856606 int ipsec_launch_one_lcore(void *args);
40*2d9fd380Sjfb8856606 
41*2d9fd380Sjfb8856606 #endif /* _IPSEC_WORKER_H_ */
42