aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/output.c
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2009-02-13 03:33:42 -0500
committerDavid S. Miller <davem@davemloft.net>2009-02-16 03:03:10 -0500
commit4458f04c02a46c679a90ef71f866a415c192deb4 (patch)
treeb08aa476ab4c525ab3cb33cea6114cb262cb2941 /net/sctp/output.c
parent06e868066e3b5828383eb40ff4d1c0029100b0b5 (diff)
sctp: Clean up sctp checksumming code
The sctp crc32c checksum is always generated in little endian. So, we clean up the code to treat it as little endian and remove all the __force casts. Suggested by Herbert Xu. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/output.c')
-rw-r--r--net/sctp/output.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/net/sctp/output.c b/net/sctp/output.c
index 2d65b7a7330b..07d58903a746 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -367,7 +367,6 @@ int sctp_packet_transmit(struct sctp_packet *packet)
367 struct sctp_transport *tp = packet->transport; 367 struct sctp_transport *tp = packet->transport;
368 struct sctp_association *asoc = tp->asoc; 368 struct sctp_association *asoc = tp->asoc;
369 struct sctphdr *sh; 369 struct sctphdr *sh;
370 __be32 crc32 = cpu_to_be32(0);
371 struct sk_buff *nskb; 370 struct sk_buff *nskb;
372 struct sctp_chunk *chunk, *tmp; 371 struct sctp_chunk *chunk, *tmp;
373 struct sock *sk; 372 struct sock *sk;
@@ -532,16 +531,15 @@ int sctp_packet_transmit(struct sctp_packet *packet)
532 * by CRC32-C as described in <draft-ietf-tsvwg-sctpcsum-02.txt>. 531 * by CRC32-C as described in <draft-ietf-tsvwg-sctpcsum-02.txt>.
533 */ 532 */
534 if (!sctp_checksum_disable && !(dst->dev->features & NETIF_F_NO_CSUM)) { 533 if (!sctp_checksum_disable && !(dst->dev->features & NETIF_F_NO_CSUM)) {
535 crc32 = sctp_start_cksum((__u8 *)sh, cksum_buf_len); 534 __u32 crc32 = sctp_start_cksum((__u8 *)sh, cksum_buf_len);
536 crc32 = sctp_end_cksum(crc32); 535
536 /* 3) Put the resultant value into the checksum field in the
537 * common header, and leave the rest of the bits unchanged.
538 */
539 sh->checksum = sctp_end_cksum(crc32);
537 } else 540 } else
538 nskb->ip_summed = CHECKSUM_UNNECESSARY; 541 nskb->ip_summed = CHECKSUM_UNNECESSARY;
539 542
540 /* 3) Put the resultant value into the checksum field in the
541 * common header, and leave the rest of the bits unchanged.
542 */
543 sh->checksum = crc32;
544
545 /* IP layer ECN support 543 /* IP layer ECN support
546 * From RFC 2481 544 * From RFC 2481
547 * "The ECN-Capable Transport (ECT) bit would be set by the 545 * "The ECN-Capable Transport (ECT) bit would be set by the