ofproto-dpif: Make sure one-packet flows have zero duration (again).
authorBen Pfaff <blp@nicira.com>
Sat, 18 Aug 2012 06:27:40 +0000 (23:27 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 21 Aug 2012 21:13:18 +0000 (14:13 -0700)
commit459b16a1e2882e4122440121742e4df92300f335
treec145c5a31e7f4d55cec3aa24f9308dce3f9f01cc
parenta7752d4ab7a6e7e9aaf83678b57790fc1c56ac83
ofproto-dpif: Make sure one-packet flows have zero duration (again).

commit 6a0a5bbbc (ofproto-dpif: Make sure one-packet flows have zero
duration.) was supposed to fix failures in the "ofproto-dpif - NetFlow
flow expiration" test, but it didn't fix the whole problem.  That commit
eliminated one reason why a one-packet flow might be shown as having an
nonzero duration, but missed another.

The other reason was that the call to dpif_flow_stats_extract() could
obtain a time later than the time that a new facet was created.  (This
wasn't obvious because dpif_flow_stats_extract() obtained the time
internally instead of taking it from the caller.)  This commit fixes that
problem, by using the facet creation there too for the first packet in
a facet.

This problem has suddenly started showing up in a lot of builds.  I think
it's probably because of the recent change that makes x86-64 skip the timer
optimizations, so that the return value of time_msec() changes every 1 ms,
not just every 100 ms.

I've tested this by running the test in question in a loop for several
minutes, without any failures.

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto/ofproto-dpif.c