Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Jan 2016 18:59:10 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r294189 - stable/10/sys/netinet
Message-ID:  <201601161859.u0GIxA60073355@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Sat Jan 16 18:59:10 2016
New Revision: 294189
URL: https://svnweb.freebsd.org/changeset/base/294189

Log:
  MFC r291364:
  When receiving an SCTP/UDP packet and the interface performed
  the UDP checksum computation and signals that it was OK,
  clear this bit when passing the packet to SCTP. Since the
  bits indicating a valid UDP checksum and a valid SCTP
  checksum are the same, the SCTP stack would assume
  that also an SCTP checksum check has been performed.

Modified:
  stable/10/sys/netinet/sctputil.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/netinet/sctputil.c
==============================================================================
--- stable/10/sys/netinet/sctputil.c	Sat Jan 16 18:39:54 2016	(r294188)
+++ stable/10/sys/netinet/sctputil.c	Sat Jan 16 18:59:10 2016	(r294189)
@@ -6957,6 +6957,18 @@ sctp_recv_udp_tunneled_packet(struct mbu
 	for (last = m; last->m_next; last = last->m_next);
 	last->m_next = sp;
 	m->m_pkthdr.len += sp->m_pkthdr.len;
+	/*
+	 * The CSUM_DATA_VALID flags indicates that the HW checked the UDP
+	 * checksum and it was valid. Since CSUM_DATA_VALID ==
+	 * CSUM_SCTP_VALID this would imply that the HW also verified the
+	 * SCTP checksum. Therefore, clear the bit.
+	 */
+	SCTPDBG(SCTP_DEBUG_CRCOFFLOAD,
+	    "sctp_recv_udp_tunneled_packet(): Packet of length %d received on %s with csum_flags 0x%b.\n",
+	    m->m_pkthdr.len,
+	    if_name(m->m_pkthdr.rcvif),
+	    (int)m->m_pkthdr.csum_flags, CSUM_BITS);
+	m->m_pkthdr.csum_flags &= ~CSUM_DATA_VALID;
 	iph = mtod(m, struct ip *);
 	switch (iph->ip_v) {
 #ifdef INET



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601161859.u0GIxA60073355>