On Fri, Feb 26, 2016 at 21:55 +0100, Patrick Wildt wrote: > On Fri, Feb 26, 2016 at 08:25:02PM +0100, Alexander Bluhm wrote: > > On Fri, Feb 26, 2016 at 04:56:49PM +0100, Mike Belopuhov wrote: > > > I think your revised diff should be committed. Any objections? > > > > OK bluhm@ > > > > > > uh->uh_sum = 0; > > > > +#ifdef INET6 > > > > + if (tdb->tdb_dst.sa.sa_family == AF_INET6) > > > > + uh->uh_sum = in6_cksum(m, IPPROTO_UDP, > > > > + iphlen, m->m_pkthdr.len - iphlen); > > > > +#endif /* INET6 */ > > > > I think we should use hardware checksumming here. But let's commit > > this fix first. > > > > bluhm proposed to add M_UDP_CSUM_OUT to the mbuf csum flags. I just > tried his proposal and it looks like the following diff works. > > Patrick > > diff --git sys/netinet/ipsec_output.c sys/netinet/ipsec_output.c > index 18a3f57..580329e 100644 > --- sys/netinet/ipsec_output.c > +++ sys/netinet/ipsec_output.c > @@ -412,8 +412,7 @@ ipsp_process_done(struct mbuf *m, struct tdb *tdb) > uh->uh_sum = 0; > #ifdef INET6 > if (tdb->tdb_dst.sa.sa_family == AF_INET6) > - uh->uh_sum = in6_cksum(m, IPPROTO_UDP, > - iphlen, m->m_pkthdr.len - iphlen); > + m->m_pkthdr.csum_flags |= M_UDP_CSUM_OUT; > #endif /* INET6 */ > espstat.esps_udpencout++; > } >
I've checked this latest version in. Thanks!
