[ovs-dev] [flow-stats 01/14] ofproto-dpif: Include datapath flow misses in flow statistics.

Ben Pfaff blp at nicira.com
Thu Dec 8 22:01:26 UTC 2011


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.
---
 ofproto/ofproto-dpif.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index bca9b8d..3309472 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -2453,6 +2453,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++;
 
@@ -2473,6 +2475,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)) {
-- 
1.7.4.4




More information about the dev mailing list