Commit efe96779 authored by Javier Rodriguez's avatar Javier Rodriguez Committed by Greg Kroah-Hartman

staging: gdm724x: modify icmp6_checksum for returning a correct data type.

The icmp6_checksum was returning an invalid data type as the expected type
is __sum16. For returning such data type, icmp6_checksum, now, is using
the kernel functions for computing the checksum.

Here, the sparse message:

drivers/staging/gdm724x/gdm_lte.c:311:39: warning: incorrect type in assignment (different base types)
drivers/staging/gdm724x/gdm_lte.c:311:39:    expected restricted __sum16 [addressable] [assigned] [usertype] icmp6_cksum
drivers/staging/gdm724x/gdm_lte.c:311:39:    got int
Signed-off-by: default avatarJavier Rodriguez <jrodbar@yahoo.es>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 607b6cd3
...@@ -178,10 +178,10 @@ static int gdm_lte_emulate_arp(struct sk_buff *skb_in, u32 nic_type) ...@@ -178,10 +178,10 @@ static int gdm_lte_emulate_arp(struct sk_buff *skb_in, u32 nic_type)
return 0; return 0;
} }
static int icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len) static __sum16 icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len)
{ {
unsigned short *w = ptr; unsigned short *w = ptr;
int sum = 0; __wsum sum = 0;
int i; int i;
union { union {
...@@ -203,19 +203,16 @@ static int icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len) ...@@ -203,19 +203,16 @@ static int icmp6_checksum(struct ipv6hdr *ipv6, u16 *ptr, int len)
w = (u16 *)&pseudo_header; w = (u16 *)&pseudo_header;
for (i = 0; i < ARRAY_SIZE(pseudo_header.pa); i++) for (i = 0; i < ARRAY_SIZE(pseudo_header.pa); i++)
sum += pseudo_header.pa[i]; sum = csum_add(sum, csum_unfold(
(__force __sum16)pseudo_header.pa[i]));
w = ptr; w = ptr;
while (len > 1) { while (len > 1) {
sum += *w++; sum = csum_add(sum, csum_unfold((__force __sum16)*w++));
len -= 2; len -= 2;
} }
sum = (sum >> 16) + (sum & 0xFFFF); return csum_fold(sum);
sum += (sum >> 16);
sum = ~sum & 0xffff;
return sum;
} }
static int gdm_lte_emulate_ndp(struct sk_buff *skb_in, u32 nic_type) static int gdm_lte_emulate_ndp(struct sk_buff *skb_in, u32 nic_type)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment