net/enic: fix receive packet types
Fix missing or incorrect packet types discovered by DTS. - Non-IP inner packets Set the tunnel flag. - Inner Ethernet packets All supported tunnel packets have Ethernet as inner packets. So, set INNER_L2_ETHER for all tunnel types. - IPv4 fragments carrying TCP/UDP The NIC indicates TCP/UDP based on the protocol in IP header. For fragments, ignore that bit and always set L4_FRAG. - IPv6 fragments The NIC does regconize fragments (IPv6 packets with fragment extension headers). Set packet types for these. Fixes: 93fb21fdbe23 ("net/enic: enable overlay offload for VXLAN and GENEVE") Cc: stable@dpdk.org Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com> Reviewed-by: John Daley <johndale@cisco.com>
This commit is contained in:
parent
c4fbea4bce
commit
15666e5309
@ -137,51 +137,81 @@ enic_cq_rx_flags_to_pkt_type(struct cq_desc *cqd, uint8_t tnl)
|
||||
*/
|
||||
static const uint32_t cq_type_table[128] __rte_cache_aligned = {
|
||||
[0x00] = RTE_PTYPE_UNKNOWN,
|
||||
[0x01] = RTE_PTYPE_UNKNOWN |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER,
|
||||
[0x20] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_NONFRAG,
|
||||
[0x21] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_NONFRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_NONFRAG,
|
||||
[0x22] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP,
|
||||
[0x23] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[0x24] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_TCP,
|
||||
[0x25] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_TCP |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[0x60] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x61] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
[0x62] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP,
|
||||
[0x63] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
[0x62] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x63] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[0x64] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_TCP,
|
||||
[0x65] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_TCP |
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
[0x64] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x65] = RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
[0x10] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_NONFRAG,
|
||||
[0x11] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_NONFRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_NONFRAG,
|
||||
[0x12] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_UDP,
|
||||
[0x13] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_UDP,
|
||||
[0x14] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_TCP,
|
||||
[0x15] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_TCP |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_TCP,
|
||||
[0x50] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x51] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
[0x52] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x53] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
[0x54] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG,
|
||||
[0x55] = RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG |
|
||||
RTE_PTYPE_TUNNEL_GRENAT |
|
||||
RTE_PTYPE_INNER_L2_ETHER |
|
||||
RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
|
||||
RTE_PTYPE_INNER_L4_FRAG,
|
||||
/* All others reserved */
|
||||
};
|
||||
cqrd_flags &= CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT
|
||||
|
Loading…
x
Reference in New Issue
Block a user