Module Name: src Committed By: maxv Date: Wed Jul 11 05:25:46 UTC 2018
Modified Files: src/sys/arch/powerpc/booke/dev: pq3etsec.c src/sys/dist/pf/net: pf.c pf_ioctl.c src/sys/external/bsd/ipf/netinet: fil.c ip_fil_netbsd.c src/sys/net: if_loop.c src/sys/net/npf: npf_mbuf.c src/sys/netinet: in.h in_offload.c in_offload.h ip_mroute.c ip_output.c src/sys/netipsec: ipsec.c Log Message: Rename ip_undefer_csum -> in_undefer_cksum in_delayed_cksum -> in_undefer_cksum_tcpudp The two previous names were inconsistent and misleading. Put the two functions into in_offload.c. Add comments to explain what we're doing. The same could be done for IPv6. To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/arch/powerpc/booke/dev/pq3etsec.c cvs rdiff -u -r1.81 -r1.82 src/sys/dist/pf/net/pf.c cvs rdiff -u -r1.52 -r1.53 src/sys/dist/pf/net/pf_ioctl.c cvs rdiff -u -r1.23 -r1.24 src/sys/external/bsd/ipf/netinet/fil.c cvs rdiff -u -r1.28 -r1.29 src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c cvs rdiff -u -r1.103 -r1.104 src/sys/net/if_loop.c cvs rdiff -u -r1.18 -r1.19 src/sys/net/npf/npf_mbuf.c cvs rdiff -u -r1.105 -r1.106 src/sys/netinet/in.h cvs rdiff -u -r1.7 -r1.8 src/sys/netinet/in_offload.c cvs rdiff -u -r1.8 -r1.9 src/sys/netinet/in_offload.h cvs rdiff -u -r1.160 -r1.161 src/sys/netinet/ip_mroute.c cvs rdiff -u -r1.306 -r1.307 src/sys/netinet/ip_output.c cvs rdiff -u -r1.164 -r1.165 src/sys/netipsec/ipsec.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/powerpc/booke/dev/pq3etsec.c diff -u src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.34 src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.35 --- src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.34 Tue Jun 26 06:47:59 2018 +++ src/sys/arch/powerpc/booke/dev/pq3etsec.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: pq3etsec.c,v 1.34 2018/06/26 06:47:59 msaitoh Exp $ */ +/* $NetBSD: pq3etsec.c,v 1.35 2018/07/11 05:25:45 maxv Exp $ */ /*- * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc. * All rights reserved. @@ -41,7 +41,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pq3etsec.c,v 1.34 2018/06/26 06:47:59 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pq3etsec.c,v 1.35 2018/07/11 05:25:45 maxv Exp $"); #include <sys/param.h> #include <sys/cpu.h> @@ -2087,7 +2087,7 @@ pq3etsec_tx_offload( if (mn == NULL) { if (csum_flags & M_CSUM_IP4) { #ifdef INET - ip_undefer_csum(m, ETHER_HDR_LEN, + in_undefer_cksum(m, ETHER_HDR_LEN, csum_flags & M_CSUM_IP4); #else panic("%s: impossible M_CSUM flags %#x", Index: src/sys/dist/pf/net/pf.c diff -u src/sys/dist/pf/net/pf.c:1.81 src/sys/dist/pf/net/pf.c:1.82 --- src/sys/dist/pf/net/pf.c:1.81 Thu May 3 07:01:08 2018 +++ src/sys/dist/pf/net/pf.c Wed Jul 11 05:25:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: pf.c,v 1.81 2018/05/03 07:01:08 maxv Exp $ */ +/* $NetBSD: pf.c,v 1.82 2018/07/11 05:25:46 maxv Exp $ */ /* $OpenBSD: pf.c,v 1.552.2.1 2007/11/27 16:37:57 henning Exp $ */ /* @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pf.c,v 1.81 2018/05/03 07:01:08 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pf.c,v 1.82 2018/07/11 05:25:46 maxv Exp $"); #include "pflog.h" @@ -5353,7 +5353,7 @@ pf_route(struct mbuf **m, struct pf_rule /* Catch routing changes wrt. hardware checksumming for TCP or UDP. */ #ifdef __NetBSD__ if (m0->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(m0); + in_undefer_cksum_tcpudp(m0); m0->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } #else Index: src/sys/dist/pf/net/pf_ioctl.c diff -u src/sys/dist/pf/net/pf_ioctl.c:1.52 src/sys/dist/pf/net/pf_ioctl.c:1.53 --- src/sys/dist/pf/net/pf_ioctl.c:1.52 Sun Oct 15 04:30:05 2017 +++ src/sys/dist/pf/net/pf_ioctl.c Wed Jul 11 05:25:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: pf_ioctl.c,v 1.52 2017/10/15 04:30:05 pgoyette Exp $ */ +/* $NetBSD: pf_ioctl.c,v 1.53 2018/07/11 05:25:46 maxv Exp $ */ /* $OpenBSD: pf_ioctl.c,v 1.182 2007/06/24 11:17:13 mcbride Exp $ */ /* @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pf_ioctl.c,v 1.52 2017/10/15 04:30:05 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pf_ioctl.c,v 1.53 2018/07/11 05:25:46 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -3293,7 +3293,7 @@ pfil4_wrapper(void *arg, struct mbuf **m */ if (dir == PFIL_OUT) { if ((*mp)->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(*mp); + in_undefer_cksum_tcpudp(*mp); (*mp)->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } Index: src/sys/external/bsd/ipf/netinet/fil.c diff -u src/sys/external/bsd/ipf/netinet/fil.c:1.23 src/sys/external/bsd/ipf/netinet/fil.c:1.24 --- src/sys/external/bsd/ipf/netinet/fil.c:1.23 Sun Jun 3 10:37:23 2018 +++ src/sys/external/bsd/ipf/netinet/fil.c Wed Jul 11 05:25:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: fil.c,v 1.23 2018/06/03 10:37:23 maxv Exp $ */ +/* $NetBSD: fil.c,v 1.24 2018/07/11 05:25:46 maxv Exp $ */ /* * Copyright (C) 2012 by Darren Reed. @@ -133,12 +133,15 @@ extern struct callout ipf_slowtimer_ch; # include <sys/timeout.h> extern struct timeout ipf_slowtimer_ch; #endif +#if defined(__NetBSD__) +#include <netinet/in_offload.h> +#endif /* END OF INCLUDES */ #if !defined(lint) #if defined(__NetBSD__) #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.23 2018/06/03 10:37:23 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fil.c,v 1.24 2018/07/11 05:25:46 maxv Exp $"); #else static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: fil.c,v 1.1.1.2 2012/07/22 13:45:07 darrenr Exp $"; @@ -2853,7 +2856,7 @@ ipf_check(void *ctx, ip_t *ip, int hlen, * disable delayed checksums. */ if (m->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); m->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA; } # endif /* CSUM_DELAY_DATA */ Index: src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c diff -u src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.28 src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.29 --- src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.28 Thu May 3 07:13:48 2018 +++ src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c Wed Jul 11 05:25:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_fil_netbsd.c,v 1.28 2018/05/03 07:13:48 maxv Exp $ */ +/* $NetBSD: ip_fil_netbsd.c,v 1.29 2018/07/11 05:25:46 maxv Exp $ */ /* * Copyright (C) 2012 by Darren Reed. @@ -8,7 +8,7 @@ #if !defined(lint) #if defined(__NetBSD__) #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_fil_netbsd.c,v 1.28 2018/05/03 07:13:48 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_fil_netbsd.c,v 1.29 2018/07/11 05:25:46 maxv Exp $"); #else static const char sccsid[] = "@(#)ip_fil.c 2.41 6/5/96 (C) 1993-2000 Darren Reed"; static const char rcsid[] = "@(#)Id: ip_fil_netbsd.c,v 1.1.1.2 2012/07/22 13:45:17 darrenr Exp"; @@ -57,6 +57,9 @@ static const char rcsid[] = "@(#)Id: ip_ #include <sys/module.h> #include <sys/mutex.h> #endif +#if defined(__NetBSD__) +#include <netinet/in_offload.h> +#endif #include <net/if.h> #include <net/route.h> @@ -219,7 +222,7 @@ ipf_check_wrapper(void *arg, struct mbuf */ if (dir == PFIL_OUT) { if ((*mp)->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(*mp); + in_undefer_cksum_tcpudp(*mp); (*mp)->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } Index: src/sys/net/if_loop.c diff -u src/sys/net/if_loop.c:1.103 src/sys/net/if_loop.c:1.104 --- src/sys/net/if_loop.c:1.103 Thu Jun 28 06:02:24 2018 +++ src/sys/net/if_loop.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: if_loop.c,v 1.103 2018/06/28 06:02:24 ozaki-r Exp $ */ +/* $NetBSD: if_loop.c,v 1.104 2018/07/11 05:25:45 maxv Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.103 2018/06/28 06:02:24 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.104 2018/07/11 05:25:45 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -320,7 +320,7 @@ looutput(struct ifnet *ifp, struct mbuf csum_flags = m->m_pkthdr.csum_flags; KASSERT((csum_flags & ~(M_CSUM_IPv4|M_CSUM_UDPv4)) == 0); if (csum_flags != 0 && IN_LOOPBACK_NEED_CHECKSUM(csum_flags)) { - ip_undefer_csum(m, 0, csum_flags); + in_undefer_cksum(m, 0, csum_flags); } m->m_pkthdr.csum_flags = 0; pktq = ip_pktq; Index: src/sys/net/npf/npf_mbuf.c diff -u src/sys/net/npf/npf_mbuf.c:1.18 src/sys/net/npf/npf_mbuf.c:1.19 --- src/sys/net/npf/npf_mbuf.c:1.18 Mon Dec 26 23:05:06 2016 +++ src/sys/net/npf/npf_mbuf.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: npf_mbuf.c,v 1.18 2016/12/26 23:05:06 christos Exp $ */ +/* $NetBSD: npf_mbuf.c,v 1.19 2018/07/11 05:25:45 maxv Exp $ */ /*- * Copyright (c) 2009-2012 The NetBSD Foundation, Inc. @@ -38,10 +38,11 @@ #ifdef _KERNEL #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: npf_mbuf.c,v 1.18 2016/12/26 23:05:06 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: npf_mbuf.c,v 1.19 2018/07/11 05:25:45 maxv Exp $"); #include <sys/param.h> #include <sys/mbuf.h> +#include <netinet/in_offload.h> #endif #include "npf_impl.h" @@ -272,7 +273,7 @@ nbuf_cksum_barrier(nbuf_t *nbuf, int di) KASSERT(m_flags_p(m, M_PKTHDR)); if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv4 | M_CSUM_UDPv4)) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4 | M_CSUM_UDPv4); return true; } Index: src/sys/netinet/in.h diff -u src/sys/netinet/in.h:1.105 src/sys/netinet/in.h:1.106 --- src/sys/netinet/in.h:1.105 Thu Apr 19 21:21:44 2018 +++ src/sys/netinet/in.h Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: in.h,v 1.105 2018/04/19 21:21:44 christos Exp $ */ +/* $NetBSD: in.h,v 1.106 2018/07/11 05:25:45 maxv Exp $ */ /* * Copyright (c) 1982, 1986, 1990, 1993 @@ -569,7 +569,6 @@ int in_canforward(struct in_addr); int cpu_in_cksum(struct mbuf *, int, int, uint32_t); int in_cksum(struct mbuf *, int); int in4_cksum(struct mbuf *, u_int8_t, int, int); -void in_delayed_cksum(struct mbuf *); int in_localaddr(struct in_addr); void in_socktrim(struct sockaddr_in *); Index: src/sys/netinet/in_offload.c diff -u src/sys/netinet/in_offload.c:1.7 src/sys/netinet/in_offload.c:1.8 --- src/sys/netinet/in_offload.c:1.7 Tue Apr 26 09:30:01 2016 +++ src/sys/netinet/in_offload.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: in_offload.c,v 1.7 2016/04/26 09:30:01 ozaki-r Exp $ */ +/* $NetBSD: in_offload.c,v 1.8 2018/07/11 05:25:45 maxv Exp $ */ /*- * Copyright (c)2005, 2006 YAMAMOTO Takashi, @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in_offload.c,v 1.7 2016/04/26 09:30:01 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in_offload.c,v 1.8 2018/07/11 05:25:45 maxv Exp $"); #include <sys/param.h> #include <sys/mbuf.h> @@ -197,8 +197,12 @@ quit: return error; } +/* + * Compute now in software the IP and TCP/UDP checksums. Cancel the + * hardware offloading. + */ void -ip_undefer_csum(struct mbuf *m, size_t hdrlen, int csum_flags) +in_undefer_cksum(struct mbuf *m, size_t hdrlen, int csum_flags) { const size_t iphdrlen = M_CSUM_DATA_IPv4_IPHL(m->m_pkthdr.csum_data); uint16_t csum; @@ -252,3 +256,29 @@ ip_undefer_csum(struct mbuf *m, size_t h m->m_pkthdr.csum_flags ^= csum_flags; } + +/* + * Compute now in software the TCP/UDP checksum. Cancel the hardware + * offloading. + */ +void +in_undefer_cksum_tcpudp(struct mbuf *m) +{ + struct ip *ip; + u_int16_t csum, offset; + + ip = mtod(m, struct ip *); + offset = ip->ip_hl << 2; + csum = in4_cksum(m, 0, offset, ntohs(ip->ip_len) - offset); + if (csum == 0 && (m->m_pkthdr.csum_flags & M_CSUM_UDPv4) != 0) + csum = 0xffff; + + offset += M_CSUM_DATA_IPv4_OFFSET(m->m_pkthdr.csum_data); + + if ((offset + sizeof(u_int16_t)) > m->m_len) { + /* This happens when ip options were inserted */ + m_copyback(m, offset, sizeof(csum), (void *)&csum); + } else { + *(u_int16_t *)(mtod(m, char *) + offset) = csum; + } +} Index: src/sys/netinet/in_offload.h diff -u src/sys/netinet/in_offload.h:1.8 src/sys/netinet/in_offload.h:1.9 --- src/sys/netinet/in_offload.h:1.8 Mon Apr 25 22:20:59 2011 +++ src/sys/netinet/in_offload.h Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: in_offload.h,v 1.8 2011/04/25 22:20:59 yamt Exp $ */ +/* $NetBSD: in_offload.h,v 1.9 2018/07/11 05:25:45 maxv Exp $ */ /*- * Copyright (c)2005, 2006 YAMAMOTO Takashi, @@ -36,7 +36,8 @@ int tcp4_segment(struct mbuf *, int (*)(void *, struct mbuf *), void *); int ip_tso_output(struct ifnet *, struct mbuf *, const struct sockaddr *, struct rtentry *); -void ip_undefer_csum(struct mbuf *, size_t, int); +void in_undefer_cksum(struct mbuf *, size_t, int); +void in_undefer_cksum_tcpudp(struct mbuf *m); /* * offloading related sysctl variables. Index: src/sys/netinet/ip_mroute.c diff -u src/sys/netinet/ip_mroute.c:1.160 src/sys/netinet/ip_mroute.c:1.161 --- src/sys/netinet/ip_mroute.c:1.160 Thu Jun 21 10:37:50 2018 +++ src/sys/netinet/ip_mroute.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_mroute.c,v 1.160 2018/06/21 10:37:50 knakahara Exp $ */ +/* $NetBSD: ip_mroute.c,v 1.161 2018/07/11 05:25:45 maxv Exp $ */ /* * Copyright (c) 1992, 1993 @@ -93,7 +93,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_mroute.c,v 1.160 2018/06/21 10:37:50 knakahara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_mroute.c,v 1.161 2018/07/11 05:25:45 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1723,7 +1723,7 @@ encap_send(struct ip *ip, struct vif *vi /* Take care of delayed checksums */ if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } @@ -2743,7 +2743,7 @@ pim_register_prepare(struct ip *ip, stru /* Take care of delayed checksums */ if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } Index: src/sys/netinet/ip_output.c diff -u src/sys/netinet/ip_output.c:1.306 src/sys/netinet/ip_output.c:1.307 --- src/sys/netinet/ip_output.c:1.306 Sat Jun 2 11:56:57 2018 +++ src/sys/netinet/ip_output.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_output.c,v 1.306 2018/06/02 11:56:57 maxv Exp $ */ +/* $NetBSD: ip_output.c,v 1.307 2018/07/11 05:25:45 maxv Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.306 2018/06/02 11:56:57 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.307 2018/07/11 05:25:45 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -707,7 +707,7 @@ sendit: if (sw_csum & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { if (IN_NEED_CHECKSUM(ifp, sw_csum & (M_CSUM_TCPv4|M_CSUM_UDPv4))) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); } m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); @@ -733,7 +733,7 @@ sendit: if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { if (IN_NEED_CHECKSUM(ifp, m->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4))) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); } m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } @@ -960,31 +960,6 @@ sendorfree: } /* - * Process a delayed payload checksum calculation. - */ -void -in_delayed_cksum(struct mbuf *m) -{ - struct ip *ip; - u_int16_t csum, offset; - - ip = mtod(m, struct ip *); - offset = ip->ip_hl << 2; - csum = in4_cksum(m, 0, offset, ntohs(ip->ip_len) - offset); - if (csum == 0 && (m->m_pkthdr.csum_flags & M_CSUM_UDPv4) != 0) - csum = 0xffff; - - offset += M_CSUM_DATA_IPv4_OFFSET(m->m_pkthdr.csum_data); - - if ((offset + sizeof(u_int16_t)) > m->m_len) { - /* This happens when ip options were inserted */ - m_copyback(m, offset, sizeof(csum), (void *)&csum); - } else { - *(u_int16_t *)(mtod(m, char *) + offset) = csum; - } -} - -/* * Determine the maximum length of the options to be inserted; * we would far rather allocate too much space rather than too little. */ @@ -2157,7 +2132,7 @@ ip_mloopback(struct ifnet *ifp, struct m ip = mtod(copym, struct ip *); if (copym->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(copym); + in_undefer_cksum_tcpudp(copym); copym->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); } Index: src/sys/netipsec/ipsec.c diff -u src/sys/netipsec/ipsec.c:1.164 src/sys/netipsec/ipsec.c:1.165 --- src/sys/netipsec/ipsec.c:1.164 Mon May 14 17:34:26 2018 +++ src/sys/netipsec/ipsec.c Wed Jul 11 05:25:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec.c,v 1.164 2018/05/14 17:34:26 maxv Exp $ */ +/* $NetBSD: ipsec.c,v 1.165 2018/07/11 05:25:45 maxv Exp $ */ /* $FreeBSD: ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */ /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */ @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.164 2018/05/14 17:34:26 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.165 2018/07/11 05:25:45 maxv Exp $"); /* * IPsec controller part. @@ -81,6 +81,7 @@ __KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1. #include <netinet6/ip6_var.h> #endif #include <netinet/in_pcb.h> +#include <netinet/in_offload.h> #ifdef INET6 #include <netinet6/in6_pcb.h> #include <netinet/icmp6.h> @@ -664,7 +665,7 @@ ipsec4_output(struct mbuf *m, struct inp * this is done in the normal processing path. */ if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv4|M_CSUM_UDPv4)) { - in_delayed_cksum(m); + in_undefer_cksum_tcpudp(m); m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv4|M_CSUM_UDPv4); }