Re: [B.A.T.M.A.N.] [PATCH v2 04/26] batman-adv: iv_ogm, divide and round for ring buffer avg

Simon Wunderlich
2015-01-12T15:56:03Z

[-- Attachment #1: Type: text/plain, Size: 1093 bytes --]

On Friday 26 December 2014 12:41:21 Markus Pargmann wrote:
> Instead of the normal division which looses precision, use a division
> with rounding.
>
> Signed-off-by: Markus Pargmann <mpa@pengutronix.de>

(sorry for the duplicate, sent the reply for the first patch version, so I'm
replying another time on v2 ...)

Why do we need to have more precise rounding here? In doubt, we should rather
always round down to avoid any spurious routing loops - the loop free property
depends on monotonicity after all, and therefore its better to always round
down.

I'm not convinced that this change is safe in that regard, if you think it is
please explain further.

> ---
> bat_iv_ogm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/bat_iv_ogm.c b/bat_iv_ogm.c
> index 1458ecfa66b8..10eada270015 100644
> --- a/bat_iv_ogm.c
> +++ b/bat_iv_ogm.c
> @@ -82,7 +82,7 @@ static uint8_t batadv_ring_buffer_avg(const uint8_t
> lq_recv[]) if (count == 0)
> return 0;
>
> - return (uint8_t)(sum / count);
> + return (uint8_t)DIV_ROUND_CLOSEST(sum, count);
> }
>
> /**

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]