stp: Fix tick remainder calculation.
authorJustin Pettit <jpettit@nicira.com>
Tue, 15 Nov 2011 08:20:09 +0000 (00:20 -0800)
committerJustin Pettit <jpettit@nicira.com>
Tue, 15 Nov 2011 17:35:33 +0000 (09:35 -0800)
commitba25773f1c35e26c4572f2b1d0064f41c200c32c
tree12bcd19dcb0e5a31b2f52936bf633c3c62e7e28b
parent80740385d2700b1a03d28a02338d02509fd0b697
stp: Fix tick remainder calculation.

The spanning tree library keeps track of time to know how often it
should update its state and send out BPDUs.  OVS is able to track time
in milliseconds, but STP uses a coarser-grained count (256 ticks per
second).  To prevent losing milliseconds that didn't account for an
entire tick, the library keeps track of these remaining milliseconds.  A
bug miscalculated the remainder and made it too high, which caused the
library to think time was passing more quickly than it was.

This bug wasn't noticeable on a quiet system, since STP only asks to be
woken every second.  However, a system with a lot of activity would wake
OVS more frequently and have it call the subsystems' "run" functions.

Bug #8283
lib/stp.c