From b3137fe852171f8e87a49ef0939a52d91ea09720 Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Fri, 14 Aug 2009 13:47:28 -0700 Subject: [PATCH] ofproto: Make current packet counts more accurate. 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 file changed, 5 insertions(+), 2 deletions(-) diff --git a/secchan/ofproto.c b/secchan/ofproto.c index 9836e0f8..94c4bfe3 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++) { -- 2.30.2