From 2e56f2d7806938bd0b2e95ede625b26613020412 Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Mon, 30 Nov 2015 09:27:31 +0800 Subject: [PATCH] igmp: Optimize the implementation of igmp_start_timer When LWIP_RAND is defined, calling LWIP_RAND() is not necessary if max_time <= 2 because group->timer will be set to 1 anyway. Signed-off-by: Axel Lin --- src/core/ipv4/igmp.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/core/ipv4/igmp.c b/src/core/ipv4/igmp.c index db531af3..4e8d25e2 100644 --- a/src/core/ipv4/igmp.c +++ b/src/core/ipv4/igmp.c @@ -719,23 +719,16 @@ igmp_timeout(struct igmp_group *group) static void igmp_start_timer(struct igmp_group *group, u8_t max_time) { - /* ensure the input value is > 0 */ #ifdef LWIP_RAND - if (max_time == 0) { - max_time = 1; - } - /* ensure the random value is > 0 */ - group->timer = (LWIP_RAND() % max_time); - if (group->timer == 0) { - group->timer = 1; - } + group->timer = max_time > 2 ? (LWIP_RAND() % max_time) : 1; #else /* LWIP_RAND */ /* ATTENTION: use this only if absolutely necessary! */ group->timer = max_time / 2; +#endif /* LWIP_RAND */ + if (group->timer == 0) { group->timer = 1; } -#endif /* LWIP_RAND */ } /**