summaryrefslogtreecommitdiffstats
path: root/sys/netinet/udp_usrreq.c
diff options
context:
space:
mode:
authorangelos <angelos@openbsd.org>2001-06-23 06:03:11 +0000
committerangelos <angelos@openbsd.org>2001-06-23 06:03:11 +0000
commit67475e5f67023fbc2b5ae2ea424a4df3a86a688d (patch)
treeff5e9e28d5ac0460830323d85484295dafd950f2 /sys/netinet/udp_usrreq.c
parentok, tmac is now fixed (diff)
downloadwireguard-openbsd-67475e5f67023fbc2b5ae2ea424a4df3a86a688d.tar.xz
wireguard-openbsd-67475e5f67023fbc2b5ae2ea424a4df3a86a688d.zip
Keep stats on TCP/UDP hardware checksumming.
Diffstat (limited to 'sys/netinet/udp_usrreq.c')
-rw-r--r--sys/netinet/udp_usrreq.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 55ade377152..763494b2086 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udp_usrreq.c,v 1.66 2001/06/23 05:36:08 angelos Exp $ */
+/* $OpenBSD: udp_usrreq.c,v 1.67 2001/06/23 06:03:13 angelos Exp $ */
/* $NetBSD: udp_usrreq.c,v 1.28 1996/03/16 23:54:03 christos Exp $ */
/*
@@ -302,14 +302,22 @@ udp_input(m, va_alist)
sizeof ((struct ipovly *)ip)->ih_x1);
((struct ipovly *)ip)->ih_len = uh->uh_ulen;
- if (m->m_pkthdr.csum & M_UDP_CSUM_IN_BAD ||
- (uh->uh_sum = in_cksum(m, len +
- sizeof (struct ip))) != 0) {
+ if (m->m_pkthdr.csum & M_UDP_CSUM_IN_BAD) {
udpstat.udps_badsum++;
+ udpstat.udps_inhwcsum++;
m_freem(m);
return;
}
- }
+
+ if ((uh->uh_sum = in_cksum(m, len +
+ sizeof (struct ip))) != 0) {
+ udpstat.udps_badsum++;
+ m_freem(m);
+ return;
+ }
+ } else
+ udpstat.udps_inhwcsum++;
+
} else
udpstat.udps_nosum++;
@@ -943,6 +951,7 @@ udp_output(m, va_alist)
ifp = ro->ro_rt->rt_ifp;
if (ifp->if_capabilities & IFCAP_CSUM_UDPv4) {
m->m_pkthdr.csum |= M_UDPV4_CSUM_OUT;
+ udpstat.udps_outhwcsum++;
ui->ui_sum = in_cksum(m,
sizeof(struct udpiphdr));
goto skipudpcsum;