Hi Akhil, This application relies on checksum offload in both outbound and inbound paths (PKT_TX_IP_CKSUM flag).
Because we assume that we always forward the packet in both paths, we decrement the ttl in both inbound and outbound. You seem to only increment (recalculate) the checksum of the inner IP header in the outbound path but not the inbound path. Also, in the inbound path you have to consider a possible ECN value update. Sergio On 26/09/2016 17:32, akhil.goyal at nxp.com wrote: > From: Akhil Goyal <akhil.goyal at nxp.com> > > In IPsec-secgw application when TTL is decremented in IP header > before forwarding the packet, checksum needs to be updated. > > In this patch an incremental checksum is added. > Other applications(like l3fwd) are also doing so. > > Signed-off-by: Akhil Goyal <akhil.goyal at nxp.com> > --- > examples/ipsec-secgw/ipip.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/examples/ipsec-secgw/ipip.h b/examples/ipsec-secgw/ipip.h > index ff1dccd..ef059a9 100644 > --- a/examples/ipsec-secgw/ipip.h > +++ b/examples/ipsec-secgw/ipip.h > @@ -56,6 +56,7 @@ ipip_outbound(struct rte_mbuf *m, uint32_t offset, uint32_t > is_ipv6, > if (inip4->ip_v == IPVERSION) { > /* XXX This should be done by the forwarding engine instead */ > inip4->ip_ttl -= 1; > + inip4->ip_sum += 1; > ds_ecn = inip4->ip_tos; > } else { > inip6 = (struct ip6_hdr *)inip4;