[dpdk-dev] [PATCH v4 2/3] net/i40e: add parser for IPV4FRAG and IPV6FRAG

Beilei Xing beilei.xing at intel.com
Fri Jan 19 08:50:05 CET 2018


There're new metadata IPV4FRAG and IPV6FRAG in PPP
profile, this patch improves ptype parser to support
IPV4FRAG and IPV6FRAG.

Signed-off-by: Beilei Xing <beilei.xing at intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 44 +++++++++++++++++++++++++++---------------
 1 file changed, 28 insertions(+), 16 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 9626c6a..b197c53 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -11329,40 +11329,52 @@ i40e_update_customized_ptype(struct rte_eth_dev *dev, uint8_t *pkg,
 				if (!strncmp(name, "PPPOE", 5))
 					ptype_mapping[i].sw_ptype |=
 						RTE_PTYPE_L2_ETHER_PPPOE;
-				else if (!strncmp(name, "OIPV4", 5)) {
+				else if (!strncmp(name, "IPV4FRAG", 8) &&
+					 !in_tunnel) {
 					ptype_mapping[i].sw_ptype |=
 						RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
-					in_tunnel = true;
-				} else if (!strncmp(name, "IPV4", 4) &&
-					   !in_tunnel)
 					ptype_mapping[i].sw_ptype |=
-						RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
-				else if (!strncmp(name, "IPV4FRAG", 8) &&
-					 in_tunnel) {
+						RTE_PTYPE_L4_FRAG;
+				} else if (!strncmp(name, "IPV4FRAG", 8) &&
+					   in_tunnel) {
 					ptype_mapping[i].sw_ptype |=
 					    RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN;
 					ptype_mapping[i].sw_ptype |=
 						RTE_PTYPE_INNER_L4_FRAG;
+				} else if (!strncmp(name, "OIPV4", 5)) {
+					ptype_mapping[i].sw_ptype |=
+						RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
+					in_tunnel = true;
 				} else if (!strncmp(name, "IPV4", 4) &&
-					   in_tunnel)
+					   !in_tunnel)
+					ptype_mapping[i].sw_ptype |=
+						RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
+				else if (!strncmp(name, "IPV4", 4) &&
+					 in_tunnel)
 					ptype_mapping[i].sw_ptype |=
 					    RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN;
-				else if (!strncmp(name, "OIPV6", 5)) {
+				else if (!strncmp(name, "IPV6FRAG", 8) &&
+					 !in_tunnel) {
 					ptype_mapping[i].sw_ptype |=
 						RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
-					in_tunnel = true;
-				} else if (!strncmp(name, "IPV6", 4) &&
-					   !in_tunnel)
 					ptype_mapping[i].sw_ptype |=
-						RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
-				else if (!strncmp(name, "IPV6FRAG", 8) &&
-					 in_tunnel) {
+						RTE_PTYPE_L4_FRAG;
+				} else if (!strncmp(name, "IPV6FRAG", 8) &&
+					   in_tunnel) {
 					ptype_mapping[i].sw_ptype |=
 					    RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN;
 					ptype_mapping[i].sw_ptype |=
 						RTE_PTYPE_INNER_L4_FRAG;
+				} else if (!strncmp(name, "OIPV6", 5)) {
+					ptype_mapping[i].sw_ptype |=
+						RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
+					in_tunnel = true;
 				} else if (!strncmp(name, "IPV6", 4) &&
-					   in_tunnel)
+					   !in_tunnel)
+					ptype_mapping[i].sw_ptype |=
+						RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
+				else if (!strncmp(name, "IPV6", 4) &&
+					 in_tunnel)
 					ptype_mapping[i].sw_ptype |=
 					    RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN;
 				else if (!strncmp(name, "UDP", 3) && !in_tunnel)
-- 
2.5.5



More information about the dev mailing list