[v2,05/20] net/ice: support packet type getting

Message ID 1543820821-108122-6-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series A new net PMD - ice |

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Wenzhuo Lu Dec. 3, 2018, 7:06 a.m. UTC
  Add ops dev_supported_ptypes_get.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/ice/ice_ethdev.c   |   2 +
 drivers/net/ice/ice_lan_rxtx.c | 601 +++++++++++++++++++++++++++++++++++++++++
 drivers/net/ice/ice_rxtx.h     |   2 +
 3 files changed, 605 insertions(+)
  

Comments

Varghese, Vipin Dec. 4, 2018, 5:19 a.m. UTC | #1
snipped
> +static inline uint32_t
> +ice_get_default_pkt_type(uint16_t ptype) {

Suggestion: should we check 'ptype >= RTE_PTYPE_UNKNOWN ' return?

> +	static const uint32_t type_table[ICE_MAX_PKT_TYPE]
> +		__rte_cache_aligned = {
> +		/* L2 types */
> +		/* [0] reserved */
> +		[1] = RTE_PTYPE_L2_ETHER,
> +		/* [2] - [5] reserved */
> +		[6] = RTE_PTYPE_L2_ETHER_LLDP,
> +		/* [7] - [10] reserved */
> +		[11] = RTE_PTYPE_L2_ETHER_ARP,
> +		/* [12] - [21] reserved */
> +
> +		/* Non tunneled IPv4 */
> +		[22] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_FRAG,
> +		[23] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_NONFRAG,
> +		[24] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_UDP,
> +		/* [25] reserved */
> +		[26] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_TCP,
> +		[27] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_SCTP,
> +		[28] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_ICMP,
> +
> +		/* IPv4 --> IPv4 */
> +		[29] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[30] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[31] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [32] reserved */
> +		[33] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[34] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[35] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> IPv6 */
> +		[36] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[37] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[38] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [39] reserved */
> +		[40] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[41] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[42] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN */
> +		[43] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
> +		[44] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[45] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[46] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [47] reserved */
> +		[48] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[49] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[50] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
> +		[51] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[52] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[53] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [54] reserved */
> +		[55] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[56] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[57] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC */
> +		[58] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
> +		[59] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[60] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[61] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [62] reserved */
> +		[63] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[64] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[65] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
> +		[66] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[67] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[68] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [69] reserved */
> +		[70] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[71] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[72] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
> +		[73] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
> +		[74] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[75] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[76] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [77] reserved */
> +		[78] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[79] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[80] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
> +		[81] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[82] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[83] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [84] reserved */
> +		[85] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[86] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_SCTP,
> +		[87] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_GRENAT |
> +		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* Non tunneled IPv6 */
> +		[88] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_FRAG,
> +		[89] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_NONFRAG,
> +		[90] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_UDP,
> +		/* [91] reserved */
> +		[92] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_TCP,
> +		[93] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_SCTP,
> +		[94] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_L4_ICMP,
> +
> +		/* IPv6 --> IPv4 */
> +		[95] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_FRAG,
> +		[96] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_NONFRAG,
> +		[97] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_UDP,
> +		/* [98] reserved */
> +		[99] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +		       RTE_PTYPE_TUNNEL_IP |
> +		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +		       RTE_PTYPE_INNER_L4_TCP,
> +		[100] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[101] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> IPv6 */
> +		[102] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[103] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[104] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [105] reserved */
> +		[106] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[107] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[108] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_IP |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN */
> +		[109] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
> +		[110] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[111] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[112] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [113] reserved */
> +		[114] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[115] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[116] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
> +		[117] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[118] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[119] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [120] reserved */
> +		[121] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[122] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[123] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC */
> +		[124] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
> +		[125] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[126] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[127] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [128] reserved */
> +		[129] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[130] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[131] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
> +		[132] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[133] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[134] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [135] reserved */
> +		[136] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[137] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[138] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> RTE_PTYPE_INNER_L2_ETHER |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
> +		[139] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
> +		[140] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[141] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[142] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [143] reserved */
> +		[144] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[145] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[146] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +
> +		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
> +		[147] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_FRAG,
> +		[148] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_NONFRAG,
> +		[149] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_UDP,
> +		/* [150] reserved */
> +		[151] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_TCP,
> +		[152] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_SCTP,
> +		[153] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GRENAT |
> +			RTE_PTYPE_INNER_L2_ETHER_VLAN |
> +			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_INNER_L4_ICMP,
> +		/* [154] - [255] reserved */
> +		[256] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GTPC,
> +		[257] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GTPC,
> +		[258] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +				RTE_PTYPE_TUNNEL_GTPU,
> +		[259] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
> +				RTE_PTYPE_TUNNEL_GTPU,
> +		/* [260] - [263] reserved */
> +		[264] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GTPC,
> +		[265] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +			RTE_PTYPE_TUNNEL_GTPC,
> +		[266] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +				RTE_PTYPE_TUNNEL_GTPU,
> +		[267] = RTE_PTYPE_L2_ETHER |
> RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
> +				RTE_PTYPE_TUNNEL_GTPU,
> +
> +		/* All others reserved */
> +	};

Suggestion: is it ok to use MACRO instead of array.
snipped
  
Wenzhuo Lu Dec. 6, 2018, 5:34 a.m. UTC | #2
Hi Vipin,


> -----Original Message-----
> From: Varghese, Vipin
> Sent: Tuesday, December 4, 2018 1:19 PM
> To: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>; Zhao1, Wei
> <wei.zhao1@intel.com>
> Subject: RE: [dpdk-dev] [PATCH v2 05/20] net/ice: support packet type
> getting
> 
> snipped
> > +static inline uint32_t
> > +ice_get_default_pkt_type(uint16_t ptype) {
> 
> Suggestion: should we check 'ptype >= RTE_PTYPE_UNKNOWN ' return?
Good suggestion. Will update it in the new version.
> 
> Suggestion: is it ok to use MACRO instead of array.
The array is for a better performance. I don't know the idea of macro. Would you like to give more details? Thanks.

> snipped
  

Patch

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 2437159..5a78f3b 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -44,6 +44,7 @@  static void ice_dev_info_get(struct rte_eth_dev *dev,
 	.tx_queue_setup               = ice_tx_queue_setup,
 	.tx_queue_release             = ice_tx_queue_release,
 	.dev_infos_get                = ice_dev_info_get,
+	.dev_supported_ptypes_get     = ice_dev_supported_ptypes_get,
 };
 
 static void
@@ -492,6 +493,7 @@  static void ice_dev_info_get(struct rte_eth_dev *dev,
 
 	dev->dev_ops = &ice_eth_dev_ops;
 
+	ice_set_default_ptype_table(dev);
 	pci_dev = RTE_DEV_TO_PCI(dev->device);
 
 	rte_eth_copy_pci_info(dev, pci_dev);
diff --git a/drivers/net/ice/ice_lan_rxtx.c b/drivers/net/ice/ice_lan_rxtx.c
index dddc8b1..6d5335d 100644
--- a/drivers/net/ice/ice_lan_rxtx.c
+++ b/drivers/net/ice/ice_lan_rxtx.c
@@ -900,6 +900,42 @@ 
 	rte_free(q);
 }
 
+const uint32_t *
+ice_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused)
+{
+	static const uint32_t ptypes[] = {
+		/* refers to ice_get_default_pkt_type() */
+		RTE_PTYPE_L2_ETHER,
+		RTE_PTYPE_L2_ETHER_LLDP,
+		RTE_PTYPE_L2_ETHER_ARP,
+		RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
+		RTE_PTYPE_L3_IPV6_EXT_UNKNOWN,
+		RTE_PTYPE_L4_FRAG,
+		RTE_PTYPE_L4_ICMP,
+		RTE_PTYPE_L4_NONFRAG,
+		RTE_PTYPE_L4_SCTP,
+		RTE_PTYPE_L4_TCP,
+		RTE_PTYPE_L4_UDP,
+		RTE_PTYPE_TUNNEL_GRENAT,
+		RTE_PTYPE_TUNNEL_IP,
+		RTE_PTYPE_INNER_L2_ETHER,
+		RTE_PTYPE_INNER_L2_ETHER_VLAN,
+		RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN,
+		RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN,
+		RTE_PTYPE_INNER_L4_FRAG,
+		RTE_PTYPE_INNER_L4_ICMP,
+		RTE_PTYPE_INNER_L4_NONFRAG,
+		RTE_PTYPE_INNER_L4_SCTP,
+		RTE_PTYPE_INNER_L4_TCP,
+		RTE_PTYPE_INNER_L4_UDP,
+		RTE_PTYPE_TUNNEL_GTPC,
+		RTE_PTYPE_TUNNEL_GTPU,
+		RTE_PTYPE_UNKNOWN
+	};
+
+	return ptypes;
+}
+
 void
 ice_clear_queues(struct rte_eth_dev *dev)
 {
@@ -941,3 +977,568 @@ 
 	}
 	dev->data->nb_tx_queues = 0;
 }
