--- zzzz-none-000/linux-4.4.60/include/net/ndisc.h 2017-04-08 07:53:53.000000000 +0000 +++ scorpion-7490-727/linux-4.4.60/include/net/ndisc.h 2021-02-04 17:41:59.000000000 +0000 @@ -76,7 +76,7 @@ struct icmp6hdr icmph; __be32 reachable_time; __be32 retrans_timer; -}; +} __attribute__((packed, aligned(2))); struct rd_msg { struct icmp6hdr icmph; @@ -148,10 +148,10 @@ { const u32 *p32 = pkey; - return (((p32[0] ^ hash32_ptr(dev)) * hash_rnd[0]) + - (p32[1] * hash_rnd[1]) + - (p32[2] * hash_rnd[2]) + - (p32[3] * hash_rnd[3])); + return (((net_hdr_word(&p32[0]) ^ hash32_ptr(dev)) * hash_rnd[0]) + + (net_hdr_word(&p32[1]) * hash_rnd[1]) + + (net_hdr_word(&p32[2]) * hash_rnd[2]) + + (net_hdr_word(&p32[3]) * hash_rnd[3])); } static inline struct neighbour *__ipv6_neigh_lookup_noref(struct net_device *dev, const void *pkey)