net/txgbe: support packet type
Add packet type marco definition and convert ptype to ptid. Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
b4cfffaa85
commit
9e30b88f60
@ -14,6 +14,7 @@ Unicast MAC filter = Y
|
||||
Multicast MAC filter = Y
|
||||
CRC offload = P
|
||||
VLAN offload = P
|
||||
Packet type parsing = Y
|
||||
Linux UIO = Y
|
||||
Linux VFIO = Y
|
||||
ARMv8 = Y
|
||||
|
@ -12,6 +12,7 @@ Features
|
||||
|
||||
- Multiple queues for TX and RX
|
||||
- MAC filtering
|
||||
- Packet type information
|
||||
- Jumbo frames
|
||||
- Link state information
|
||||
|
||||
|
@ -6,6 +6,7 @@ objs = [base_objs]
|
||||
|
||||
sources = files(
|
||||
'txgbe_ethdev.c',
|
||||
'txgbe_ptypes.c',
|
||||
'txgbe_rxtx.c',
|
||||
)
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define _TXGBE_ETHDEV_H_
|
||||
|
||||
#include "base/txgbe.h"
|
||||
#include "txgbe_ptypes.h"
|
||||
|
||||
/* need update link, bit flag */
|
||||
#define TXGBE_FLAG_NEED_LINK_UPDATE (uint32_t)(1 << 0)
|
||||
|
673
drivers/net/txgbe/txgbe_ptypes.c
Normal file
673
drivers/net/txgbe/txgbe_ptypes.c
Normal file
@ -0,0 +1,673 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2015-2020
|
||||
*/
|
||||
|
||||
#include <rte_mbuf.h>
|
||||
#include <rte_memory.h>
|
||||
|
||||
#include "base/txgbe_type.h"
|
||||
#include "txgbe_ptypes.h"
|
||||
|
||||
/* The txgbe_ptype_lookup is used to convert from the 8-bit ptid in the
|
||||
* hardware to a bit-field that can be used by SW to more easily determine the
|
||||
* packet type.
|
||||
*
|
||||
* Macros are used to shorten the table lines and make this table human
|
||||
* readable.
|
||||
*
|
||||
* We store the PTYPE in the top byte of the bit field - this is just so that
|
||||
* we can check that the table doesn't have a row missing, as the index into
|
||||
* the table should be the PTYPE.
|
||||
*
|
||||
* Typical work flow:
|
||||
*
|
||||
* IF NOT txgbe_ptype_lookup[ptid].known
|
||||
* THEN
|
||||
* Packet is unknown
|
||||
* ELSE IF txgbe_ptype_lookup[ptid].mac == TXGBE_DEC_PTYPE_MAC_IP
|
||||
* Use the rest of the fields to look at the tunnels, inner protocols, etc
|
||||
* ELSE
|
||||
* Use the enum txgbe_l2_ptypes to decode the packet type
|
||||
* ENDIF
|
||||
*/
|
||||
#define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \
|
||||
[ptid] = (RTE_PTYPE_L2_##l2 | \
|
||||
RTE_PTYPE_L3_##l3 | \
|
||||
RTE_PTYPE_L4_##l4 | \
|
||||
RTE_PTYPE_TUNNEL_##tun | \
|
||||
RTE_PTYPE_INNER_L2_##el2 | \
|
||||
RTE_PTYPE_INNER_L3_##el3 | \
|
||||
RTE_PTYPE_INNER_L4_##el4)
|
||||
|
||||
#define RTE_PTYPE_L2_NONE 0
|
||||
#define RTE_PTYPE_L3_NONE 0
|
||||
#define RTE_PTYPE_L4_NONE 0
|
||||
#define RTE_PTYPE_TUNNEL_NONE 0
|
||||
#define RTE_PTYPE_INNER_L2_NONE 0
|
||||
#define RTE_PTYPE_INNER_L3_NONE 0
|
||||
#define RTE_PTYPE_INNER_L4_NONE 0
|
||||
|
||||
static u32 txgbe_ptype_lookup[TXGBE_PTID_MAX] __rte_cache_aligned = {
|
||||
/* L2:0-3 L3:4-7 L4:8-11 TUN:12-15 EL2:16-19 EL3:20-23 EL2:24-27 */
|
||||
/* L2: ETH */
|
||||
TPTE(0x11, ETHER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x12, ETHER_TIMESYNC, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x13, ETHER_FIP, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x14, ETHER_LLDP, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x15, ETHER_CNM, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x16, ETHER_EAPOL, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x17, ETHER_ARP, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
/* L2: Ethertype Filter */
|
||||
TPTE(0x18, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x19, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1A, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1B, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1C, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1D, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1E, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x1F, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
/* L3: IP */
|
||||
TPTE(0x21, ETHER, IPV4, FRAG, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x22, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x23, ETHER, IPV4, UDP, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x24, ETHER, IPV4, TCP, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x25, ETHER, IPV4, SCTP, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x29, ETHER, IPV6, FRAG, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x2A, ETHER, IPV6, NONFRAG, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x2B, ETHER, IPV6, UDP, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x2C, ETHER, IPV6, TCP, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x2D, ETHER, IPV6, SCTP, NONE, NONE, NONE, NONE),
|
||||
/* L2: FCoE */
|
||||
TPTE(0x30, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x31, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x32, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x33, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x34, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x35, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x36, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x37, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x38, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
TPTE(0x39, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
|
||||
/* IPv4 -> IPv4/IPv6 */
|
||||
TPTE(0x81, ETHER, IPV4, NONE, IP, NONE, IPV4, FRAG),
|
||||
TPTE(0x82, ETHER, IPV4, NONE, IP, NONE, IPV4, NONFRAG),
|
||||
TPTE(0x83, ETHER, IPV4, NONE, IP, NONE, IPV4, UDP),
|
||||
TPTE(0x84, ETHER, IPV4, NONE, IP, NONE, IPV4, TCP),
|
||||
TPTE(0x85, ETHER, IPV4, NONE, IP, NONE, IPV4, SCTP),
|
||||
TPTE(0x89, ETHER, IPV4, NONE, IP, NONE, IPV6, FRAG),
|
||||
TPTE(0x8A, ETHER, IPV4, NONE, IP, NONE, IPV6, NONFRAG),
|
||||
TPTE(0x8B, ETHER, IPV4, NONE, IP, NONE, IPV6, UDP),
|
||||
TPTE(0x8C, ETHER, IPV4, NONE, IP, NONE, IPV6, TCP),
|
||||
TPTE(0x8D, ETHER, IPV4, NONE, IP, NONE, IPV6, SCTP),
|
||||
/* IPv4 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
|
||||
TPTE(0x90, ETHER, IPV4, NONE, GRENAT, NONE, NONE, NONE),
|
||||
TPTE(0x91, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, FRAG),
|
||||
TPTE(0x92, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, NONFRAG),
|
||||
TPTE(0x93, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, UDP),
|
||||
TPTE(0x94, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, TCP),
|
||||
TPTE(0x95, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, SCTP),
|
||||
TPTE(0x99, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, FRAG),
|
||||
TPTE(0x9A, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, NONFRAG),
|
||||
TPTE(0x9B, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, UDP),
|
||||
TPTE(0x9C, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, TCP),
|
||||
TPTE(0x9D, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, SCTP),
|
||||
/* IPv4 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
|
||||
TPTE(0xA0, ETHER, IPV4, NONE, GRENAT, ETHER, NONE, NONE),
|
||||
TPTE(0xA1, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, FRAG),
|
||||
TPTE(0xA2, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, NONFRAG),
|
||||
TPTE(0xA3, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, UDP),
|
||||
TPTE(0xA4, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, TCP),
|
||||
TPTE(0xA5, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, SCTP),
|
||||
TPTE(0xA9, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, FRAG),
|
||||
TPTE(0xAA, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, NONFRAG),
|
||||
TPTE(0xAB, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, UDP),
|
||||
TPTE(0xAC, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, TCP),
|
||||
TPTE(0xAD, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, SCTP),
|
||||
/* IPv4 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
|
||||
TPTE(0xB0, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
|
||||
TPTE(0xB1, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
|
||||
TPTE(0xB2, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
|
||||
TPTE(0xB3, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
|
||||
TPTE(0xB4, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
|
||||
TPTE(0xB5, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
|
||||
TPTE(0xB9, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
|
||||
TPTE(0xBA, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
|
||||
TPTE(0xBB, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
|
||||
TPTE(0xBC, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
|
||||
TPTE(0xBD, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
|
||||
/* IPv6 -> IPv4/IPv6 */
|
||||
TPTE(0xC1, ETHER, IPV6, NONE, IP, NONE, IPV4, FRAG),
|
||||
TPTE(0xC2, ETHER, IPV6, NONE, IP, NONE, IPV4, NONFRAG),
|
||||
TPTE(0xC3, ETHER, IPV6, NONE, IP, NONE, IPV4, UDP),
|
||||
TPTE(0xC4, ETHER, IPV6, NONE, IP, NONE, IPV4, TCP),
|
||||
TPTE(0xC5, ETHER, IPV6, NONE, IP, NONE, IPV4, SCTP),
|
||||
TPTE(0xC9, ETHER, IPV6, NONE, IP, NONE, IPV6, FRAG),
|
||||
TPTE(0xCA, ETHER, IPV6, NONE, IP, NONE, IPV6, NONFRAG),
|
||||
TPTE(0xCB, ETHER, IPV6, NONE, IP, NONE, IPV6, UDP),
|
||||
TPTE(0xCC, ETHER, IPV6, NONE, IP, NONE, IPV6, TCP),
|
||||
TPTE(0xCD, ETHER, IPV6, NONE, IP, NONE, IPV6, SCTP),
|
||||
/* IPv6 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
|
||||
TPTE(0xD0, ETHER, IPV6, NONE, GRENAT, NONE, NONE, NONE),
|
||||
TPTE(0xD1, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, FRAG),
|
||||
TPTE(0xD2, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, NONFRAG),
|
||||
TPTE(0xD3, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, UDP),
|
||||
TPTE(0xD4, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, TCP),
|
||||
TPTE(0xD5, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, SCTP),
|
||||
TPTE(0xD9, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, FRAG),
|
||||
TPTE(0xDA, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, NONFRAG),
|
||||
TPTE(0xDB, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, UDP),
|
||||
TPTE(0xDC, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, TCP),
|
||||
TPTE(0xDD, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, SCTP),
|
||||
/* IPv6 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
|
||||
TPTE(0xE0, ETHER, IPV6, NONE, GRENAT, ETHER, NONE, NONE),
|
||||
TPTE(0xE1, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, FRAG),
|
||||
TPTE(0xE2, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, NONFRAG),
|
||||
TPTE(0xE3, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, UDP),
|
||||
TPTE(0xE4, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, TCP),
|
||||
TPTE(0xE5, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, SCTP),
|
||||
TPTE(0xE9, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, FRAG),
|
||||
TPTE(0xEA, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, NONFRAG),
|
||||
TPTE(0xEB, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, UDP),
|
||||
TPTE(0xEC, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, TCP),
|
||||
TPTE(0xED, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, SCTP),
|
||||
/* IPv6 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
|
||||
TPTE(0xF0, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
|
||||
TPTE(0xF1, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
|
||||
TPTE(0xF2, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
|
||||
TPTE(0xF3, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
|
||||
TPTE(0xF4, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
|
||||
TPTE(0xF5, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
|
||||
TPTE(0xF9, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
|
||||
TPTE(0xFA, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
|
||||
TPTE(0xFB, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
|
||||
TPTE(0xFC, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
|
||||
TPTE(0xFD, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
|
||||
};
|
||||
|
||||
u32 *txgbe_get_supported_ptypes(void)
|
||||
{
|
||||
static u32 ptypes[] = {
|
||||
/* For non-vec functions,
|
||||
* refers to txgbe_rxd_pkt_info_to_pkt_type();
|
||||
*/
|
||||
RTE_PTYPE_L2_ETHER,
|
||||
RTE_PTYPE_L3_IPV4,
|
||||
RTE_PTYPE_L3_IPV4_EXT,
|
||||
RTE_PTYPE_L3_IPV6,
|
||||
RTE_PTYPE_L3_IPV6_EXT,
|
||||
RTE_PTYPE_L4_SCTP,
|
||||
RTE_PTYPE_L4_TCP,
|
||||
RTE_PTYPE_L4_UDP,
|
||||
RTE_PTYPE_TUNNEL_IP,
|
||||
RTE_PTYPE_INNER_L3_IPV6,
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT,
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
RTE_PTYPE_UNKNOWN
|
||||
};
|
||||
|
||||
return ptypes;
|
||||
}
|
||||
|
||||
static inline u8
|
||||
txgbe_encode_ptype_fcoe(u32 ptype)
|
||||
{
|
||||
u8 ptid;
|
||||
|
||||
UNREFERENCED_PARAMETER(ptype);
|
||||
ptid = TXGBE_PTID_PKT_FCOE;
|
||||
|
||||
return ptid;
|
||||
}
|
||||
|
||||
static inline u8
|
||||
txgbe_encode_ptype_mac(u32 ptype)
|
||||
{
|
||||
u8 ptid;
|
||||
|
||||
ptid = TXGBE_PTID_PKT_MAC;
|
||||
|
||||
switch (ptype & RTE_PTYPE_L2_MASK) {
|
||||
case RTE_PTYPE_L2_ETHER_FCOE:
|
||||
ptid = txgbe_encode_ptype_fcoe(ptype);
|
||||
break;
|
||||
case RTE_PTYPE_UNKNOWN:
|
||||
break;
|
||||
case RTE_PTYPE_L2_ETHER_TIMESYNC:
|
||||
ptid |= TXGBE_PTID_TYP_TS;
|
||||
break;
|
||||
case RTE_PTYPE_L2_ETHER_ARP:
|
||||
ptid |= TXGBE_PTID_TYP_ARP;
|
||||
break;
|
||||
case RTE_PTYPE_L2_ETHER_LLDP:
|
||||
ptid |= TXGBE_PTID_TYP_LLDP;
|
||||
break;
|
||||
default:
|
||||
ptid |= TXGBE_PTID_TYP_MAC;
|
||||
break;
|
||||
}
|
||||
|
||||
return ptid;
|
||||
}
|
||||
|
||||
static inline u8
|
||||
txgbe_encode_ptype_ip(u32 ptype)
|
||||
{
|
||||
u8 ptid;
|
||||
|
||||
ptid = TXGBE_PTID_PKT_IP;
|
||||
|
||||
switch (ptype & RTE_PTYPE_L3_MASK) {
|
||||
case RTE_PTYPE_L3_IPV4:
|
||||
case RTE_PTYPE_L3_IPV4_EXT:
|
||||
case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
|
||||
break;
|
||||
case RTE_PTYPE_L3_IPV6:
|
||||
case RTE_PTYPE_L3_IPV6_EXT:
|
||||
case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
|
||||
ptid |= TXGBE_PTID_PKT_IPV6;
|
||||
break;
|
||||
default:
|
||||
return txgbe_encode_ptype_mac(ptype);
|
||||
}
|
||||
|
||||
switch (ptype & RTE_PTYPE_L4_MASK) {
|
||||
case RTE_PTYPE_L4_TCP:
|
||||
ptid |= TXGBE_PTID_TYP_TCP;
|
||||
break;
|
||||
case RTE_PTYPE_L4_UDP:
|
||||
ptid |= TXGBE_PTID_TYP_UDP;
|
||||
break;
|
||||
case RTE_PTYPE_L4_SCTP:
|
||||
ptid |= TXGBE_PTID_TYP_SCTP;
|
||||
break;
|
||||
case RTE_PTYPE_L4_FRAG:
|
||||
ptid |= TXGBE_PTID_TYP_IPFRAG;
|
||||
break;
|
||||
default:
|
||||
ptid |= TXGBE_PTID_TYP_IPDATA;
|
||||
break;
|
||||
}
|
||||
|
||||
return ptid;
|
||||
}
|
||||
|
||||
static inline u8
|
||||
txgbe_encode_ptype_tunnel(u32 ptype)
|
||||
{
|
||||
u8 ptid;
|
||||
|
||||
ptid = TXGBE_PTID_PKT_TUN;
|
||||
|
||||
switch (ptype & RTE_PTYPE_L3_MASK) {
|
||||
case RTE_PTYPE_L3_IPV4:
|
||||
case RTE_PTYPE_L3_IPV4_EXT:
|
||||
case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
|
||||
break;
|
||||
case RTE_PTYPE_L3_IPV6:
|
||||
case RTE_PTYPE_L3_IPV6_EXT:
|
||||
case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
|
||||
ptid |= TXGBE_PTID_TUN_IPV6;
|
||||
break;
|
||||
default:
|
||||
return txgbe_encode_ptype_ip(ptype);
|
||||
}
|
||||
|
||||
switch (ptype & RTE_PTYPE_TUNNEL_MASK) {
|
||||
case RTE_PTYPE_TUNNEL_IP:
|
||||
ptid |= TXGBE_PTID_TUN_EI;
|
||||
break;
|
||||
case RTE_PTYPE_TUNNEL_GRE:
|
||||
ptid |= TXGBE_PTID_TUN_EIG;
|
||||
break;
|
||||
case RTE_PTYPE_TUNNEL_VXLAN:
|
||||
case RTE_PTYPE_TUNNEL_VXLAN_GPE:
|
||||
case RTE_PTYPE_TUNNEL_NVGRE:
|
||||
case RTE_PTYPE_TUNNEL_GENEVE:
|
||||
case RTE_PTYPE_TUNNEL_GRENAT:
|
||||
break;
|
||||
default:
|
||||
return ptid;
|
||||
}
|
||||
|
||||
switch (ptype & RTE_PTYPE_INNER_L2_MASK) {
|
||||
case RTE_PTYPE_INNER_L2_ETHER:
|
||||
ptid |= TXGBE_PTID_TUN_EIGM;
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L2_ETHER_VLAN:
|
||||
ptid |= TXGBE_PTID_TUN_EIGMV;
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L2_ETHER_QINQ:
|
||||
ptid |= TXGBE_PTID_TUN_EIGMV;
|
||||
return ptid;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (ptype & RTE_PTYPE_INNER_L3_MASK) {
|
||||
case RTE_PTYPE_INNER_L3_IPV4:
|
||||
case RTE_PTYPE_INNER_L3_IPV4_EXT:
|
||||
case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L3_IPV6:
|
||||
case RTE_PTYPE_INNER_L3_IPV6_EXT:
|
||||
case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
|
||||
ptid |= TXGBE_PTID_PKT_IPV6;
|
||||
break;
|
||||
default:
|
||||
return ptid;
|
||||
}
|
||||
|
||||
switch (ptype & RTE_PTYPE_INNER_L4_MASK) {
|
||||
case RTE_PTYPE_INNER_L4_TCP:
|
||||
ptid |= TXGBE_PTID_TYP_TCP;
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L4_UDP:
|
||||
ptid |= TXGBE_PTID_TYP_UDP;
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L4_SCTP:
|
||||
ptid |= TXGBE_PTID_TYP_SCTP;
|
||||
break;
|
||||
case RTE_PTYPE_INNER_L4_FRAG:
|
||||
ptid |= TXGBE_PTID_TYP_IPFRAG;
|
||||
break;
|
||||
default:
|
||||
ptid |= TXGBE_PTID_TYP_IPDATA;
|
||||
break;
|
||||
}
|
||||
|
||||
return ptid;
|
||||
}
|
||||
|
||||
u32 txgbe_decode_ptype(u8 ptid)
|
||||
{
|
||||
if (-1 != txgbe_etflt_id(ptid))
|
||||
return RTE_PTYPE_UNKNOWN;
|
||||
|
||||
return txgbe_ptype_lookup[ptid];
|
||||
}
|
||||
|
||||
u8 txgbe_encode_ptype(u32 ptype)
|
||||
{
|
||||
u8 ptid = 0;
|
||||
|
||||
if (ptype & RTE_PTYPE_TUNNEL_MASK)
|
||||
ptid = txgbe_encode_ptype_tunnel(ptype);
|
||||
else if (ptype & RTE_PTYPE_L3_MASK)
|
||||
ptid = txgbe_encode_ptype_ip(ptype);
|
||||
else if (ptype & RTE_PTYPE_L2_MASK)
|
||||
ptid = txgbe_encode_ptype_mac(ptype);
|
||||
else
|
||||
ptid = TXGBE_PTID_NULL;
|
||||
|
||||
return ptid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use 2 different table for normal packet and tunnel packet
|
||||
* to save the space.
|
||||
*/
|
||||
const u32
|
||||
txgbe_ptype_table[TXGBE_PTID_MAX] __rte_cache_aligned = {
|
||||
[TXGBE_PT_ETHER] = RTE_PTYPE_L2_ETHER,
|
||||
[TXGBE_PT_IPV4] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4,
|
||||
[TXGBE_PT_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
|
||||
[TXGBE_PT_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
|
||||
[TXGBE_PT_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP,
|
||||
[TXGBE_PT_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT,
|
||||
[TXGBE_PT_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,
|
||||
[TXGBE_PT_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,
|
||||
[TXGBE_PT_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_SCTP,
|
||||
[TXGBE_PT_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6,
|
||||
[TXGBE_PT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
|
||||
[TXGBE_PT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
|
||||
[TXGBE_PT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP,
|
||||
[TXGBE_PT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6_EXT,
|
||||
[TXGBE_PT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,
|
||||
[TXGBE_PT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,
|
||||
[TXGBE_PT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_SCTP,
|
||||
[TXGBE_PT_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6,
|
||||
[TXGBE_PT_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_IPV4_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT,
|
||||
[TXGBE_PT_IPV4_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_IPV4_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_IPV4_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
|
||||
};
|
||||
|
||||
const u32
|
||||
txgbe_ptype_table_tn[TXGBE_PTID_MAX] __rte_cache_aligned = {
|
||||
[TXGBE_PT_NVGRE] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER,
|
||||
[TXGBE_PT_NVGRE_IPV4] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT,
|
||||
[TXGBE_PT_NVGRE_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_NVGRE_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP] =
|
||||
RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_NVGRE_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_NVGRE_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
|
||||
RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_NVGRE_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
|
||||
RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP] =
|
||||
RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_NVGRE_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
|
||||
RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_NVGRE_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
|
||||
RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_NVGRE_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_NVGRE_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
|
||||
[TXGBE_PT_VXLAN] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER,
|
||||
[TXGBE_PT_VXLAN_IPV4] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT,
|
||||
[TXGBE_PT_VXLAN_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_VXLAN_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP] =
|
||||
RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_VXLAN_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_VXLAN_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
|
||||
[TXGBE_PT_VXLAN_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP] =
|
||||
RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
|
||||
RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
|
||||
[TXGBE_PT_VXLAN_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_VXLAN_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_SCTP,
|
||||
[TXGBE_PT_VXLAN_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP,
|
||||
[TXGBE_PT_VXLAN_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
|
||||
RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP,
|
||||
};
|
||||
|
351
drivers/net/txgbe/txgbe_ptypes.h
Normal file
351
drivers/net/txgbe/txgbe_ptypes.h
Normal file
@ -0,0 +1,351 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2015-2020
|
||||
*/
|
||||
|
||||
#ifndef _TXGBE_PTYPE_H_
|
||||
#define _TXGBE_PTYPE_H_
|
||||
|
||||
/**
|
||||
* PTID(Packet Type Identifier, 8bits)
|
||||
* - Bit 3:0 detailed types.
|
||||
* - Bit 5:4 basic types.
|
||||
* - Bit 7:6 tunnel types.
|
||||
**/
|
||||
#define TXGBE_PTID_NULL 0
|
||||
#define TXGBE_PTID_MAX 256
|
||||
#define TXGBE_PTID_MASK 0xFF
|
||||
#define TXGBE_PTID_MASK_TUNNEL 0x7F
|
||||
|
||||
/* TUN */
|
||||
#define TXGBE_PTID_TUN_IPV6 0x40
|
||||
#define TXGBE_PTID_TUN_EI 0x00 /* IP */
|
||||
#define TXGBE_PTID_TUN_EIG 0x10 /* IP+GRE */
|
||||
#define TXGBE_PTID_TUN_EIGM 0x20 /* IP+GRE+MAC */
|
||||
#define TXGBE_PTID_TUN_EIGMV 0x30 /* IP+GRE+MAC+VLAN */
|
||||
|
||||
/* PKT for !TUN */
|
||||
#define TXGBE_PTID_PKT_TUN (0x80)
|
||||
#define TXGBE_PTID_PKT_MAC (0x10)
|
||||
#define TXGBE_PTID_PKT_IP (0x20)
|
||||
#define TXGBE_PTID_PKT_FCOE (0x30)
|
||||
|
||||
/* TYP for PKT=mac */
|
||||
#define TXGBE_PTID_TYP_MAC (0x01)
|
||||
#define TXGBE_PTID_TYP_TS (0x02) /* time sync */
|
||||
#define TXGBE_PTID_TYP_FIP (0x03)
|
||||
#define TXGBE_PTID_TYP_LLDP (0x04)
|
||||
#define TXGBE_PTID_TYP_CNM (0x05)
|
||||
#define TXGBE_PTID_TYP_EAPOL (0x06)
|
||||
#define TXGBE_PTID_TYP_ARP (0x07)
|
||||
#define TXGBE_PTID_TYP_ETF (0x08)
|
||||
|
||||
/* TYP for PKT=ip */
|
||||
#define TXGBE_PTID_PKT_IPV6 (0x08)
|
||||
#define TXGBE_PTID_TYP_IPFRAG (0x01)
|
||||
#define TXGBE_PTID_TYP_IPDATA (0x02)
|
||||
#define TXGBE_PTID_TYP_UDP (0x03)
|
||||
#define TXGBE_PTID_TYP_TCP (0x04)
|
||||
#define TXGBE_PTID_TYP_SCTP (0x05)
|
||||
|
||||
/* TYP for PKT=fcoe */
|
||||
#define TXGBE_PTID_PKT_VFT (0x08)
|
||||
#define TXGBE_PTID_TYP_FCOE (0x00)
|
||||
#define TXGBE_PTID_TYP_FCDATA (0x01)
|
||||
#define TXGBE_PTID_TYP_FCRDY (0x02)
|
||||
#define TXGBE_PTID_TYP_FCRSP (0x03)
|
||||
#define TXGBE_PTID_TYP_FCOTHER (0x04)
|
||||
|
||||
/* packet type non-ip values */
|
||||
enum txgbe_l2_ptids {
|
||||
TXGBE_PTID_L2_ABORTED = (TXGBE_PTID_PKT_MAC),
|
||||
TXGBE_PTID_L2_MAC = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_MAC),
|
||||
TXGBE_PTID_L2_TMST = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_TS),
|
||||
TXGBE_PTID_L2_FIP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_FIP),
|
||||
TXGBE_PTID_L2_LLDP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_LLDP),
|
||||
TXGBE_PTID_L2_CNM = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_CNM),
|
||||
TXGBE_PTID_L2_EAPOL = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_EAPOL),
|
||||
TXGBE_PTID_L2_ARP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_ARP),
|
||||
|
||||
TXGBE_PTID_L2_IPV4_FRAG = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_IPFRAG),
|
||||
TXGBE_PTID_L2_IPV4 = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_IPDATA),
|
||||
TXGBE_PTID_L2_IPV4_UDP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_UDP),
|
||||
TXGBE_PTID_L2_IPV4_TCP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_TCP),
|
||||
TXGBE_PTID_L2_IPV4_SCTP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_SCTP),
|
||||
TXGBE_PTID_L2_IPV6_FRAG = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |
|
||||
TXGBE_PTID_TYP_IPFRAG),
|
||||
TXGBE_PTID_L2_IPV6 = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |
|
||||
TXGBE_PTID_TYP_IPDATA),
|
||||
TXGBE_PTID_L2_IPV6_UDP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |
|
||||
TXGBE_PTID_TYP_UDP),
|
||||
TXGBE_PTID_L2_IPV6_TCP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |
|
||||
TXGBE_PTID_TYP_TCP),
|
||||
TXGBE_PTID_L2_IPV6_SCTP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |
|
||||
TXGBE_PTID_TYP_SCTP),
|
||||
|
||||
TXGBE_PTID_L2_FCOE = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_TYP_FCOE),
|
||||
TXGBE_PTID_L2_FCOE_FCDATA = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_TYP_FCDATA),
|
||||
TXGBE_PTID_L2_FCOE_FCRDY = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_TYP_FCRDY),
|
||||
TXGBE_PTID_L2_FCOE_FCRSP = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_TYP_FCRSP),
|
||||
TXGBE_PTID_L2_FCOE_FCOTHER = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_TYP_FCOTHER),
|
||||
TXGBE_PTID_L2_FCOE_VFT = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_PKT_VFT),
|
||||
TXGBE_PTID_L2_FCOE_VFT_FCDATA = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCDATA),
|
||||
TXGBE_PTID_L2_FCOE_VFT_FCRDY = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCRDY),
|
||||
TXGBE_PTID_L2_FCOE_VFT_FCRSP = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCRSP),
|
||||
TXGBE_PTID_L2_FCOE_VFT_FCOTHER = (TXGBE_PTID_PKT_FCOE |
|
||||
TXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCOTHER),
|
||||
|
||||
TXGBE_PTID_L2_TUN4_MAC = (TXGBE_PTID_PKT_TUN |
|
||||
TXGBE_PTID_TUN_EIGM),
|
||||
TXGBE_PTID_L2_TUN6_MAC = (TXGBE_PTID_PKT_TUN |
|
||||
TXGBE_PTID_TUN_IPV6 | TXGBE_PTID_TUN_EIGM),
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* PTYPE(Packet Type, 32bits)
|
||||
* - Bit 3:0 is for L2 types.
|
||||
* - Bit 7:4 is for L3 or outer L3 (for tunneling case) types.
|
||||
* - Bit 11:8 is for L4 or outer L4 (for tunneling case) types.
|
||||
* - Bit 15:12 is for tunnel types.
|
||||
* - Bit 19:16 is for inner L2 types.
|
||||
* - Bit 23:20 is for inner L3 types.
|
||||
* - Bit 27:24 is for inner L4 types.
|
||||
* - Bit 31:28 is reserved.
|
||||
* please ref to rte_mbuf.h: rte_mbuf.packet_type
|
||||
*/
|
||||
struct rte_txgbe_ptype {
|
||||
u32 l2:4; /* outer mac */
|
||||
u32 l3:4; /* outer internet protocol */
|
||||
u32 l4:4; /* outer transport protocol */
|
||||
u32 tun:4; /* tunnel protocol */
|
||||
|
||||
u32 el2:4; /* inner mac */
|
||||
u32 el3:4; /* inner internet protocol */
|
||||
u32 el4:4; /* inner transport protocol */
|
||||
u32 rsv:3;
|
||||
u32 known:1;
|
||||
};
|
||||
|
||||
#ifndef RTE_PTYPE_UNKNOWN
|
||||
#define RTE_PTYPE_UNKNOWN 0x00000000
|
||||
#define RTE_PTYPE_L2_ETHER 0x00000001
|
||||
#define RTE_PTYPE_L2_ETHER_TIMESYNC 0x00000002
|
||||
#define RTE_PTYPE_L2_ETHER_ARP 0x00000003
|
||||
#define RTE_PTYPE_L2_ETHER_LLDP 0x00000004
|
||||
#define RTE_PTYPE_L2_ETHER_NSH 0x00000005
|
||||
#define RTE_PTYPE_L2_ETHER_FCOE 0x00000009
|
||||
#define RTE_PTYPE_L3_IPV4 0x00000010
|
||||
#define RTE_PTYPE_L3_IPV4_EXT 0x00000030
|
||||
#define RTE_PTYPE_L3_IPV6 0x00000040
|
||||
#define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN 0x00000090
|
||||
#define RTE_PTYPE_L3_IPV6_EXT 0x000000c0
|
||||
#define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN 0x000000e0
|
||||
#define RTE_PTYPE_L4_TCP 0x00000100
|
||||
#define RTE_PTYPE_L4_UDP 0x00000200
|
||||
#define RTE_PTYPE_L4_FRAG 0x00000300
|
||||
#define RTE_PTYPE_L4_SCTP 0x00000400
|
||||
#define RTE_PTYPE_L4_ICMP 0x00000500
|
||||
#define RTE_PTYPE_L4_NONFRAG 0x00000600
|
||||
#define RTE_PTYPE_TUNNEL_IP 0x00001000
|
||||
#define RTE_PTYPE_TUNNEL_GRE 0x00002000
|
||||
#define RTE_PTYPE_TUNNEL_VXLAN 0x00003000
|
||||
#define RTE_PTYPE_TUNNEL_NVGRE 0x00004000
|
||||
#define RTE_PTYPE_TUNNEL_GENEVE 0x00005000
|
||||
#define RTE_PTYPE_TUNNEL_GRENAT 0x00006000
|
||||
#define RTE_PTYPE_INNER_L2_ETHER 0x00010000
|
||||
#define RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000
|
||||
#define RTE_PTYPE_INNER_L3_IPV4 0x00100000
|
||||
#define RTE_PTYPE_INNER_L3_IPV4_EXT 0x00200000
|
||||
#define RTE_PTYPE_INNER_L3_IPV6 0x00300000
|
||||
#define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000
|
||||
#define RTE_PTYPE_INNER_L3_IPV6_EXT 0x00500000
|
||||
#define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000
|
||||
#define RTE_PTYPE_INNER_L4_TCP 0x01000000
|
||||
#define RTE_PTYPE_INNER_L4_UDP 0x02000000
|
||||
#define RTE_PTYPE_INNER_L4_FRAG 0x03000000
|
||||
#define RTE_PTYPE_INNER_L4_SCTP 0x04000000
|
||||
#define RTE_PTYPE_INNER_L4_ICMP 0x05000000
|
||||
#define RTE_PTYPE_INNER_L4_NONFRAG 0x06000000
|
||||
#endif /* !RTE_PTYPE_UNKNOWN */
|
||||
#define RTE_PTYPE_L3_IPV4u RTE_PTYPE_L3_IPV4_EXT_UNKNOWN
|
||||
#define RTE_PTYPE_L3_IPV6u RTE_PTYPE_L3_IPV6_EXT_UNKNOWN
|
||||
#define RTE_PTYPE_INNER_L3_IPV4u RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN
|
||||
#define RTE_PTYPE_INNER_L3_IPV6u RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN
|
||||
#define RTE_PTYPE_L2_ETHER_FIP RTE_PTYPE_L2_ETHER
|
||||
#define RTE_PTYPE_L2_ETHER_CNM RTE_PTYPE_L2_ETHER
|
||||
#define RTE_PTYPE_L2_ETHER_EAPOL RTE_PTYPE_L2_ETHER
|
||||
#define RTE_PTYPE_L2_ETHER_FILTER RTE_PTYPE_L2_ETHER
|
||||
|
||||
u32 *txgbe_get_supported_ptypes(void);
|
||||
u32 txgbe_decode_ptype(u8 ptid);
|
||||
u8 txgbe_encode_ptype(u32 ptype);
|
||||
|
||||
/**
|
||||
* PT(Packet Type, 32bits)
|
||||
* - Bit 3:0 is for L2 types.
|
||||
* - Bit 7:4 is for L3 or outer L3 (for tunneling case) types.
|
||||
* - Bit 11:8 is for L4 or outer L4 (for tunneling case) types.
|
||||
* - Bit 15:12 is for tunnel types.
|
||||
* - Bit 19:16 is for inner L2 types.
|
||||
* - Bit 23:20 is for inner L3 types.
|
||||
* - Bit 27:24 is for inner L4 types.
|
||||
* - Bit 31:28 is reserved.
|
||||
* PT is a more accurate version of PTYPE
|
||||
**/
|
||||
#define TXGBE_PT_ETHER 0x00
|
||||
#define TXGBE_PT_IPV4 0x01
|
||||
#define TXGBE_PT_IPV4_TCP 0x11
|
||||
#define TXGBE_PT_IPV4_UDP 0x21
|
||||
#define TXGBE_PT_IPV4_SCTP 0x41
|
||||
#define TXGBE_PT_IPV4_EXT 0x03
|
||||
#define TXGBE_PT_IPV4_EXT_TCP 0x13
|
||||
#define TXGBE_PT_IPV4_EXT_UDP 0x23
|
||||
#define TXGBE_PT_IPV4_EXT_SCTP 0x43
|
||||
#define TXGBE_PT_IPV6 0x04
|
||||
#define TXGBE_PT_IPV6_TCP 0x14
|
||||
#define TXGBE_PT_IPV6_UDP 0x24
|
||||
#define TXGBE_PT_IPV6_SCTP 0x44
|
||||
#define TXGBE_PT_IPV6_EXT 0x0C
|
||||
#define TXGBE_PT_IPV6_EXT_TCP 0x1C
|
||||
#define TXGBE_PT_IPV6_EXT_UDP 0x2C
|
||||
#define TXGBE_PT_IPV6_EXT_SCTP 0x4C
|
||||
#define TXGBE_PT_IPV4_IPV6 0x05
|
||||
#define TXGBE_PT_IPV4_IPV6_TCP 0x15
|
||||
#define TXGBE_PT_IPV4_IPV6_UDP 0x25
|
||||
#define TXGBE_PT_IPV4_IPV6_SCTP 0x45
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6 0x07
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_TCP 0x17
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_UDP 0x27
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_SCTP 0x47
|
||||
#define TXGBE_PT_IPV4_IPV6_EXT 0x0D
|
||||
#define TXGBE_PT_IPV4_IPV6_EXT_TCP 0x1D
|
||||
#define TXGBE_PT_IPV4_IPV6_EXT_UDP 0x2D
|
||||
#define TXGBE_PT_IPV4_IPV6_EXT_SCTP 0x4D
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_EXT 0x0F
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP 0x1F
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP 0x2F
|
||||
#define TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP 0x4F
|
||||
|
||||
#define TXGBE_PT_NVGRE 0x00
|
||||
#define TXGBE_PT_NVGRE_IPV4 0x01
|
||||
#define TXGBE_PT_NVGRE_IPV4_TCP 0x11
|
||||
#define TXGBE_PT_NVGRE_IPV4_UDP 0x21
|
||||
#define TXGBE_PT_NVGRE_IPV4_SCTP 0x41
|
||||
#define TXGBE_PT_NVGRE_IPV4_EXT 0x03
|
||||
#define TXGBE_PT_NVGRE_IPV4_EXT_TCP 0x13
|
||||
#define TXGBE_PT_NVGRE_IPV4_EXT_UDP 0x23
|
||||
#define TXGBE_PT_NVGRE_IPV4_EXT_SCTP 0x43
|
||||
#define TXGBE_PT_NVGRE_IPV6 0x04
|
||||
#define TXGBE_PT_NVGRE_IPV6_TCP 0x14
|
||||
#define TXGBE_PT_NVGRE_IPV6_UDP 0x24
|
||||
#define TXGBE_PT_NVGRE_IPV6_SCTP 0x44
|
||||
#define TXGBE_PT_NVGRE_IPV6_EXT 0x0C
|
||||
#define TXGBE_PT_NVGRE_IPV6_EXT_TCP 0x1C
|
||||
#define TXGBE_PT_NVGRE_IPV6_EXT_UDP 0x2C
|
||||
#define TXGBE_PT_NVGRE_IPV6_EXT_SCTP 0x4C
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6 0x05
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6_TCP 0x15
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6_UDP 0x25
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT 0x0D
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP 0x1D
|
||||
#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP 0x2D
|
||||
|
||||
#define TXGBE_PT_VXLAN 0x80
|
||||
#define TXGBE_PT_VXLAN_IPV4 0x81
|
||||
#define TXGBE_PT_VXLAN_IPV4_TCP 0x91
|
||||
#define TXGBE_PT_VXLAN_IPV4_UDP 0xA1
|
||||
#define TXGBE_PT_VXLAN_IPV4_SCTP 0xC1
|
||||
#define TXGBE_PT_VXLAN_IPV4_EXT 0x83
|
||||
#define TXGBE_PT_VXLAN_IPV4_EXT_TCP 0x93
|
||||
#define TXGBE_PT_VXLAN_IPV4_EXT_UDP 0xA3
|
||||
#define TXGBE_PT_VXLAN_IPV4_EXT_SCTP 0xC3
|
||||
#define TXGBE_PT_VXLAN_IPV6 0x84
|
||||
#define TXGBE_PT_VXLAN_IPV6_TCP 0x94
|
||||
#define TXGBE_PT_VXLAN_IPV6_UDP 0xA4
|
||||
#define TXGBE_PT_VXLAN_IPV6_SCTP 0xC4
|
||||
#define TXGBE_PT_VXLAN_IPV6_EXT 0x8C
|
||||
#define TXGBE_PT_VXLAN_IPV6_EXT_TCP 0x9C
|
||||
#define TXGBE_PT_VXLAN_IPV6_EXT_UDP 0xAC
|
||||
#define TXGBE_PT_VXLAN_IPV6_EXT_SCTP 0xCC
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6 0x85
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6_TCP 0x95
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6_UDP 0xA5
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT 0x8D
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP 0x9D
|
||||
#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP 0xAD
|
||||
|
||||
#define TXGBE_PT_MAX 256
|
||||
extern const u32 txgbe_ptype_table[TXGBE_PT_MAX];
|
||||
extern const u32 txgbe_ptype_table_tn[TXGBE_PT_MAX];
|
||||
|
||||
|
||||
/* ether type filter list: one static filter per filter consumer. This is
|
||||
* to avoid filter collisions later. Add new filters
|
||||
* here!!
|
||||
* EAPOL 802.1x (0x888e): Filter 0
|
||||
* FCoE (0x8906): Filter 2
|
||||
* 1588 (0x88f7): Filter 3
|
||||
* FIP (0x8914): Filter 4
|
||||
* LLDP (0x88CC): Filter 5
|
||||
* LACP (0x8809): Filter 6
|
||||
* FC (0x8808): Filter 7
|
||||
*/
|
||||
#define TXGBE_ETF_ID_EAPOL 0
|
||||
#define TXGBE_ETF_ID_FCOE 2
|
||||
#define TXGBE_ETF_ID_1588 3
|
||||
#define TXGBE_ETF_ID_FIP 4
|
||||
#define TXGBE_ETF_ID_LLDP 5
|
||||
#define TXGBE_ETF_ID_LACP 6
|
||||
#define TXGBE_ETF_ID_FC 7
|
||||
#define TXGBE_ETF_ID_MAX 8
|
||||
|
||||
#define TXGBE_PTID_ETF_MIN 0x18
|
||||
#define TXGBE_PTID_ETF_MAX 0x1F
|
||||
static inline int txgbe_etflt_id(u8 ptid)
|
||||
{
|
||||
if (ptid >= TXGBE_PTID_ETF_MIN && ptid <= TXGBE_PTID_ETF_MAX)
|
||||
return ptid - TXGBE_PTID_ETF_MIN;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct txgbe_udphdr {
|
||||
__be16 source;
|
||||
__be16 dest;
|
||||
__be16 len;
|
||||
__be16 check;
|
||||
};
|
||||
|
||||
struct txgbe_vxlanhdr {
|
||||
__be32 vx_flags;
|
||||
__be32 vx_vni;
|
||||
};
|
||||
|
||||
struct txgbe_genevehdr {
|
||||
u8 opt_len:6;
|
||||
u8 ver:2;
|
||||
u8 rsvd1:6;
|
||||
u8 critical:1;
|
||||
u8 oam:1;
|
||||
__be16 proto_type;
|
||||
|
||||
u8 vni[3];
|
||||
u8 rsvd2;
|
||||
};
|
||||
|
||||
struct txgbe_nvgrehdr {
|
||||
__be16 flags;
|
||||
__be16 proto;
|
||||
__be32 tni;
|
||||
};
|
||||
|
||||
#endif /* _TXGBE_PTYPE_H_ */
|
@ -65,8 +65,6 @@ struct txgbe_tx_desc {
|
||||
#define RX_RING_SZ ((TXGBE_RING_DESC_MAX + RTE_PMD_TXGBE_RX_MAX_BURST) * \
|
||||
sizeof(struct txgbe_rx_desc))
|
||||
|
||||
#define TXGBE_PTID_MASK 0xFF
|
||||
|
||||
#define RTE_TXGBE_REGISTER_POLL_WAIT_10_MS 10
|
||||
#define RTE_TXGBE_WAIT_100_US 100
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user