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>
This commit is contained in:
Vlad Yasevich 2009-02-13 08:33:42 +00:00 committed by David S. Miller
parent 06e868066e
commit 4458f04c02
4 changed files with 20 additions and 21 deletions

View file

@ -83,14 +83,15 @@ static inline int sctp_rcv_checksum(struct sk_buff *skb)
{
struct sk_buff *list = skb_shinfo(skb)->frag_list;
struct sctphdr *sh = sctp_hdr(skb);
__be32 cmp = sh->checksum;
__be32 val = sctp_start_cksum((__u8 *)sh, skb_headlen(skb));
__le32 cmp = sh->checksum;
__le32 val;
__u32 tmp = sctp_start_cksum((__u8 *)sh, skb_headlen(skb));
for (; list; list = list->next)
val = sctp_update_cksum((__u8 *)list->data, skb_headlen(list),
val);
tmp = sctp_update_cksum((__u8 *)list->data, skb_headlen(list),
tmp);
val = sctp_end_cksum(val);
val = sctp_end_cksum(tmp);
if (val != cmp) {
/* CRC failure, dump it. */