diff --git a/sys/include/net/ipv6/hdr.h b/sys/include/net/ipv6/hdr.h
index a4f1aff1e76679c317304c6323de21b4f66230be..9351a3abe370e1ba31d34dbb3580ee56318c733a 100644
--- a/sys/include/net/ipv6/hdr.h
+++ b/sys/include/net/ipv6/hdr.h
@@ -288,7 +288,7 @@ static inline uint32_t ipv6_hdr_get_fl(const ipv6_hdr_t *hdr)
 static inline uint16_t ipv6_hdr_inet_csum(uint16_t sum, ipv6_hdr_t *hdr,
                                           uint8_t prot_num, uint16_t len)
 {
-    if ((sum + len + prot_num) > 0xffff) {
+    if (((uint32_t)sum + len + prot_num) > 0xffff) {
         /* increment by one for overflow to keep it as 1's complement sum */
         sum++;
     }