aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/dsfield.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/dsfield.h')
-rw-r--r--include/net/dsfield.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/include/net/dsfield.h b/include/net/dsfield.h
index 8a8d4e06900d..e1ad903a8d6a 100644
--- a/include/net/dsfield.h
+++ b/include/net/dsfield.h
@@ -43,11 +43,9 @@ static inline void ipv4_change_dsfield(struct iphdr *iph,__u8 mask,
43static inline void ipv6_change_dsfield(struct ipv6hdr *ipv6h,__u8 mask, 43static inline void ipv6_change_dsfield(struct ipv6hdr *ipv6h,__u8 mask,
44 __u8 value) 44 __u8 value)
45{ 45{
46 __u16 tmp; 46 __be16 *p = (__force __be16 *)ipv6h;
47 47
48 tmp = ntohs(*(__be16 *) ipv6h); 48 *p = (*p & htons((((u16)mask << 4) | 0xf00f))) | htons((u16)value << 4);
49 tmp = (tmp & ((mask << 4) | 0xf00f)) | (value << 4);
50 *(__be16 *) ipv6h = htons(tmp);
51} 49}
52 50
53 51