Module Name:    src
Committed By:   maxv
Date:           Fri Aug 10 06:46:09 UTC 2018

Modified Files:
        src/sys/arch/powerpc/booke/dev: pq3etsec.c
        src/sys/dist/pf/net: pf_ioctl.c
        src/sys/external/bsd/ipf/netinet: ip_fil_netbsd.c
        src/sys/net: if_loop.c
        src/sys/net/npf: npf_mbuf.c
        src/sys/netinet6: in6.h in6_offload.c in6_offload.h ip6_output.c

Log Message:
Rename

        ip6_undefer_csum  -> in6_undefer_cksum
        in6_delayed_cksum -> in6_undefer_cksum_tcpudp

The two previous names were inconsistent and misleading.

Put the two functions into in6_offload.c. Add comments to explain what
we're doing.

Same as IPv4.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/powerpc/booke/dev/pq3etsec.c
cvs rdiff -u -r1.54 -r1.55 src/sys/dist/pf/net/pf_ioctl.c
cvs rdiff -u -r1.29 -r1.30 src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c
cvs rdiff -u -r1.104 -r1.105 src/sys/net/if_loop.c
cvs rdiff -u -r1.19 -r1.20 src/sys/net/npf/npf_mbuf.c
cvs rdiff -u -r1.91 -r1.92 src/sys/netinet6/in6.h
cvs rdiff -u -r1.8 -r1.9 src/sys/netinet6/in6_offload.c
cvs rdiff -u -r1.7 -r1.8 src/sys/netinet6/in6_offload.h
cvs rdiff -u -r1.211 -r1.212 src/sys/netinet6/ip6_output.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.35 src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.36
--- src/sys/arch/powerpc/booke/dev/pq3etsec.c:1.35	Wed Jul 11 05:25:45 2018
+++ src/sys/arch/powerpc/booke/dev/pq3etsec.c	Fri Aug 10 06:46:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pq3etsec.c,v 1.35 2018/07/11 05:25:45 maxv Exp $	*/
+/*	$NetBSD: pq3etsec.c,v 1.36 2018/08/10 06:46:08 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.35 2018/07/11 05:25:45 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pq3etsec.c,v 1.36 2018/08/10 06:46:08 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -2095,7 +2095,7 @@ pq3etsec_tx_offload(
 #endif
 			} else if (csum_flags & M_CSUM_IP6) {
 #ifdef INET6
-				ip6_undefer_csum(m, ETHER_HDR_LEN,
+				in6_undefer_cksum(m, ETHER_HDR_LEN,
 				    csum_flags & M_CSUM_IP6);
 #else
 				panic("%s: impossible M_CSUM flags %#x",

Index: src/sys/dist/pf/net/pf_ioctl.c
diff -u src/sys/dist/pf/net/pf_ioctl.c:1.54 src/sys/dist/pf/net/pf_ioctl.c:1.55
--- src/sys/dist/pf/net/pf_ioctl.c:1.54	Wed Jul 11 11:13:16 2018
+++ src/sys/dist/pf/net/pf_ioctl.c	Fri Aug 10 06:46:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: pf_ioctl.c,v 1.54 2018/07/11 11:13:16 kre Exp $	*/
+/*	$NetBSD: pf_ioctl.c,v 1.55 2018/08/10 06:46:08 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.54 2018/07/11 11:13:16 kre Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pf_ioctl.c,v 1.55 2018/08/10 06:46:08 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -3344,7 +3344,7 @@ pfil6_wrapper(void *arg, struct mbuf **m
 	 */
 	if (dir == PFIL_OUT) {
 		if ((*mp)->m_pkthdr.csum_flags & (M_CSUM_TCPv6|M_CSUM_UDPv6)) {
-			in6_delayed_cksum(*mp);
+			in6_undefer_cksum_tcpudp(*mp);
 			(*mp)->m_pkthdr.csum_flags &=
 			    ~(M_CSUM_TCPv6|M_CSUM_UDPv6);
 		}

Index: src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c
diff -u src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.29 src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.30
--- src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c:1.29	Wed Jul 11 05:25:46 2018
+++ src/sys/external/bsd/ipf/netinet/ip_fil_netbsd.c	Fri Aug 10 06:46:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_fil_netbsd.c,v 1.29 2018/07/11 05:25:46 maxv Exp $	*/
+/*	$NetBSD: ip_fil_netbsd.c,v 1.30 2018/08/10 06:46:08 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.29 2018/07/11 05:25:46 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_fil_netbsd.c,v 1.30 2018/08/10 06:46:08 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";
@@ -257,7 +257,7 @@ ipf_check_wrapper6(void *arg, struct mbu
 	if (dir == PFIL_OUT) {
 		if ((*mp)->m_pkthdr.csum_flags & (M_CSUM_TCPv6|M_CSUM_UDPv6)) {
 #   if (__NetBSD_Version__ > 399000600)
-			in6_delayed_cksum(*mp);
+			in6_undefer_cksum_tcpudp(*mp);
 #   endif
 			(*mp)->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv6|
 							M_CSUM_UDPv6);

Index: src/sys/net/if_loop.c
diff -u src/sys/net/if_loop.c:1.104 src/sys/net/if_loop.c:1.105
--- src/sys/net/if_loop.c:1.104	Wed Jul 11 05:25:45 2018
+++ src/sys/net/if_loop.c	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_loop.c,v 1.104 2018/07/11 05:25:45 maxv Exp $	*/
+/*	$NetBSD: if_loop.c,v 1.105 2018/08/10 06:46:09 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.104 2018/07/11 05:25:45 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.105 2018/08/10 06:46:09 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -332,7 +332,7 @@ looutput(struct ifnet *ifp, struct mbuf 
 		KASSERT((csum_flags & ~M_CSUM_UDPv6) == 0);
 		if (csum_flags != 0 &&
 		    IN6_LOOPBACK_NEED_CHECKSUM(csum_flags)) {
-			ip6_undefer_csum(m, 0, csum_flags);
+			in6_undefer_cksum(m, 0, csum_flags);
 		}
 		m->m_pkthdr.csum_flags = 0;
 		m->m_flags |= M_LOOP;

Index: src/sys/net/npf/npf_mbuf.c
diff -u src/sys/net/npf/npf_mbuf.c:1.19 src/sys/net/npf/npf_mbuf.c:1.20
--- src/sys/net/npf/npf_mbuf.c:1.19	Wed Jul 11 05:25:45 2018
+++ src/sys/net/npf/npf_mbuf.c	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: npf_mbuf.c,v 1.19 2018/07/11 05:25:45 maxv Exp $	*/
+/*	$NetBSD: npf_mbuf.c,v 1.20 2018/08/10 06:46:09 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2009-2012 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 
 #ifdef _KERNEL
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_mbuf.c,v 1.19 2018/07/11 05:25:45 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_mbuf.c,v 1.20 2018/08/10 06:46:09 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/mbuf.h>
@@ -47,6 +47,13 @@ __KERNEL_RCSID(0, "$NetBSD: npf_mbuf.c,v
 
 #include "npf_impl.h"
 
+#ifdef _KERNEL
+#ifdef INET6
+#include <netinet6/in6.h>
+#include <netinet6/in6_offload.h>
+#endif
+#endif
+
 #if defined(_NPF_STANDALONE)
 #define	m_length(m)		(nbuf)->nb_mops->getchainlen(m)
 #define	m_buflen(m)		(nbuf)->nb_mops->getlen(m)
@@ -279,7 +286,7 @@ nbuf_cksum_barrier(nbuf_t *nbuf, int di)
 	}
 #ifdef INET6
 	if (m->m_pkthdr.csum_flags & (M_CSUM_TCPv6 | M_CSUM_UDPv6)) {
-		in6_delayed_cksum(m);
+		in6_undefer_cksum_tcpudp(m);
 		m->m_pkthdr.csum_flags &= ~(M_CSUM_TCPv6 | M_CSUM_UDPv6);
 		return true;
 	}

Index: src/sys/netinet6/in6.h
diff -u src/sys/netinet6/in6.h:1.91 src/sys/netinet6/in6.h:1.92
--- src/sys/netinet6/in6.h:1.91	Thu Apr 19 21:22:02 2018
+++ src/sys/netinet6/in6.h	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6.h,v 1.91 2018/04/19 21:22:02 christos Exp $	*/
+/*	$NetBSD: in6.h,v 1.92 2018/08/10 06:46:09 maxv Exp $	*/
 /*	$KAME: in6.h,v 1.83 2001/03/29 02:55:07 jinmei Exp $	*/
 
 /*
@@ -698,7 +698,6 @@ int sockaddr_in6_cmp(const struct sockad
 struct sockaddr *sockaddr_in6_externalize(struct sockaddr *, socklen_t,
     const struct sockaddr *);
 int	in6_cksum(struct mbuf *, u_int8_t, u_int32_t, u_int32_t);
-void	in6_delayed_cksum(struct mbuf *);
 int	in6_localaddr(const struct in6_addr *);
 int	in6_addrscope(const struct in6_addr *);
 struct	in6_ifaddr *in6_ifawithifp(struct ifnet *, struct in6_addr *);

Index: src/sys/netinet6/in6_offload.c
diff -u src/sys/netinet6/in6_offload.c:1.8 src/sys/netinet6/in6_offload.c:1.9
--- src/sys/netinet6/in6_offload.c:1.8	Fri Jun  1 08:56:00 2018
+++ src/sys/netinet6/in6_offload.c	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6_offload.c,v 1.8 2018/06/01 08:56:00 maxv Exp $	*/
+/*	$NetBSD: in6_offload.c,v 1.9 2018/08/10 06:46:09 maxv Exp $	*/
 
 /*-
  * Copyright (c)2006 YAMAMOTO Takashi,
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_offload.c,v 1.8 2018/06/01 08:56:00 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_offload.c,v 1.9 2018/08/10 06:46:09 maxv Exp $");
 
 #include <sys/param.h>
 #include <sys/mbuf.h>
@@ -193,8 +193,12 @@ quit:
 	return error;
 }
 
+/*
+ * Compute now in software the IP and TCP/UDP checksums. Cancel the
+ * hardware offloading.
+ */
 void
-ip6_undefer_csum(struct mbuf *m, size_t hdrlen, int csum_flags)
+in6_undefer_cksum(struct mbuf *m, size_t hdrlen, int csum_flags)
 {
 	const size_t ip6_plen_offset =
 	    hdrlen + offsetof(struct ip6_hdr, ip6_plen);
@@ -231,3 +235,31 @@ ip6_undefer_csum(struct mbuf *m, size_t 
 
 	m->m_pkthdr.csum_flags ^= csum_flags;
 }
+
+/*
+ * Compute now in software the TCP/UDP checksum. Cancel the hardware
+ * offloading.
+ */
+void
+in6_undefer_cksum_tcpudp(struct mbuf *m)
+{
+	uint16_t csum, offset;
+
+	KASSERT((m->m_pkthdr.csum_flags & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0);
+	KASSERT((~m->m_pkthdr.csum_flags & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0);
+	KASSERT((m->m_pkthdr.csum_flags
+	    & (M_CSUM_UDPv4|M_CSUM_TCPv4|M_CSUM_TSOv4)) == 0);
+
+	offset = M_CSUM_DATA_IPv6_IPHL(m->m_pkthdr.csum_data);
+	csum = in6_cksum(m, 0, offset, m->m_pkthdr.len - offset);
+	if (csum == 0 && (m->m_pkthdr.csum_flags & M_CSUM_UDPv6) != 0) {
+		csum = 0xffff;
+	}
+
+	offset += M_CSUM_DATA_IPv6_OFFSET(m->m_pkthdr.csum_data);
+	if ((offset + sizeof(csum)) > m->m_len) {
+		m_copyback(m, offset, sizeof(csum), &csum);
+	} else {
+		*(uint16_t *)(mtod(m, char *) + offset) = csum;
+	}
+}

Index: src/sys/netinet6/in6_offload.h
diff -u src/sys/netinet6/in6_offload.h:1.7 src/sys/netinet6/in6_offload.h:1.8
--- src/sys/netinet6/in6_offload.h:1.7	Mon Apr 25 22:20:59 2011
+++ src/sys/netinet6/in6_offload.h	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6_offload.h,v 1.7 2011/04/25 22:20:59 yamt Exp $	*/
+/*	$NetBSD: in6_offload.h,v 1.8 2018/08/10 06:46:09 maxv Exp $	*/
 
 /*-
  * Copyright (c)2005, 2006 YAMAMOTO Takashi,
@@ -36,7 +36,8 @@
 int tcp6_segment(struct mbuf *, int (*)(void *, struct mbuf *), void *);
 int ip6_tso_output(struct ifnet *, struct ifnet *, struct mbuf *,
     const struct sockaddr_in6 *, struct rtentry *);
-void ip6_undefer_csum(struct mbuf *, size_t, int);
+void in6_undefer_cksum(struct mbuf *, size_t, int);
+void in6_undefer_cksum_tcpudp(struct mbuf *);
 
 extern int tcp_do_loopback_cksum; /* do TCP checksum on loopback? */
 extern int udp_do_loopback_cksum; /* do UDP checksum on loopback? */

Index: src/sys/netinet6/ip6_output.c
diff -u src/sys/netinet6/ip6_output.c:1.211 src/sys/netinet6/ip6_output.c:1.212
--- src/sys/netinet6/ip6_output.c:1.211	Fri Jun  1 08:56:00 2018
+++ src/sys/netinet6/ip6_output.c	Fri Aug 10 06:46:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip6_output.c,v 1.211 2018/06/01 08:56:00 maxv Exp $	*/
+/*	$NetBSD: ip6_output.c,v 1.212 2018/08/10 06:46:09 maxv Exp $	*/
 /*	$KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.211 2018/06/01 08:56:00 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.212 2018/08/10 06:46:09 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -302,7 +302,7 @@ ip6_output(
 
 	if (needipsec &&
 	    (m->m_pkthdr.csum_flags & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0) {
-		in6_delayed_cksum(m);
+		in6_undefer_cksum_tcpudp(m);
 		m->m_pkthdr.csum_flags &= ~(M_CSUM_UDPv6|M_CSUM_TCPv6);
 	}
 
@@ -836,7 +836,7 @@ ip6_output(
 		if ((sw_csum & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0) {
 			if (IN6_NEED_CHECKSUM(ifp,
 			    sw_csum & (M_CSUM_UDPv6|M_CSUM_TCPv6))) {
-				in6_delayed_cksum(m);
+				in6_undefer_cksum_tcpudp(m);
 			}
 			m->m_pkthdr.csum_flags &= ~(M_CSUM_UDPv6|M_CSUM_TCPv6);
 		}
@@ -914,7 +914,7 @@ ip6_output(
 			if (IN6_NEED_CHECKSUM(ifp,
 			    m->m_pkthdr.csum_flags &
 			    (M_CSUM_UDPv6|M_CSUM_TCPv6))) {
-				in6_delayed_cksum(m);
+				in6_undefer_cksum_tcpudp(m);
 			}
 			m->m_pkthdr.csum_flags &= ~(M_CSUM_UDPv6|M_CSUM_TCPv6);
 		}
@@ -1072,33 +1072,6 @@ ip6_copyexthdr(struct mbuf **mp, void *h
 }
 
 /*
- * Process a delayed payload checksum calculation.
- */
-void
-in6_delayed_cksum(struct mbuf *m)
-{
-	uint16_t csum, offset;
-
-	KASSERT((m->m_pkthdr.csum_flags & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0);
-	KASSERT((~m->m_pkthdr.csum_flags & (M_CSUM_UDPv6|M_CSUM_TCPv6)) != 0);
-	KASSERT((m->m_pkthdr.csum_flags
-	    & (M_CSUM_UDPv4|M_CSUM_TCPv4|M_CSUM_TSOv4)) == 0);
-
-	offset = M_CSUM_DATA_IPv6_IPHL(m->m_pkthdr.csum_data);
-	csum = in6_cksum(m, 0, offset, m->m_pkthdr.len - offset);
-	if (csum == 0 && (m->m_pkthdr.csum_flags & M_CSUM_UDPv6) != 0) {
-		csum = 0xffff;
-	}
-
-	offset += M_CSUM_DATA_IPv6_OFFSET(m->m_pkthdr.csum_data);
-	if ((offset + sizeof(csum)) > m->m_len) {
-		m_copyback(m, offset, sizeof(csum), &csum);
-	} else {
-		*(uint16_t *)(mtod(m, char *) + offset) = csum;
-	}
-}
-
-/*
  * Insert jumbo payload option.
  */
 static int

Reply via email to