From 67d91f7864372bfab901cf925865816e8c9109aa Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Thu, 8 Dec 2011 12:40:01 -0800 Subject: [PATCH] ofproto-dpif: Include datapath flow misses in flow statistics. Commit 501f8d1fd75 (ofproto-dpif: Batch interacting with the dpif on flow miss operations.) caused packets handled manually in userspace not to be counted in flow statistics. This patch fixes the problem. Signed-off-by: Ben Pfaff Bug #8494. --- ofproto/ofproto-dpif.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 527c05dc..84ddc9dc 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -2543,6 +2543,8 @@ handle_flow_miss(struct ofproto_dpif *ofproto, struct flow_miss *miss, miss->initial_tci); LIST_FOR_EACH_SAFE (packet, next_packet, list_node, &miss->packets) { + struct dpif_flow_stats stats; + list_remove(&packet->list_node); ofproto->n_matches++; @@ -2563,6 +2565,12 @@ handle_flow_miss(struct ofproto_dpif *ofproto, struct flow_miss *miss, if (!facet->may_install || !subfacet->actions) { subfacet_make_actions(ofproto, subfacet, packet); } + + /* Credit statistics to subfacet for this packet. We must do this now + * because execute_controller_action() below may destroy 'packet'. */ + dpif_flow_stats_extract(&facet->flow, packet, &stats); + subfacet_update_stats(ofproto, subfacet, &stats); + if (!execute_controller_action(ofproto, &facet->flow, subfacet->actions, subfacet->actions_len, packet, true)) { -- 2.30.2