ipv6: Pass proto to csum_ipv6_magic as __u8 instead of unsigned short
This patch updates csum_ipv6_magic so that it correctly recognizes that protocol is a unsigned 8 bit value. This will allow us to better understand what limitations may or may not be present in how we handle the data. For example there are a number of places that call htonl on the protocol value. This is likely not necessary and can be replaced with a multiplication by ntohl(1) which will be converted to a shift by the compiler. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
01cfbad79a
Коммит
1e94082963
|
@ -67,6 +67,5 @@ static inline __sum16 csum_fold(__wsum csum)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum);
|
||||
__u32 len, __u8 proto, __wsum sum);
|
||||
#endif
|
||||
|
|
|
@ -144,8 +144,8 @@ __csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __
|
|||
__be32 proto, __wsum sum);
|
||||
|
||||
static inline __sum16
|
||||
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len,
|
||||
unsigned short proto, __wsum sum)
|
||||
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
return csum_fold(__csum_ipv6_magic(saddr, daddr, htonl(len),
|
||||
htonl(proto), sum));
|
||||
|
|
|
@ -135,7 +135,7 @@ extern __sum16 ip_compute_csum(const void *buff, int len);
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static inline __sum16
|
||||
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto, __wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
unsigned long tmp, tmp2;
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ static inline __sum16 csum_fold(__wsum csum)
|
|||
#define _HAVE_ARCH_IPV6_CSUM 1
|
||||
struct in6_addr;
|
||||
extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr, __u32 len, unsigned short proto,
|
||||
__wsum csum);
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, __u8 proto, __wsum csum);
|
||||
|
||||
#endif /* _ASM_IA64_CHECKSUM_H */
|
||||
|
|
|
@ -117,7 +117,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static __inline__ __sum16
|
||||
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto, __wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
register unsigned long tmp;
|
||||
__asm__("addl %2@,%0\n\t"
|
||||
|
|
|
@ -215,7 +215,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__u32 len, __u8 proto,
|
||||
__wsum sum)
|
||||
{
|
||||
__wsum tmp;
|
||||
|
|
|
@ -122,7 +122,7 @@ static inline __sum16 ip_compute_csum(const void *buf, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__u32 len, __u8 proto,
|
||||
__wsum sum)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
|
|
|
@ -179,9 +179,8 @@ static inline unsigned short ip_compute_csum(const void *buff, int len)
|
|||
|
||||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
".set\tvolatile\t\t\t# csum_ipv6_magic\n\t"
|
||||
|
|
|
@ -159,8 +159,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
unsigned int __dummy;
|
||||
__asm__("clrt\n\t"
|
||||
|
|
|
@ -199,8 +199,7 @@ static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
|
|||
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
"addcc %3, %4, %%g4\n\t"
|
||||
|
|
|
@ -125,8 +125,7 @@ static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
|
|||
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
" addcc %3, %4, %%g7\n"
|
||||
|
|
|
@ -149,8 +149,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
asm("addl 0(%1), %0 ;\n"
|
||||
"adcl 4(%1), %0 ;\n"
|
||||
|
|
|
@ -177,7 +177,7 @@ struct in6_addr;
|
|||
#define _HAVE_ARCH_IPV6_CSUM 1
|
||||
extern __sum16
|
||||
csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto, __wsum sum);
|
||||
__u32 len, __u8 proto, __wsum sum);
|
||||
|
||||
static inline unsigned add32_with_carry(unsigned a, unsigned b)
|
||||
{
|
||||
|
|
|
@ -135,7 +135,7 @@ EXPORT_SYMBOL(csum_partial_copy_nocheck);
|
|||
|
||||
__sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto, __wsum sum)
|
||||
__u32 len, __u8 proto, __wsum sum)
|
||||
{
|
||||
__u64 rest, sum64;
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ static inline __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__u32 len, __u8 proto,
|
||||
__wsum sum)
|
||||
{
|
||||
__asm__(
|
||||
|
|
|
@ -175,7 +175,7 @@ static __inline__ __sum16 ip_compute_csum(const void *buff, int len)
|
|||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__u32 len, __u8 proto,
|
||||
__wsum sum)
|
||||
{
|
||||
unsigned int __dummy;
|
||||
|
|
|
@ -37,8 +37,7 @@
|
|||
#ifndef _HAVE_ARCH_IPV6_CSUM
|
||||
__sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum csum);
|
||||
__u32 len, __u8 proto, __wsum csum);
|
||||
#endif
|
||||
|
||||
static inline __wsum ip6_compute_pseudo(struct sk_buff *skb, int proto)
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
#ifndef _HAVE_ARCH_IPV6_CSUM
|
||||
__sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum csum)
|
||||
__u32 len, __u8 proto, __wsum csum)
|
||||
{
|
||||
|
||||
int carry;
|
||||
|
|
Загрузка…
Ссылка в новой задаче