diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c index 99f69f4e99ead0c684f587a8178e1d33c510f5c2..e14a6fd030e5a9134bf43fcefa34e2053938e9fa 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.c @@ -519,7 +519,8 @@ static inline uint32_t _exp_backoff_retrans_timer(uint8_t ns_sent, /* backoff according to https://tools.ietf.org/html/rfc7048 with * BACKOFF_MULTIPLE == 2 */ - tmp = ((1 << ns_sent) * retrans_timer * tmp) / US_PER_MS; + tmp = (uint32_t)(((uint64_t)(((uint32_t) 1) << ns_sent) * retrans_timer * + tmp) / US_PER_MS); /* random factors were statically multiplied with 1000 ^ */ if (tmp > NDP_MAX_RETRANS_TIMER_MS) { tmp = NDP_MAX_RETRANS_TIMER_MS;