Here's an incremental.

---
 ofproto/ofproto-dpif.c |   19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 5fd20f0..30ef5f9 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -1121,21 +1121,19 @@ static void
 run_fast_rl(void)
 {
     static long long int port_rl = LLONG_MIN;
-    static long long int backer_rl = 0;
-    long long int now = time_msec();
-    struct shash_node *node;
+    static unsigned int backer_rl = 0;
 
-    if (now - port_rl > 200) {
+    if (time_msec() >= port_rl) {
         struct ofproto_dpif *ofproto;
         struct ofport_dpif *ofport;
 
-        port_rl = now;
         HMAP_FOR_EACH (ofproto, all_ofproto_dpifs_node, &all_ofproto_dpifs) {
 
             HMAP_FOR_EACH (ofport, up.hmap_node, &ofproto->up.ports) {
                 port_run_fast(ofport);
             }
         }
+        port_rl = time_msec() + 200;
     }
 
     /* XXX: We have to be careful not to do too much work in this function.  If
@@ -1146,12 +1144,13 @@ run_fast_rl(void)
      * long term, is to separate flow miss handling into it's own thread so it
      * isn't affected by revalidations, and expirations.  Until then, this is
      * the best we can do. */
-    if (backer_rl++ % 10) {
-        return;
-    }
+    if (++backer_rl >= 10) {
+        struct shash_node *node;
 
-    SHASH_FOR_EACH (node, &all_dpif_backers) {
-        dpif_backer_run_fast(node->data, 1);
+        backer_rl = 0;
+        SHASH_FOR_EACH (node, &all_dpif_backers) {
+            dpif_backer_run_fast(node->data, 1);
+        }
     }
 }
 
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to