+
+/* For each value it means, datasheet of hardware can tell more details
+ *
+ * @note: fix ice_dev_supported_ptypes_get() if any change here.
+ */
+static inline uint32_t
+ice_get_default_pkt_type(uint16_t ptype)
+{
+	static const uint32_t type_table[ICE_MAX_PKT_TYPE]
+		__rte_cache_aligned = {
+		/* L2 types */
+		/* [0] reserved */
+		[1] = RTE_PTYPE_L2_ETHER,
+		/* [2] - [5] reserved */
+		[6] = RTE_PTYPE_L2_ETHER_LLDP,
+		/* [7] - [10] reserved */
+		[11] = RTE_PTYPE_L2_ETHER_ARP,
+		/* [12] - [21] reserved */
+
+		/* Non tunneled IPv4 */
+		[22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_FRAG,
+		[23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_NONFRAG,
+		[24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_UDP,
+		/* [25] reserved */
+		[26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_TCP,
+		[27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_SCTP,
+		[28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_ICMP,
+
+		/* IPv4 --> IPv4 */
+		[29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [32] reserved */
+		[33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> IPv6 */
+		[36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [39] reserved */
+		[40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN */
+		[43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
+		[44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [47] reserved */
+		[48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
+		[51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [54] reserved */
+		[55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC */
+		[58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
+		[59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [62] reserved */
+		[63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
+		[66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [69] reserved */
+		[70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
+		[73] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
+		[74] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[75] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[76] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [77] reserved */
+		[78] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[79] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[80] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
+		[81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[83] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [84] reserved */
+		[85] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_SCTP,
+		[87] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_GRENAT |
+		       RTE_PTYPE_INNER_L2_ETHER_VLAN |
+		       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_ICMP,
+
+		/* Non tunneled IPv6 */
+		[88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_FRAG,
+		[89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_NONFRAG,
+		[90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_UDP,
+		/* [91] reserved */
+		[92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_TCP,
+		[93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_SCTP,
+		[94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_L4_ICMP,
+
+		/* IPv6 --> IPv4 */
+		[95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_FRAG,
+		[96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_NONFRAG,
+		[97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_UDP,
+		/* [98] reserved */
+		[99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+		       RTE_PTYPE_TUNNEL_IP |
+		       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+		       RTE_PTYPE_INNER_L4_TCP,
+		[100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> IPv6 */
+		[102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [105] reserved */
+		[106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_IP |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN */
+		[109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
+		[110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [113] reserved */
+		[114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
+		[117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [120] reserved */
+		[121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC */
+		[124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
+		[125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [128] reserved */
+		[129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
+		[132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [135] reserved */
+		[136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
+		[139] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
+		[140] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[141] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[142] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [143] reserved */
+		[144] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[145] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[146] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+
+		/* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
+		[147] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_FRAG,
+		[148] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_NONFRAG,
+		[149] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_UDP,
+		/* [150] reserved */
+		[151] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_TCP,
+		[152] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_SCTP,
+		[153] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GRENAT |
+			RTE_PTYPE_INNER_L2_ETHER_VLAN |
+			RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_INNER_L4_ICMP,
+		/* [154] - [255] reserved */
+		[256] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GTPC,
+		[257] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GTPC,
+		[258] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+				RTE_PTYPE_TUNNEL_GTPU,
+		[259] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
+				RTE_PTYPE_TUNNEL_GTPU,
+		/* [260] - [263] reserved */
+		[264] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GTPC,
+		[265] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+			RTE_PTYPE_TUNNEL_GTPC,
+		[266] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+				RTE_PTYPE_TUNNEL_GTPU,
+		[267] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
+				RTE_PTYPE_TUNNEL_GTPU,
+
+		/* All others reserved */
+	};
+
+	return type_table[ptype];
+}
+
+void __attribute__((cold))
+ice_set_default_ptype_table(struct rte_eth_dev *dev)
+{
+	struct ice_adapter *ad =
+		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+	int i;
+
+	for (i = 0; i < ICE_MAX_PKT_TYPE; i++)
+		ad->ptype_tbl[i] = ice_get_default_pkt_type(i);
+}
diff --git a/drivers/net/ice/ice_rxtx.h b/drivers/net/ice/ice_rxtx.h
index 088a206..871646f 100644
--- a/drivers/net/ice/ice_rxtx.h
+++ b/drivers/net/ice/ice_rxtx.h
@@ -134,4 +134,6 @@  int ice_tx_queue_setup(struct rte_eth_dev *dev,
 void ice_tx_queue_release(void *txq);
 void ice_clear_queues(struct rte_eth_dev *dev);
 void ice_free_queues(struct rte_eth_dev *dev);
+void ice_set_default_ptype_table(struct rte_eth_dev *dev);
+const uint32_t *ice_dev_supported_ptypes_get(struct rte_eth_dev *dev);
 #endif /* _ICE_RXTX_H_ */