sctp ipv6 csum issue
Randall Stewart
rrs at lakerest.net
Fri Mar 12 02:47:57 UTC 2010
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
-------------- next part --------------
Index: ip6_output.c
===================================================================
--- ip6_output.c (revision 205059)
+++ ip6_output.c (working copy)
@@ -208,6 +208,9 @@
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;
@@ -829,6 +832,10 @@
}
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
@@ -857,6 +864,13 @@
* 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))
-------------- next part --------------
------------------------------
Randall Stewart
803-317-4952 (cell)
803-345-0391(direct)
More information about the freebsd-current
mailing list