HI Keith, Thanks for pointing out, please find my answer and update below
<Snipped> > > + /* > > + * TUN and TAP are created with IFF_NO_PI disabled. > > + * For TUN PMD this mandatory as fields are used by > > + * Kernel tun.c to determine whether its IP or non IP > > + * packets. > > + * > > + * The logic fetches the first byte of data from mbuf > > + * then compares whether its v4 or v6. If first byte > > + * is 4 or 6, then protocol field is updated. > > + */ > > + char *buff_data = rte_pktmbuf_mtod(seg, void *); > > + j = (*buff_data & 0xf0); > > + pi.proto = (j == 0x40) ? 0x0008 : > > (j == 0x60) ? 0xdd86 : 0x00; > > Warning Will Robinson: Magic numbers :-) > > Can we use the correct values here ETHERTYPE_IPV6 and ETHERTYPE_IP and > then use htons() on the values please. Earlier I refrained from doing this assuming htnos comparison is done for each packet leading to extra cycles. So updated the comments with explanation for logic explanation and readability. But I am ok to in co-operate the idea of using MACRO with htnos. I have used ETHER_TYPE_IPv4 and ETHER_TYPE_IPv6 which does not require extra include. The changes are available in v4 version. > > > + } <Snipped>