ofproto-dpif: Close race between processing packet_ins and checking seqno.
[sliver-openvswitch.git] / ofproto / ofproto-dpif.c
index 4cebd77..5eea5ab 100644 (file)
@@ -1357,6 +1357,12 @@ run(struct ofproto *ofproto_)
         ovs_rwlock_unlock(&ofproto->ml->rwlock);
     }
 
+    /* Always updates the ofproto->pins_seqno to avoid frequent wakeup during
+     * flow restore.  Even though nothing is processed during flow restore,
+     * all queued 'pins' will be handled immediately when flow restore
+     * completes. */
+    ofproto->pins_seqno = seq_read(ofproto->pins_seq);
+
     /* Do not perform any periodic activity required by 'ofproto' while
      * waiting for flow restore to complete. */
     if (!ofproto_get_flow_restore_wait()) {
@@ -1372,12 +1378,6 @@ run(struct ofproto *ofproto_)
         }
     }
 
-    /* Always updates the ofproto->pins_seqno to avoid frequent wakeup during
-     * flow restore.  Even though nothing is processed during flow restore,
-     * all queued 'pins' will be handled immediately when flow restore
-     * completes. */
-    ofproto->pins_seqno = seq_read(ofproto->pins_seq);
-
     if (ofproto->netflow) {
         netflow_run(ofproto->netflow);
     }