Author: tuexen
Date: Wed Mar 12 17:18:15 2014
New Revision: 263096
URL: http://svnweb.freebsd.org/changeset/base/263096

Log:
  Put the offset of the CRC32C in csum_data instead of 0.
  The virtio driver needs the offset to be stored in csum_data,
  like in the case for UDP and TCP.
  
  The virtio problem was reported by
  Niu Zhixiong <[email protected]>, who helped in debugging
  and testing the patch.
  
  MFC after: 3 days

Modified:
  head/sys/netinet/sctp_output.c

Modified: head/sys/netinet/sctp_output.c
==============================================================================
--- head/sys/netinet/sctp_output.c      Wed Mar 12 16:38:55 2014        
(r263095)
+++ head/sys/netinet/sctp_output.c      Wed Mar 12 17:18:15 2014        
(r263096)
@@ -4108,7 +4108,7 @@ sctp_lowlevel_chunk_output(struct sctp_i
                                SCTP_STAT_INCR(sctps_sendnocrc);
 #else
                                m->m_pkthdr.csum_flags = CSUM_SCTP;
-                               m->m_pkthdr.csum_data = 0;
+                               m->m_pkthdr.csum_data = offsetof(struct 
sctphdr, checksum);
                                SCTP_STAT_INCR(sctps_sendhwcrc);
 #endif
                        }
@@ -4457,7 +4457,7 @@ sctp_lowlevel_chunk_output(struct sctp_i
                                SCTP_STAT_INCR(sctps_sendnocrc);
 #else
                                m->m_pkthdr.csum_flags = CSUM_SCTP_IPV6;
-                               m->m_pkthdr.csum_data = 0;
+                               m->m_pkthdr.csum_data = offsetof(struct 
sctphdr, checksum);
                                SCTP_STAT_INCR(sctps_sendhwcrc);
 #endif
                        }
@@ -11007,7 +11007,7 @@ sctp_send_resp_msg(struct sockaddr *src,
                        SCTP_STAT_INCR(sctps_sendnocrc);
 #else
                        mout->m_pkthdr.csum_flags = CSUM_SCTP;
-                       mout->m_pkthdr.csum_data = 0;
+                       mout->m_pkthdr.csum_data = offsetof(struct sctphdr, 
checksum);
                        SCTP_STAT_INCR(sctps_sendhwcrc);
 #endif
                }
@@ -11037,7 +11037,7 @@ sctp_send_resp_msg(struct sockaddr *src,
                        SCTP_STAT_INCR(sctps_sendnocrc);
 #else
                        mout->m_pkthdr.csum_flags = CSUM_SCTP_IPV6;
-                       mout->m_pkthdr.csum_data = 0;
+                       mout->m_pkthdr.csum_data = offsetof(struct sctphdr, 
checksum);
                        SCTP_STAT_INCR(sctps_sendhwcrc);
 #endif
                }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to