Date: Fri, 12 Mar 2010 12:08:32 +0900 From: Randall Stewart <rrs@lakerest.net> To: wooky@btconnect.com Cc: FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: sctp ipv6 csum issue Message-ID: <3F08B7D7-1056-4F7C-B023-BCEA75DBE970@lakerest.net> In-Reply-To: <F030DA98-F092-47B7-A083-C2536BB0068B@lakerest.net> References: <F030DA98-F092-47B7-A083-C2536BB0068B@lakerest.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail-8-145820530 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Opps: I was a little to quick, .. that one won't work.. but I think this one will (need to have the right magic header goo :-D) Try this please (this one will build and actually do something :-D) R --Apple-Mail-8-145820530 Content-Disposition: attachment; filename=patch.ip6_output.txt Content-Type: text/plain; x-unix-mode=0644; name="patch.ip6_output.txt" Content-Transfer-Encoding: 7bit Index: ip6_output.c =================================================================== --- ip6_output.c (revision 205059) +++ ip6_output.c (working copy) @@ -66,6 +66,7 @@ #include "opt_inet.h" #include "opt_inet6.h" #include "opt_ipsec.h" +#include "opt_sctp.h" #include <sys/param.h> #include <sys/kernel.h> @@ -102,6 +103,10 @@ #include <netipsec/key.h> #include <netinet6/ip6_ipsec.h> #endif /* IPSEC */ +#ifdef SCTP +#include <netinet/sctp.h> +#include <netinet/sctp_crc32.h> +#endif #include <netinet6/ip6protosw.h> #include <netinet6/scope6_var.h> @@ -208,6 +213,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 +837,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 +869,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)) --Apple-Mail-8-145820530 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit On Mar 12, 2010, at 11:47 AM, Randall Stewart wrote: > 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 > <patch.ip6_output.txt> > ------------------------------ > Randall Stewart > 803-317-4952 (cell) > 803-345-0391(direct) > > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org > " ------------------------------ Randall Stewart 803-317-4952 (cell) 803-345-0391(direct) --Apple-Mail-8-145820530--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F08B7D7-1056-4F7C-B023-BCEA75DBE970>