Hi Jianfeng, > > > > > > +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); > > > + 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; Konstantin