The xcache holds the correct set of modules to attribute stats for a
flow that is being deleted, but it may hold an outdated view of the
side-effects to perform for the flow. We have no way of knowing whether
the flow is valid in this context, so use xcache to attribute stats, but
do not use it for performing side-effects. Perform side-effects by flow
translation instead.

Signed-off-by: Joe Stringer <[email protected]>
---
 ofproto/ofproto-dpif-upcall.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index bd5c07a..276d6a9 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -1282,9 +1282,9 @@ push_dump_ops__(struct udpif *udpif, struct dump_op *ops, 
size_t n_ops)
             may_learn = push->n_packets > 0;
             ovs_mutex_lock(&op->ukey->mutex);
             if (op->ukey->xcache) {
-                xlate_push_stats(op->ukey->xcache, may_learn, push);
-                ovs_mutex_unlock(&op->ukey->mutex);
-                continue;
+                xlate_push_stats(op->ukey->xcache, false, push);
+                push->n_packets = 0;
+                push->n_bytes = 0;
             }
             ovs_mutex_unlock(&op->ukey->mutex);
 
-- 
1.7.10.4

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to