ipv6: Optimize ipv6_change_dsfield().
Subsystems (2)
PATCH 1/1 ipv6: Optimize ipv6_change_dsfield().
Do not convert endian back and forth.
If the caller uses contant "mask" argument (and most callers do), we can omit runtime endian conversion here.
Signed-off-by YOSHIFUJI Hideaki <[email protected]>
--- include/net/dsfield.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
include/net/dsfield.h +2 -4
@@ -43,11 +43,9 @@ static inline void ipv4_change_dsfield(struct iphdr *iph,__u8 mask,static inline void ipv6_change_dsfield (struct ipv6hdr *ipv6h,__u8 mask,__u8 value) { -__u16 tmp; +__be16 *p = (__force __be16 *)ipv6h; - tmp =ntohs (*(__be16 *) ipv6h); - tmp = (tmp & ((mask <<4 ) |0xf00f )) | (value <<4 ); - *(__be16 *) ipv6h =htons (tmp); + *p = (*p &htons ((((u16 )mask <<4 ) |0xf00f ))) |htons ((u16 )value <<4 ); }
Signature · 1 line
1.7.9.5