1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2017 Cavium, Inc 3 */ 4 5 #ifndef __OCTEONTX_RXTX_H__ 6 #define __OCTEONTX_RXTX_H__ 7 8 #include <rte_ethdev.h> 9 10 #ifndef __hot 11 #define __hot __attribute__((hot)) 12 #endif 13 14 /* Packet type table */ 15 #define PTYPE_SIZE OCCTX_PKI_LTYPE_LAST 16 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, 29 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, 44 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, 65 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, 100 101 }; 102 103 uint16_t 104 octeontx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts); 105 106 uint16_t 107 octeontx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts); 108 109 #endif /* __OCTEONTX_RXTX_H__ */ 110