1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2017 Cavium, Inc
5 #ifndef __OCTEONTX_RXTX_H__
6 #define __OCTEONTX_RXTX_H__
8 #include <rte_ethdev_driver.h>
11 #define __hot __attribute__((hot))
14 /* Packet type table */
15 #define PTYPE_SIZE OCCTX_PKI_LTYPE_LAST
17 static const uint32_t __rte_cache_aligned
18 ptype_table[PTYPE_SIZE][PTYPE_SIZE][PTYPE_SIZE] = {
19 [LC_NONE][LE_NONE][LF_NONE] = RTE_PTYPE_UNKNOWN,
20 [LC_NONE][LE_NONE][LF_IPSEC_ESP] = RTE_PTYPE_UNKNOWN,
21 [LC_NONE][LE_NONE][LF_IPFRAG] = RTE_PTYPE_L4_FRAG,
22 [LC_NONE][LE_NONE][LF_IPCOMP] = RTE_PTYPE_UNKNOWN,
23 [LC_NONE][LE_NONE][LF_TCP] = RTE_PTYPE_L4_TCP,
24 [LC_NONE][LE_NONE][LF_UDP] = RTE_PTYPE_L4_UDP,
25 [LC_NONE][LE_NONE][LF_GRE] = RTE_PTYPE_TUNNEL_GRE,
26 [LC_NONE][LE_NONE][LF_UDP_GENEVE] = RTE_PTYPE_TUNNEL_GENEVE,
27 [LC_NONE][LE_NONE][LF_UDP_VXLAN] = RTE_PTYPE_TUNNEL_VXLAN,
28 [LC_NONE][LE_NONE][LF_NVGRE] = RTE_PTYPE_TUNNEL_NVGRE,
30 [LC_IPV4][LE_NONE][LF_NONE] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_UNKNOWN,
31 [LC_IPV4][LE_NONE][LF_IPSEC_ESP] =
32 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L3_IPV4,
33 [LC_IPV4][LE_NONE][LF_IPFRAG] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_FRAG,
34 [LC_IPV4][LE_NONE][LF_IPCOMP] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_UNKNOWN,
35 [LC_IPV4][LE_NONE][LF_TCP] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
36 [LC_IPV4][LE_NONE][LF_UDP] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
37 [LC_IPV4][LE_NONE][LF_GRE] = RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_GRE,
38 [LC_IPV4][LE_NONE][LF_UDP_GENEVE] =
39 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_GENEVE,
40 [LC_IPV4][LE_NONE][LF_UDP_VXLAN] =
41 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_VXLAN,
42 [LC_IPV4][LE_NONE][LF_NVGRE] =
43 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_NVGRE,
45 [LC_IPV4_OPT][LE_NONE][LF_NONE] =
46 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_UNKNOWN,
47 [LC_IPV4_OPT][LE_NONE][LF_IPSEC_ESP] =
48 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L3_IPV4,
49 [LC_IPV4_OPT][LE_NONE][LF_IPFRAG] =
50 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_FRAG,
51 [LC_IPV4_OPT][LE_NONE][LF_IPCOMP] =
52 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_UNKNOWN,
53 [LC_IPV4_OPT][LE_NONE][LF_TCP] =
54 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,
55 [LC_IPV4_OPT][LE_NONE][LF_UDP] =
56 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,
57 [LC_IPV4_OPT][LE_NONE][LF_GRE] =
58 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_GRE,
59 [LC_IPV4_OPT][LE_NONE][LF_UDP_GENEVE] =
60 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_GENEVE,
61 [LC_IPV4_OPT][LE_NONE][LF_UDP_VXLAN] =
62 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_VXLAN,
63 [LC_IPV4_OPT][LE_NONE][LF_NVGRE] =
64 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_NVGRE,
66 [LC_IPV6][LE_NONE][LF_NONE] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_UNKNOWN,
67 [LC_IPV6][LE_NONE][LF_IPSEC_ESP] =
68 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L3_IPV4,
69 [LC_IPV6][LE_NONE][LF_IPFRAG] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_FRAG,
70 [LC_IPV6][LE_NONE][LF_IPCOMP] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_UNKNOWN,
71 [LC_IPV6][LE_NONE][LF_TCP] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
72 [LC_IPV6][LE_NONE][LF_UDP] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
73 [LC_IPV6][LE_NONE][LF_GRE] = RTE_PTYPE_L3_IPV6 | RTE_PTYPE_TUNNEL_GRE,
74 [LC_IPV6][LE_NONE][LF_UDP_GENEVE] =
75 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_TUNNEL_GENEVE,
76 [LC_IPV6][LE_NONE][LF_UDP_VXLAN] =
77 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_TUNNEL_VXLAN,
78 [LC_IPV6][LE_NONE][LF_NVGRE] =
79 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_NVGRE,
80 [LC_IPV6_OPT][LE_NONE][LF_NONE] =
81 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_UNKNOWN,
82 [LC_IPV6_OPT][LE_NONE][LF_IPSEC_ESP] =
83 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L3_IPV4,
84 [LC_IPV6_OPT][LE_NONE][LF_IPFRAG] =
85 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_FRAG,
86 [LC_IPV6_OPT][LE_NONE][LF_IPCOMP] =
87 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_UNKNOWN,
88 [LC_IPV6_OPT][LE_NONE][LF_TCP] =
89 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,
90 [LC_IPV6_OPT][LE_NONE][LF_UDP] =
91 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,
92 [LC_IPV6_OPT][LE_NONE][LF_GRE] =
93 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_TUNNEL_GRE,
94 [LC_IPV6_OPT][LE_NONE][LF_UDP_GENEVE] =
95 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_TUNNEL_GENEVE,
96 [LC_IPV6_OPT][LE_NONE][LF_UDP_VXLAN] =
97 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_TUNNEL_VXLAN,
98 [LC_IPV6_OPT][LE_NONE][LF_NVGRE] =
99 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_TUNNEL_NVGRE,
104 octeontx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts);
107 octeontx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts);
109 #endif /* __OCTEONTX_RXTX_H__ */