LCOV - code coverage report
Current view: top level - drivers/net/txgbe - txgbe_ptypes.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 61 0.0 %
Date: 2024-04-01 19:00:53 Functions: 0 5 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 31 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright(c) 2015-2020 Beijing WangXun Technology Co., Ltd.
       3                 :            :  */
       4                 :            : 
       5                 :            : #include <rte_mbuf.h>
       6                 :            : #include <rte_memory.h>
       7                 :            : 
       8                 :            : #include "base/txgbe_type.h"
       9                 :            : #include "txgbe_ptypes.h"
      10                 :            : 
      11                 :            : /* The txgbe_ptype_lookup is used to convert from the 8-bit ptid in the
      12                 :            :  * hardware to a bit-field that can be used by SW to more easily determine the
      13                 :            :  * packet type.
      14                 :            :  *
      15                 :            :  * Macros are used to shorten the table lines and make this table human
      16                 :            :  * readable.
      17                 :            :  *
      18                 :            :  * We store the PTYPE in the top byte of the bit field - this is just so that
      19                 :            :  * we can check that the table doesn't have a row missing, as the index into
      20                 :            :  * the table should be the PTYPE.
      21                 :            :  *
      22                 :            :  * Typical work flow:
      23                 :            :  *
      24                 :            :  * IF NOT txgbe_ptype_lookup[ptid].known
      25                 :            :  * THEN
      26                 :            :  *      Packet is unknown
      27                 :            :  * ELSE IF txgbe_ptype_lookup[ptid].mac == TXGBE_DEC_PTYPE_MAC_IP
      28                 :            :  *      Use the rest of the fields to look at the tunnels, inner protocols, etc
      29                 :            :  * ELSE
      30                 :            :  *      Use the enum txgbe_l2_ptypes to decode the packet type
      31                 :            :  * ENDIF
      32                 :            :  */
      33                 :            : #define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \
      34                 :            :         [ptid] = (RTE_PTYPE_L2_##l2 | \
      35                 :            :                 RTE_PTYPE_L3_##l3 | \
      36                 :            :                 RTE_PTYPE_L4_##l4 | \
      37                 :            :                 RTE_PTYPE_TUNNEL_##tun | \
      38                 :            :                 RTE_PTYPE_INNER_L2_##el2 | \
      39                 :            :                 RTE_PTYPE_INNER_L3_##el3 | \
      40                 :            :                 RTE_PTYPE_INNER_L4_##el4)
      41                 :            : 
      42                 :            : #define RTE_PTYPE_L2_NONE               0
      43                 :            : #define RTE_PTYPE_L3_NONE               0
      44                 :            : #define RTE_PTYPE_L4_NONE               0
      45                 :            : #define RTE_PTYPE_TUNNEL_NONE           0
      46                 :            : #define RTE_PTYPE_INNER_L2_NONE         0
      47                 :            : #define RTE_PTYPE_INNER_L3_NONE         0
      48                 :            : #define RTE_PTYPE_INNER_L4_NONE         0
      49                 :            : 
      50                 :            : static u32 txgbe_ptype_lookup[TXGBE_PTID_MAX] __rte_cache_aligned = {
      51                 :            :         /* L2:0-3 L3:4-7 L4:8-11 TUN:12-15 EL2:16-19 EL3:20-23 EL2:24-27 */
      52                 :            :         /* L2: ETH */
      53                 :            :         TPTE(0x10, ETHER,          NONE, NONE, NONE, NONE, NONE, NONE),
      54                 :            :         TPTE(0x11, ETHER,          NONE, NONE, NONE, NONE, NONE, NONE),
      55                 :            :         TPTE(0x12, ETHER_TIMESYNC, NONE, NONE, NONE, NONE, NONE, NONE),
      56                 :            :         TPTE(0x13, ETHER_FIP,      NONE, NONE, NONE, NONE, NONE, NONE),
      57                 :            :         TPTE(0x14, ETHER_LLDP,     NONE, NONE, NONE, NONE, NONE, NONE),
      58                 :            :         TPTE(0x15, ETHER_CNM,      NONE, NONE, NONE, NONE, NONE, NONE),
      59                 :            :         TPTE(0x16, ETHER_EAPOL,    NONE, NONE, NONE, NONE, NONE, NONE),
      60                 :            :         TPTE(0x17, ETHER_ARP,      NONE, NONE, NONE, NONE, NONE, NONE),
      61                 :            :         /* L2: Ethertype Filter */
      62                 :            :         TPTE(0x18, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      63                 :            :         TPTE(0x19, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      64                 :            :         TPTE(0x1A, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      65                 :            :         TPTE(0x1B, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      66                 :            :         TPTE(0x1C, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      67                 :            :         TPTE(0x1D, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      68                 :            :         TPTE(0x1E, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      69                 :            :         TPTE(0x1F, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),
      70                 :            :         /* L3: IP */
      71                 :            :         TPTE(0x20, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
      72                 :            :         TPTE(0x21, ETHER, IPV4, FRAG,    NONE, NONE, NONE, NONE),
      73                 :            :         TPTE(0x22, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
      74                 :            :         TPTE(0x23, ETHER, IPV4, UDP,     NONE, NONE, NONE, NONE),
      75                 :            :         TPTE(0x24, ETHER, IPV4, TCP,     NONE, NONE, NONE, NONE),
      76                 :            :         TPTE(0x25, ETHER, IPV4, SCTP,    NONE, NONE, NONE, NONE),
      77                 :            :         TPTE(0x29, ETHER, IPV6, FRAG,    NONE, NONE, NONE, NONE),
      78                 :            :         TPTE(0x2A, ETHER, IPV6, NONFRAG, NONE, NONE, NONE, NONE),
      79                 :            :         TPTE(0x2B, ETHER, IPV6, UDP,     NONE, NONE, NONE, NONE),
      80                 :            :         TPTE(0x2C, ETHER, IPV6, TCP,     NONE, NONE, NONE, NONE),
      81                 :            :         TPTE(0x2D, ETHER, IPV6, SCTP,    NONE, NONE, NONE, NONE),
      82                 :            :         /* L2: FCoE */
      83                 :            :         TPTE(0x30, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      84                 :            :         TPTE(0x31, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      85                 :            :         TPTE(0x32, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      86                 :            :         TPTE(0x33, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      87                 :            :         TPTE(0x34, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      88                 :            :         TPTE(0x35, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      89                 :            :         TPTE(0x36, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      90                 :            :         TPTE(0x37, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      91                 :            :         TPTE(0x38, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      92                 :            :         TPTE(0x39, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
      93                 :            :         /* IPv4 -> IPv4/IPv6 */
      94                 :            :         TPTE(0x81, ETHER, IPV4, NONE, IP, NONE, IPV4, FRAG),
      95                 :            :         TPTE(0x82, ETHER, IPV4, NONE, IP, NONE, IPV4, NONFRAG),
      96                 :            :         TPTE(0x83, ETHER, IPV4, NONE, IP, NONE, IPV4, UDP),
      97                 :            :         TPTE(0x84, ETHER, IPV4, NONE, IP, NONE, IPV4, TCP),
      98                 :            :         TPTE(0x85, ETHER, IPV4, NONE, IP, NONE, IPV4, SCTP),
      99                 :            :         TPTE(0x89, ETHER, IPV4, NONE, IP, NONE, IPV6, FRAG),
     100                 :            :         TPTE(0x8A, ETHER, IPV4, NONE, IP, NONE, IPV6, NONFRAG),
     101                 :            :         TPTE(0x8B, ETHER, IPV4, NONE, IP, NONE, IPV6, UDP),
     102                 :            :         TPTE(0x8C, ETHER, IPV4, NONE, IP, NONE, IPV6, TCP),
     103                 :            :         TPTE(0x8D, ETHER, IPV4, NONE, IP, NONE, IPV6, SCTP),
     104                 :            :         /* IPv4 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
     105                 :            :         TPTE(0x90, ETHER, IPV4, NONE, GRENAT, NONE, NONE, NONE),
     106                 :            :         TPTE(0x91, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, FRAG),
     107                 :            :         TPTE(0x92, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, NONFRAG),
     108                 :            :         TPTE(0x93, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, UDP),
     109                 :            :         TPTE(0x94, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, TCP),
     110                 :            :         TPTE(0x95, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, SCTP),
     111                 :            :         TPTE(0x99, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, FRAG),
     112                 :            :         TPTE(0x9A, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, NONFRAG),
     113                 :            :         TPTE(0x9B, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, UDP),
     114                 :            :         TPTE(0x9C, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, TCP),
     115                 :            :         TPTE(0x9D, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, SCTP),
     116                 :            :         /* IPv4 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
     117                 :            :         TPTE(0xA0, ETHER, IPV4, NONE, GRENAT, ETHER, NONE,  NONE),
     118                 :            :         TPTE(0xA1, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, FRAG),
     119                 :            :         TPTE(0xA2, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, NONFRAG),
     120                 :            :         TPTE(0xA3, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, UDP),
     121                 :            :         TPTE(0xA4, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, TCP),
     122                 :            :         TPTE(0xA5, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, SCTP),
     123                 :            :         TPTE(0xA9, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, FRAG),
     124                 :            :         TPTE(0xAA, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, NONFRAG),
     125                 :            :         TPTE(0xAB, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, UDP),
     126                 :            :         TPTE(0xAC, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, TCP),
     127                 :            :         TPTE(0xAD, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, SCTP),
     128                 :            :         /* IPv4 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
     129                 :            :         TPTE(0xB0, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, NONE,  NONE),
     130                 :            :         TPTE(0xB1, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
     131                 :            :         TPTE(0xB2, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
     132                 :            :         TPTE(0xB3, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
     133                 :            :         TPTE(0xB4, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
     134                 :            :         TPTE(0xB5, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
     135                 :            :         TPTE(0xB9, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
     136                 :            :         TPTE(0xBA, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
     137                 :            :         TPTE(0xBB, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
     138                 :            :         TPTE(0xBC, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
     139                 :            :         TPTE(0xBD, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
     140                 :            :         /* IPv6 -> IPv4/IPv6 */
     141                 :            :         TPTE(0xC1, ETHER, IPV6, NONE, IP, NONE, IPV4, FRAG),
     142                 :            :         TPTE(0xC2, ETHER, IPV6, NONE, IP, NONE, IPV4, NONFRAG),
     143                 :            :         TPTE(0xC3, ETHER, IPV6, NONE, IP, NONE, IPV4, UDP),
     144                 :            :         TPTE(0xC4, ETHER, IPV6, NONE, IP, NONE, IPV4, TCP),
     145                 :            :         TPTE(0xC5, ETHER, IPV6, NONE, IP, NONE, IPV4, SCTP),
     146                 :            :         TPTE(0xC9, ETHER, IPV6, NONE, IP, NONE, IPV6, FRAG),
     147                 :            :         TPTE(0xCA, ETHER, IPV6, NONE, IP, NONE, IPV6, NONFRAG),
     148                 :            :         TPTE(0xCB, ETHER, IPV6, NONE, IP, NONE, IPV6, UDP),
     149                 :            :         TPTE(0xCC, ETHER, IPV6, NONE, IP, NONE, IPV6, TCP),
     150                 :            :         TPTE(0xCD, ETHER, IPV6, NONE, IP, NONE, IPV6, SCTP),
     151                 :            :         /* IPv6 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
     152                 :            :         TPTE(0xD0, ETHER, IPV6, NONE, GRENAT, NONE, NONE,  NONE),
     153                 :            :         TPTE(0xD1, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, FRAG),
     154                 :            :         TPTE(0xD2, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, NONFRAG),
     155                 :            :         TPTE(0xD3, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, UDP),
     156                 :            :         TPTE(0xD4, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, TCP),
     157                 :            :         TPTE(0xD5, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, SCTP),
     158                 :            :         TPTE(0xD9, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, FRAG),
     159                 :            :         TPTE(0xDA, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, NONFRAG),
     160                 :            :         TPTE(0xDB, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, UDP),
     161                 :            :         TPTE(0xDC, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, TCP),
     162                 :            :         TPTE(0xDD, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, SCTP),
     163                 :            :         /* IPv6 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
     164                 :            :         TPTE(0xE0, ETHER, IPV6, NONE, GRENAT, ETHER, NONE,  NONE),
     165                 :            :         TPTE(0xE1, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, FRAG),
     166                 :            :         TPTE(0xE2, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, NONFRAG),
     167                 :            :         TPTE(0xE3, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, UDP),
     168                 :            :         TPTE(0xE4, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, TCP),
     169                 :            :         TPTE(0xE5, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, SCTP),
     170                 :            :         TPTE(0xE9, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, FRAG),
     171                 :            :         TPTE(0xEA, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, NONFRAG),
     172                 :            :         TPTE(0xEB, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, UDP),
     173                 :            :         TPTE(0xEC, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, TCP),
     174                 :            :         TPTE(0xED, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, SCTP),
     175                 :            :         /* IPv6 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
     176                 :            :         TPTE(0xF0, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, NONE,  NONE),
     177                 :            :         TPTE(0xF1, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
     178                 :            :         TPTE(0xF2, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
     179                 :            :         TPTE(0xF3, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
     180                 :            :         TPTE(0xF4, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
     181                 :            :         TPTE(0xF5, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
     182                 :            :         TPTE(0xF9, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
     183                 :            :         TPTE(0xFA, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
     184                 :            :         TPTE(0xFB, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
     185                 :            :         TPTE(0xFC, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
     186                 :            :         TPTE(0xFD, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
     187                 :            : };
     188                 :            : 
     189                 :          0 : u32 *txgbe_get_supported_ptypes(size_t *no_of_elements)
     190                 :            : {
     191                 :            :         static u32 ptypes[] = {
     192                 :            :                 /* For non-vec functions,
     193                 :            :                  * refers to txgbe_rxd_pkt_info_to_pkt_type();
     194                 :            :                  */
     195                 :            :                 RTE_PTYPE_L2_ETHER,
     196                 :            :                 RTE_PTYPE_L3_IPV4,
     197                 :            :                 RTE_PTYPE_L3_IPV4_EXT,
     198                 :            :                 RTE_PTYPE_L3_IPV6,
     199                 :            :                 RTE_PTYPE_L3_IPV6_EXT,
     200                 :            :                 RTE_PTYPE_L4_SCTP,
     201                 :            :                 RTE_PTYPE_L4_TCP,
     202                 :            :                 RTE_PTYPE_L4_UDP,
     203                 :            :                 RTE_PTYPE_TUNNEL_IP,
     204                 :            :                 RTE_PTYPE_INNER_L3_IPV6,
     205                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT,
     206                 :            :                 RTE_PTYPE_INNER_L4_TCP,
     207                 :            :                 RTE_PTYPE_INNER_L4_UDP,
     208                 :            :         };
     209                 :            : 
     210                 :          0 :         *no_of_elements = RTE_DIM(ptypes);
     211                 :          0 :         return ptypes;
     212                 :            : }
     213                 :            : 
     214                 :            : static inline u8
     215                 :            : txgbe_encode_ptype_fcoe(u32 ptype)
     216                 :            : {
     217                 :            :         u8 ptid;
     218                 :            : 
     219                 :            :         UNREFERENCED_PARAMETER(ptype);
     220                 :            :         ptid = TXGBE_PTID_PKT_FCOE;
     221                 :            : 
     222                 :            :         return ptid;
     223                 :            : }
     224                 :            : 
     225                 :            : static inline u8
     226                 :            : txgbe_encode_ptype_mac(u32 ptype)
     227                 :            : {
     228                 :            :         u8 ptid;
     229                 :            : 
     230                 :            :         ptid = TXGBE_PTID_PKT_MAC;
     231                 :            : 
     232         [ #  # ]:          0 :         switch (ptype & RTE_PTYPE_L2_MASK) {
     233                 :            :         case RTE_PTYPE_L2_ETHER_FCOE:
     234                 :            :                 ptid = txgbe_encode_ptype_fcoe(ptype);
     235                 :            :                 break;
     236                 :            :         case RTE_PTYPE_UNKNOWN:
     237                 :            :                 break;
     238                 :            :         case RTE_PTYPE_L2_ETHER_TIMESYNC:
     239                 :            :                 ptid |= TXGBE_PTID_TYP_TS;
     240                 :            :                 break;
     241                 :            :         case RTE_PTYPE_L2_ETHER_ARP:
     242                 :            :                 ptid |= TXGBE_PTID_TYP_ARP;
     243                 :            :                 break;
     244                 :            :         case RTE_PTYPE_L2_ETHER_LLDP:
     245                 :            :                 ptid |= TXGBE_PTID_TYP_LLDP;
     246                 :            :                 break;
     247                 :            :         default:
     248                 :            :                 ptid |= TXGBE_PTID_TYP_MAC;
     249                 :            :                 break;
     250                 :            :         }
     251                 :            : 
     252                 :            :         return ptid;
     253                 :            : }
     254                 :            : 
     255                 :            : static inline u8
     256                 :          0 : txgbe_encode_ptype_ip(u32 ptype)
     257                 :            : {
     258                 :            :         u8 ptid;
     259                 :            : 
     260                 :            :         ptid = TXGBE_PTID_PKT_IP;
     261                 :            : 
     262      [ #  #  # ]:          0 :         switch (ptype & RTE_PTYPE_L3_MASK) {
     263                 :            :         case RTE_PTYPE_L3_IPV4:
     264                 :            :         case RTE_PTYPE_L3_IPV4_EXT:
     265                 :            :         case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
     266                 :            :                 break;
     267                 :          0 :         case RTE_PTYPE_L3_IPV6:
     268                 :            :         case RTE_PTYPE_L3_IPV6_EXT:
     269                 :            :         case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
     270                 :            :                 ptid |= TXGBE_PTID_PKT_IPV6;
     271                 :          0 :                 break;
     272                 :            :         default:
     273                 :            :                 return txgbe_encode_ptype_mac(ptype);
     274                 :            :         }
     275                 :            : 
     276   [ #  #  #  #  :          0 :         switch (ptype & RTE_PTYPE_L4_MASK) {
                      # ]
     277                 :          0 :         case RTE_PTYPE_L4_TCP:
     278                 :          0 :                 ptid |= TXGBE_PTID_TYP_TCP;
     279                 :          0 :                 break;
     280                 :          0 :         case RTE_PTYPE_L4_UDP:
     281                 :          0 :                 ptid |= TXGBE_PTID_TYP_UDP;
     282                 :          0 :                 break;
     283                 :          0 :         case RTE_PTYPE_L4_SCTP:
     284                 :          0 :                 ptid |= TXGBE_PTID_TYP_SCTP;
     285                 :          0 :                 break;
     286                 :          0 :         case RTE_PTYPE_L4_FRAG:
     287                 :          0 :                 ptid |= TXGBE_PTID_TYP_IPFRAG;
     288                 :          0 :                 break;
     289                 :          0 :         default:
     290                 :          0 :                 ptid |= TXGBE_PTID_TYP_IPDATA;
     291                 :          0 :                 break;
     292                 :            :         }
     293                 :            : 
     294                 :            :         return ptid;
     295                 :            : }
     296                 :            : 
     297                 :            : static inline u8
     298                 :          0 : txgbe_encode_ptype_tunnel(u32 ptype)
     299                 :            : {
     300                 :            :         u8 ptid;
     301                 :            : 
     302                 :            :         ptid = TXGBE_PTID_PKT_TUN;
     303                 :            : 
     304      [ #  #  # ]:          0 :         switch (ptype & RTE_PTYPE_L3_MASK) {
     305                 :            :         case RTE_PTYPE_L3_IPV4:
     306                 :            :         case RTE_PTYPE_L3_IPV4_EXT:
     307                 :            :         case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
     308                 :            :                 break;
     309                 :          0 :         case RTE_PTYPE_L3_IPV6:
     310                 :            :         case RTE_PTYPE_L3_IPV6_EXT:
     311                 :            :         case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
     312                 :            :                 ptid |= TXGBE_PTID_TUN_IPV6;
     313                 :          0 :                 break;
     314                 :          0 :         default:
     315                 :          0 :                 return txgbe_encode_ptype_ip(ptype);
     316                 :            :         }
     317                 :            : 
     318         [ #  # ]:          0 :         switch (ptype & RTE_PTYPE_TUNNEL_MASK) {
     319                 :            :         case RTE_PTYPE_TUNNEL_IP:
     320                 :            :                 ptid |= TXGBE_PTID_TUN_EI;
     321                 :            :                 break;
     322                 :            :         case RTE_PTYPE_TUNNEL_GRE:
     323                 :            :         case RTE_PTYPE_TUNNEL_VXLAN:
     324                 :            :         case RTE_PTYPE_TUNNEL_VXLAN_GPE:
     325                 :            :         case RTE_PTYPE_TUNNEL_NVGRE:
     326                 :            :         case RTE_PTYPE_TUNNEL_GENEVE:
     327                 :            :         case RTE_PTYPE_TUNNEL_GRENAT:
     328                 :            :                 break;
     329                 :            :         default:
     330                 :            :                 return ptid;
     331                 :            :         }
     332                 :            : 
     333      [ #  #  # ]:          0 :         switch (ptype & RTE_PTYPE_INNER_L3_MASK) {
     334                 :            :         case RTE_PTYPE_INNER_L3_IPV4:
     335                 :            :         case RTE_PTYPE_INNER_L3_IPV4_EXT:
     336                 :            :         case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
     337                 :            :                 break;
     338                 :          0 :         case RTE_PTYPE_INNER_L3_IPV6:
     339                 :            :         case RTE_PTYPE_INNER_L3_IPV6_EXT:
     340                 :            :         case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
     341                 :          0 :                 ptid |= TXGBE_PTID_PKT_IPV6;
     342                 :          0 :                 break;
     343                 :            :         default:
     344                 :            :                 return ptid;
     345                 :            :         }
     346                 :            : 
     347   [ #  #  #  #  :          0 :         switch (ptype & RTE_PTYPE_INNER_L4_MASK) {
                      # ]
     348                 :          0 :         case RTE_PTYPE_INNER_L4_TCP:
     349                 :          0 :                 ptid |= TXGBE_PTID_TYP_TCP;
     350                 :          0 :                 break;
     351                 :          0 :         case RTE_PTYPE_INNER_L4_UDP:
     352                 :          0 :                 ptid |= TXGBE_PTID_TYP_UDP;
     353                 :          0 :                 break;
     354                 :          0 :         case RTE_PTYPE_INNER_L4_SCTP:
     355                 :          0 :                 ptid |= TXGBE_PTID_TYP_SCTP;
     356                 :          0 :                 break;
     357                 :          0 :         case RTE_PTYPE_INNER_L4_FRAG:
     358                 :          0 :                 ptid |= TXGBE_PTID_TYP_IPFRAG;
     359                 :          0 :                 break;
     360                 :          0 :         default:
     361                 :          0 :                 ptid |= TXGBE_PTID_TYP_IPDATA;
     362                 :          0 :                 break;
     363                 :            :         }
     364                 :            : 
     365                 :            :         return ptid;
     366                 :            : }
     367                 :            : 
     368                 :          0 : u32 txgbe_decode_ptype(u8 ptid)
     369                 :            : {
     370         [ #  # ]:          0 :         if (-1 != txgbe_etflt_id(ptid))
     371                 :            :                 return RTE_PTYPE_UNKNOWN;
     372                 :            : 
     373                 :          0 :         return txgbe_ptype_lookup[ptid];
     374                 :            : }
     375                 :            : 
     376                 :          0 : u8 txgbe_encode_ptype(u32 ptype)
     377                 :            : {
     378                 :            :         u8 ptid = 0;
     379                 :            : 
     380         [ #  # ]:          0 :         if (ptype & RTE_PTYPE_TUNNEL_MASK)
     381                 :          0 :                 ptid = txgbe_encode_ptype_tunnel(ptype);
     382         [ #  # ]:          0 :         else if (ptype & RTE_PTYPE_L3_MASK)
     383                 :          0 :                 ptid = txgbe_encode_ptype_ip(ptype);
     384         [ #  # ]:          0 :         else if (ptype & RTE_PTYPE_L2_MASK)
     385                 :            :                 ptid = txgbe_encode_ptype_mac(ptype);
     386                 :            :         else
     387                 :            :                 ptid = TXGBE_PTID_NULL;
     388                 :            : 
     389                 :          0 :         return ptid;
     390                 :            : }
     391                 :            : 
     392                 :            : /**
     393                 :            :  * Use 2 different table for normal packet and tunnel packet
     394                 :            :  * to save the space.
     395                 :            :  */
     396                 :            : const u32
     397                 :            : txgbe_ptype_table[TXGBE_PTID_MAX] __rte_cache_aligned = {
     398                 :            :         [TXGBE_PT_ETHER] = RTE_PTYPE_L2_ETHER,
     399                 :            :         [TXGBE_PT_IPV4] = RTE_PTYPE_L2_ETHER |
     400                 :            :                 RTE_PTYPE_L3_IPV4,
     401                 :            :         [TXGBE_PT_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
     402                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
     403                 :            :         [TXGBE_PT_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
     404                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
     405                 :            :         [TXGBE_PT_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
     406                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP,
     407                 :            :         [TXGBE_PT_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
     408                 :            :                 RTE_PTYPE_L3_IPV4_EXT,
     409                 :            :         [TXGBE_PT_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     410                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,
     411                 :            :         [TXGBE_PT_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     412                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,
     413                 :            :         [TXGBE_PT_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     414                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_SCTP,
     415                 :            :         [TXGBE_PT_IPV6] = RTE_PTYPE_L2_ETHER |
     416                 :            :                 RTE_PTYPE_L3_IPV6,
     417                 :            :         [TXGBE_PT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     418                 :            :                 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
     419                 :            :         [TXGBE_PT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     420                 :            :                 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
     421                 :            :         [TXGBE_PT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
     422                 :            :                 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP,
     423                 :            :         [TXGBE_PT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     424                 :            :                 RTE_PTYPE_L3_IPV6_EXT,
     425                 :            :         [TXGBE_PT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     426                 :            :                 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,
     427                 :            :         [TXGBE_PT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     428                 :            :                 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,
     429                 :            :         [TXGBE_PT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     430                 :            :                 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_SCTP,
     431                 :            :         [TXGBE_PT_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
     432                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     433                 :            :                 RTE_PTYPE_INNER_L3_IPV6,
     434                 :            :         [TXGBE_PT_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     435                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     436                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
     437                 :            :         [TXGBE_PT_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     438                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     439                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
     440                 :            :         [TXGBE_PT_IPV4_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
     441                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     442                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
     443                 :            :         [TXGBE_PT_IPV4_EXT_IPV6] = RTE_PTYPE_L2_ETHER |
     444                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     445                 :            :                 RTE_PTYPE_INNER_L3_IPV6,
     446                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     447                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     448                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
     449                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     450                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     451                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
     452                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
     453                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     454                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
     455                 :            :         [TXGBE_PT_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     456                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     457                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT,
     458                 :            :         [TXGBE_PT_IPV4_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     459                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     460                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
     461                 :            :         [TXGBE_PT_IPV4_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     462                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     463                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
     464                 :            :         [TXGBE_PT_IPV4_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     465                 :            :                 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
     466                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
     467                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     468                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     469                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT,
     470                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     471                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     472                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
     473                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     474                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     475                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
     476                 :            :         [TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     477                 :            :                 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
     478                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
     479                 :            : };
     480                 :            : 
     481                 :            : const u32
     482                 :            : txgbe_ptype_table_tn[TXGBE_PTID_MAX] __rte_cache_aligned = {
     483                 :            :         [TXGBE_PT_NVGRE] = RTE_PTYPE_L2_ETHER |
     484                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     485                 :            :                 RTE_PTYPE_INNER_L2_ETHER,
     486                 :            :         [TXGBE_PT_NVGRE_IPV4] = RTE_PTYPE_L2_ETHER |
     487                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     488                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     489                 :            :         [TXGBE_PT_NVGRE_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
     490                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     491                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT,
     492                 :            :         [TXGBE_PT_NVGRE_IPV6] = RTE_PTYPE_L2_ETHER |
     493                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     494                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6,
     495                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
     496                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     497                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     498                 :            :         [TXGBE_PT_NVGRE_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     499                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     500                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT,
     501                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     502                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     503                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     504                 :            :         [TXGBE_PT_NVGRE_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
     505                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     506                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
     507                 :            :                 RTE_PTYPE_INNER_L4_TCP,
     508                 :            :         [TXGBE_PT_NVGRE_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     509                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     510                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
     511                 :            :                 RTE_PTYPE_INNER_L4_TCP,
     512                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     513                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     514                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     515                 :            :         [TXGBE_PT_NVGRE_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     516                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     517                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
     518                 :            :                 RTE_PTYPE_INNER_L4_TCP,
     519                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP] =
     520                 :            :                 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
     521                 :            :                 RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
     522                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     523                 :            :         [TXGBE_PT_NVGRE_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
     524                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     525                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
     526                 :            :                 RTE_PTYPE_INNER_L4_UDP,
     527                 :            :         [TXGBE_PT_NVGRE_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     528                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     529                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
     530                 :            :                 RTE_PTYPE_INNER_L4_UDP,
     531                 :            :         [TXGBE_PT_NVGRE_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
     532                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     533                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
     534                 :            :                 RTE_PTYPE_INNER_L4_SCTP,
     535                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     536                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     537                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     538                 :            :         [TXGBE_PT_NVGRE_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     539                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     540                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
     541                 :            :                 RTE_PTYPE_INNER_L4_UDP,
     542                 :            :         [TXGBE_PT_NVGRE_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     543                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     544                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
     545                 :            :                 RTE_PTYPE_INNER_L4_SCTP,
     546                 :            :         [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP] =
     547                 :            :                 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
     548                 :            :                 RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
     549                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     550                 :            :         [TXGBE_PT_NVGRE_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
     551                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     552                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
     553                 :            :                 RTE_PTYPE_INNER_L4_SCTP,
     554                 :            :         [TXGBE_PT_NVGRE_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     555                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     556                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
     557                 :            :                 RTE_PTYPE_INNER_L4_SCTP,
     558                 :            :         [TXGBE_PT_NVGRE_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     559                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     560                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
     561                 :            :                 RTE_PTYPE_INNER_L4_TCP,
     562                 :            :         [TXGBE_PT_NVGRE_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     563                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
     564                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
     565                 :            :                 RTE_PTYPE_INNER_L4_UDP,
     566                 :            : 
     567                 :            :         [TXGBE_PT_VXLAN] = RTE_PTYPE_L2_ETHER |
     568                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     569                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER,
     570                 :            :         [TXGBE_PT_VXLAN_IPV4] = RTE_PTYPE_L2_ETHER |
     571                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     572                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     573                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     574                 :            :         [TXGBE_PT_VXLAN_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
     575                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     576                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     577                 :            :                 RTE_PTYPE_INNER_L3_IPV4_EXT,
     578                 :            :         [TXGBE_PT_VXLAN_IPV6] = RTE_PTYPE_L2_ETHER |
     579                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     580                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     581                 :            :                 RTE_PTYPE_INNER_L3_IPV6,
     582                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
     583                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     584                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     585                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     586                 :            :         [TXGBE_PT_VXLAN_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     587                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     588                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     589                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT,
     590                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
     591                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     592                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     593                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     594                 :            :         [TXGBE_PT_VXLAN_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
     595                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     596                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     597                 :            :                 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP,
     598                 :            :         [TXGBE_PT_VXLAN_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     599                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     600                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     601                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
     602                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
     603                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     604                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     605                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     606                 :            :         [TXGBE_PT_VXLAN_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     607                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     608                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     609                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
     610                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP] =
     611                 :            :                 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
     612                 :            :                 RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
     613                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     614                 :            :         [TXGBE_PT_VXLAN_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
     615                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     616                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     617                 :            :                 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_UDP,
     618                 :            :         [TXGBE_PT_VXLAN_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     619                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     620                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     621                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
     622                 :            :         [TXGBE_PT_VXLAN_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
     623                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     624                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     625                 :            :                 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
     626                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
     627                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     628                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     629                 :            :                 RTE_PTYPE_INNER_L3_IPV4,
     630                 :            :         [TXGBE_PT_VXLAN_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     631                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     632                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     633                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
     634                 :            :         [TXGBE_PT_VXLAN_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     635                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     636                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     637                 :            :                 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
     638                 :            :         [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP] =
     639                 :            :                 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
     640                 :            :                 RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
     641                 :            :                 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
     642                 :            :         [TXGBE_PT_VXLAN_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
     643                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     644                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     645                 :            :                 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_SCTP,
     646                 :            :         [TXGBE_PT_VXLAN_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
     647                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     648                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     649                 :            :                 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_SCTP,
     650                 :            :         [TXGBE_PT_VXLAN_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
     651                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     652                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     653                 :            :                 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP,
     654                 :            :         [TXGBE_PT_VXLAN_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
     655                 :            :                 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
     656                 :            :                 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
     657                 :            :                 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP,
     658                 :            : };

Generated by: LCOV version 1.14