Re: [PATCH 12/12] examples/l3fwd: add option to parse ptype
From: Tan, Jianfeng <hidden>
Date: 2016-01-07 01:20:15
Hi Konstantin, On 1/6/2016 12:49 AM, Ananyev, Konstantin wrote:
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. Thanks, Jianfeng
Konstantin