[ovs-dev] [PATCH] ofproto: Make current packet counts more accurate.

Jesse Gross jesse at nicira.com
Thu Oct 8 20:19:19 UTC 2009


When the stats for a currently active flow are requested this
ensures that the packets not handled by the kernel are counted
immediately.  Before, these packets would only be counted once
the kernel flow expired and the counts were combined.
---
 secchan/ofproto.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/secchan/ofproto.c b/secchan/ofproto.c
index 9836e0f..94c4bfe 100644
--- a/secchan/ofproto.c
+++ b/secchan/ofproto.c
@@ -2420,19 +2420,22 @@ query_stats(struct ofproto *p, struct rule *rule,
     struct odp_flow *odp_flows;
     size_t n_odp_flows;
 
+    packet_count = rule->packet_count;
+    byte_count = rule->byte_count;
+
     n_odp_flows = rule->cr.wc.wildcards ? list_size(&rule->list) : 1;
     odp_flows = xcalloc(1, n_odp_flows * sizeof *odp_flows);
     if (rule->cr.wc.wildcards) {
         size_t i = 0;
         LIST_FOR_EACH (subrule, struct rule, list, &rule->list) {
             odp_flows[i++].key = subrule->cr.flow;
+            packet_count += subrule->packet_count;
+            byte_count += subrule->byte_count;
         }
     } else {
         odp_flows[0].key = rule->cr.flow;
     }
 
-    packet_count = rule->packet_count;
-    byte_count = rule->byte_count;
     if (!dpif_flow_get_multiple(&p->dpif, odp_flows, n_odp_flows)) {
         size_t i;
         for (i = 0; i < n_odp_flows; i++) {
-- 
1.6.0.4





More information about the dev mailing list