[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