Hi All,
Please help me with review

Thanks
Athira Rajeev

> On 24-Aug-2017, at 12:45 PM, Athira Rajeev <atraj...@linux.vnet.ibm.com> 
> wrote:
> 
> From: Athira Rajeev <atraj...@linux.vnet.ibm.com 
> <mailto:atraj...@linux.vnet.ibm.com>>
> 
> testchecksum fails with "verify: isisd failed" for few iterations.
> Checking the test code, it calls iso_csum_create followed by verify function
> where it fails in some cases.
> 
> Code snippet:
> 
> isisd = iso_csum_create (buffer, exercise + sizeof(u_int16_t), exercise);
> if (verify (buffer, exercise + sizeof(u_int16_t)))
>  printf ("verify: isisd failed\n");
> 
> In iso_csum_create , code uses modulo ( % ) operation.
> Code snippet:
>  ========
>  mul = (init_len - off) * c0;
> 
>  x = mul - c1 - c0;
>  y = c1 - mul - 1;
> 
>  if (y > 0)
>    y++;
>  if (x < 0)
>    x--;
> 
>  x %= 255;
>  y %= 255;
> 
>  if (x == 0)
>    x = 255;
>  if (y == 0)
>    y = 1;
>  ========
> 
> Moved the modulus operation up the if condition in testcase and
> isisd verify goes fine without reporting fail.
> Referring this mail thread https://lists.gt.net/quagga/dev/17347 
> <https://lists.gt.net/quagga/dev/17347>
> and 
> https://github.com/Quagga/quagga/commit/5d4b8cf2faba9f5386810a7c70837e5b7fae3572#diff-5fb4cfc11e8bb396af1ce29581abfb89
>  
> <https://github.com/Quagga/quagga/commit/5d4b8cf2faba9f5386810a7c70837e5b7fae3572#diff-5fb4cfc11e8bb396af1ce29581abfb89>
>  ,
> mod operation was moved up for "reduce_isisd_mod" in past commits.
> 
> Also observed that without moving mod up and introducing sleep after mod 
> operation also solves the issue :
> 
> --- test-checksum.c.org <http://test-checksum.c.org/> 2017-08-23 
> 12:19:43.688263168 +0000
> +++ test-checksum.c   2017-08-23 12:22:43.400260726 +0000
> @@ -360,6 +360,8 @@ iso_csum_create (u_char * buffer, testsz
>   x %= 255;
>   y %= 255;
> 
> +  sleep(1);
> +
>   if (x == 0)
>     x = 255;
>   if (y == 0)
> 
> Reason behind this appears that modulus operator is slow.
> Reference links:
> https://stackoverflow.com/questions/27977834/why-is-modulus-operator-slow 
> <https://stackoverflow.com/questions/27977834/why-is-modulus-operator-slow>
> 
> But Since "Moving the mod up" was followed as solution in past commits, 
> adding that patch here.
> 
> Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com 
> <mailto:atraj...@linux.vnet.ibm.com>>
> ---
> tests/test-checksum.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/test-checksum.c b/tests/test-checksum.c
> index b6741f30..99d255ef 100644
> --- a/tests/test-checksum.c
> +++ b/tests/test-checksum.c
> @@ -352,14 +352,14 @@ iso_csum_create (u_char * buffer, testsz_t len, 
> testoff_t off)
>   x = mul - c1 - c0;
>   y = c1 - mul - 1;
> 
> +  x %= 255;
> +  y %= 255;
> +
>   if (y > 0)
>     y++;
>   if (x < 0)
>     x--;
> 
> -  x %= 255;
> -  y %= 255;
> -
>   if (x == 0)
>     x = 255;
>   if (y == 0)
> -- 
> 2.11.0 (Apple Git-81)
> _______________________________________________
> Quagga-dev mailing list
> Quagga-dev@lists.quagga.net
> https://lists.quagga.net/mailman/listinfo/quagga-dev

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to