--- zzzz-none-000/linux-4.4.271/include/net/ndisc.h 2021-06-03 06:22:09.000000000 +0000 +++ hawkeye-5590-750/linux-4.4.271/include/net/ndisc.h 2023-04-19 10:22:30.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)