Re: [PATCH 12/12] examples/l3fwd: add option to parse ptype
From: Ananyev, Konstantin <hidden>
Date: 2016-01-07 09:44:43
Hi Jianfeng,
-----Original Message----- From: Tan, Jianfeng Sent: Thursday, January 07, 2016 1:20 AM To: Ananyev, Konstantin; dev@dpdk.org Cc: Zhang, Helin Subject: Re: [PATCH 12/12] examples/l3fwd: add option to parse ptype Hi Konstantin, On 1/6/2016 12:49 AM, Ananyev, Konstantin wrote:quoted
Hi Jianfeng,quoted
quoted
quoted
+static int +check_packet_type_ok(int portid) +{ + int i; + int ret; + uint32_t ptypes[RTE_PTYPE_L3_MAX_NUM]; + int ptype_l3_ipv4 = 0, ptype_l3_ipv6 = 0; + + ret = rte_eth_dev_get_ptype_info(portid, RTE_PTYPE_L3_MASK,ptypes);quoted
+ for (i = 0; i < ret; ++i) { + if (ptypes[i] & RTE_PTYPE_L3_IPV4) + ptype_l3_ipv4 = 1; + if (ptypes[i] & RTE_PTYPE_L3_IPV6) + ptype_l3_ipv6 = 1; + } + + if (ptype_l3_ipv4 == 0) + printf("port %d cannot parse RTE_PTYPE_L3_IPV4\n", portid); + + if (ptype_l3_ipv6 == 0) + printf("port %d cannot parse RTE_PTYPE_L3_IPV6\n", portid); + + if (ptype_l3_ipv4 || ptype_l3_ipv6) + return 1;Forgot one thing: I think it should be: if (ptype_l3_ipv4 && ptype_l3_ipv6) return 1; return 0; or just: return ptype_l3_ipv4 && ptype_l3_ipv6;My original thought is: PMDs, like vmxnet3, fills ptype_l3_ipv4, but not ptype_l3_ipv6. If we use "&&", then it would add rx callback to parse ptype whether ipv4 or ipv6 traffic is comming.
Yes, I think that's how it should be: If HW can't recognise either IPV4 or IPV6 packets, then SW parsing needs to be done. l3fwd relies on PMD to recognise both IPV4 and IPV6 packets properly. If it can recognise only IPV4, then IPV6 traffic will not be forwarded correctly, and visa-versa. Konstantin
Thanks, Jianfengquoted
Konstantin