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!

Reply via email to