Author: bz
Date: Tue Mar 27 15:14:29 2012
New Revision: 233554
URL: http://svn.freebsd.org/changeset/base/233554

Log:
  Export the udp_cksum sysctl for upcoming SCTP work.  Rather than always,
  SCTP will only do IPv4 UDP checksum calculation as defined by the host
  policy.  When tunneling SCTP always calculates the inner checksum already
  so not doing the outer UDP can save cycles.
  
  While here virtualize the variable.
  
  Requested by: tuexen
  MFC after:    2 weeks

Modified:
  head/sys/netinet/udp_usrreq.c
  head/sys/netinet/udp_var.h

Modified: head/sys/netinet/udp_usrreq.c
==============================================================================
--- head/sys/netinet/udp_usrreq.c       Tue Mar 27 15:13:12 2012        
(r233553)
+++ head/sys/netinet/udp_usrreq.c       Tue Mar 27 15:14:29 2012        
(r233554)
@@ -105,9 +105,9 @@ __FBSDID("$FreeBSD$");
  * packets that would otherwise be discarded due to bad checksums, and may
  * cause problems (especially for NFS data blocks).
  */
-static int     udp_cksum = 1;
-SYSCTL_INT(_net_inet_udp, UDPCTL_CHECKSUM, checksum, CTLFLAG_RW, &udp_cksum,
-    0, "compute udp checksum");
+VNET_DEFINE(int, udp_cksum) = 1;
+SYSCTL_VNET_INT(_net_inet_udp, UDPCTL_CHECKSUM, checksum, CTLFLAG_RW,
+    &VNET_NAME(udp_cksum), 0, "compute udp checksum");
 
 int    udp_log_in_vain = 0;
 SYSCTL_INT(_net_inet_udp, OID_AUTO, log_in_vain, CTLFLAG_RW,
@@ -1212,7 +1212,7 @@ udp_output(struct inpcb *inp, struct mbu
        /*
         * Set up checksum and output datagram.
         */
-       if (udp_cksum) {
+       if (V_udp_cksum) {
                if (inp->inp_flags & INP_ONESBCAST)
                        faddr.s_addr = INADDR_BROADCAST;
                ui->ui_sum = in_pseudo(ui->ui_src.s_addr, faddr.s_addr,

Modified: head/sys/netinet/udp_var.h
==============================================================================
--- head/sys/netinet/udp_var.h  Tue Mar 27 15:13:12 2012        (r233553)
+++ head/sys/netinet/udp_var.h  Tue Mar 27 15:14:29 2012        (r233554)
@@ -139,8 +139,10 @@ VNET_DECLARE(struct inpcbinfo, udbinfo);
 
 extern u_long                  udp_sendspace;
 extern u_long                  udp_recvspace;
+VNET_DECLARE(int, udp_cksum);
 VNET_DECLARE(struct udpstat, udpstat);
 VNET_DECLARE(int, udp_blackhole);
+#define        V_udp_cksum             VNET(udp_cksum)
 #define        V_udpstat               VNET(udpstat)
 #define        V_udp_blackhole         VNET(udp_blackhole)
 extern int                     udp_log_in_vain;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to