From: Hoang Le <hoang.h...@dektech.com.au> Date: Thu, 6 Dec 2018 09:00:09 +0700
> When setting LINK tolerance, node timer interval will be calculated > base on the LINK with lowest tolerance. > > But when calculated, the old node timer interval only updated if current > setting value (tolerance/4) less than old ones regardless of number of > links as well as links' lowest tolerance value. > > This caused to two cases missing if tolerance changed as following: > Case 1: > 1.1/ There is one link (L1) available in the system > 1.2/ Set L1's tolerance from 1500ms => lower (i.e 500ms) > 1.3/ Then, fallback to default (1500ms) or higher (i.e 2000ms) > > Expected: > node timer interval is 1500/4=375ms after 1.3 > > Result: > node timer interval will not being updated after changing tolerance at 1.3 > since its value 1500/4=375ms is not less than 500/4=125ms at 1.2. > > Case 2: > 2.1/ There are two links (L1, L2) available in the system > 2.2/ L1 and L2 tolerance value are 2000ms as initial > 2.3/ Set L2's tolerance from 2000ms => lower 1500ms > 2.4/ Disable link L2 (bring down its bearer) > > Expected: > node timer interval is 2000ms/4=500ms after 2.4 > > Result: > node timer interval will not being updated after disabling L2 since > its value 2000ms/4=500ms is still not less than 1500/4=375ms at 2.3 > although L2 is already not available in the system. > > To fix this, we start the node interval calculation by initializing it to > a value larger than any conceivable calculated value. This way, the link > with the lowest tolerance will always determine the calculated value. > > Acked-by: Jon Maloy <jon.ma...@ericsson.com> > Signed-off-by: Hoang Le <hoang.h...@dektech.com.au> Applied, thank you.