> The problem is that if the zcip protocol times out at about the same
> time another ARP packet is being received, the newly calculated timeout
> may be set to wait forever. This prevents the protocol from progressing
> through its various states.
>
> The Fix is to set the timeout to zero if it used to be a positive
> number, but it has already expired. This causes the next protocol state
> to be entered immediately instead of never.
>
> If OK please commit.
>
> Also note that if you may have to apply the patch on this page:
>
> http://www.science.uva.nl/research/air/wiki/LinkLocalARPMeasurements
>
> To the linux kernel to get proper zcip behavior.
>
gettimeofday(&tv2, NULL);
if (timercmp(&tv1, &tv2, <)) {
- timeout = -1;
+ timeout = 0;
} else {
timersub(&tv1, &tv2, &tv1);
timeout = 1000 * tv1.tv_sec