Commit f9b8c4c8 authored by Ben Pfaff's avatar Ben Pfaff Committed by Jesse Gross

openvswitch: Correctly report flow used times for first 5 minutes after boot.

The kernel starts out its "jiffies" timer as 5 minutes below zero, as
shown in include/linux/jiffies.h:

  /*
   * Have the 32 bit jiffies value wrap 5 minutes after boot
   * so jiffies wrap bugs show up earlier.
   */
  #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))

The loop in ovs_flow_stats_get() starts out with 'used' set to 0, then
takes any "later" time.  This means that for the first five minutes after
boot, flows will always be reported as never used, since 0 is greater than
any time already seen.
Signed-off-by: default avatarBen Pfaff <blp@nicira.com>
Acked-by: default avatarPravin B Shelar <pshelar@nicira.com>
Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
parent 42ee19e2
...@@ -92,7 +92,7 @@ static void stats_read(struct flow_stats *stats, ...@@ -92,7 +92,7 @@ static void stats_read(struct flow_stats *stats,
unsigned long *used, __be16 *tcp_flags) unsigned long *used, __be16 *tcp_flags)
{ {
spin_lock(&stats->lock); spin_lock(&stats->lock);
if (time_after(stats->used, *used)) if (!*used || time_after(stats->used, *used))
*used = stats->used; *used = stats->used;
*tcp_flags |= stats->tcp_flags; *tcp_flags |= stats->tcp_flags;
ovs_stats->n_packets += stats->packet_count; ovs_stats->n_packets += stats->packet_count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment