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 <kaiaixi@gmail.com>, who helped in debugging and testing the patch. MFC after: 3 days
This commit is contained in:
parent
7253a5ec63
commit
3d31c75401
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=263096
@ -4108,7 +4108,7 @@ sctp_lowlevel_chunk_output(struct sctp_inpcb *inp,
|
||||
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_inpcb *inp,
|
||||
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, struct sockaddr *dst,
|
||||
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, struct sockaddr *dst,
|
||||
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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user