sctp ipv6 csum issue

From: Randall Stewart <rrs_at_lakerest.net>
Date: Fri, 12 Mar 2010 11:47:39 +0900
Nigel:

Here is a patch for your issue I think.

Its off of a head machine but I think it should apply. If not
let me know.

See if this does not fix the issue.

Thanks

R

Index: ip6_output.c
===================================================================
--- ip6_output.c	(revision 205059)
+++ ip6_output.c	(working copy)
_at__at_ -208,6 +208,9 _at__at_
 	struct route_in6 *ro_pmtu = NULL;
 	int hdrsplit = 0;
 	int needipsec = 0;
+#ifdef SCTP
+	int sw_csum;
+#endif
 #ifdef IPSEC
 	struct ipsec_output_state state;
 	struct ip6_rthdr *rh = NULL;
_at__at_ -829,6 +832,10 _at__at_
 			}
 			m->m_pkthdr.csum_flags |=
 			    CSUM_IP_CHECKED | CSUM_IP_VALID;
+#ifdef SCTP
+			if (m->m_pkthdr.csum_flags & CSUM_SCTP)
+				m->m_pkthdr.csum_flags |= CSUM_SCTP_VALID;
+#endif
 			error = netisr_queue(NETISR_IPV6, m);
 			goto done;
 		} else
_at__at_ -857,6 +864,13 _at__at_
 	 * 4: if dontfrag == 1 && alwaysfrag == 1
 	 *	error, as we cannot handle this conflicting request
 	 */
+#ifdef SCTP
+	sw_csum = m->m_pkthdr.csum_flags & ~ifp->if_hwassist;
+	if (sw_csum & CSUM_SCTP) {
+		sctp_delayed_cksum(m);
+		sw_csum &= ~CSUM_SCTP;
+	}
+#endif
 	tlen = m->m_pkthdr.len;
 
 	if (opt && (opt->ip6po_flags & IP6PO_DONTFRAG))


------------------------------
Randall Stewart
803-317-4952 (cell)
803-345-0391(direct)
Received on Fri Mar 12 2010 - 01:47:57 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:01 UTC