Avoid garp_rarp waking up pinctrl when no change.
As, with this patch, pinctrl is only waken up by garp_rarp when there are
garp_rarp changes, add a peridic wake up for pinctrl for syncing
coverage counters. Without this, pinctrl might sleep for a long time
if no event such as packet_in, and recently updated counters might
not be sync'ed and hence not updated in appctl coverage/show.

Fixes: 05527bd6ccdb ("controller: Extract garp_rarp to engine node.")
Signed-off-by: Xavier Simonart <[email protected]>

---
-v2: Fix coverage counter issue reported by
     "dns lookup : 1 HV, 2 LS, 2 LSPs/LS" and by Ales.
---
 controller/garp_rarp.c | 2 +-
 controller/pinctrl.c   | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/controller/garp_rarp.c b/controller/garp_rarp.c
index 9d0c2c2e4..162fa0446 100644
--- a/controller/garp_rarp.c
+++ b/controller/garp_rarp.c
@@ -565,7 +565,7 @@ garp_rarp_get_data(void)
 bool
 garp_rarp_data_changed(void) {
     bool ret = garp_rarp_data_has_changed;
-    garp_rarp_data_has_changed = true;
+    garp_rarp_data_has_changed = false;
     return ret;
 }
 
diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index f62022361..1ad058f2b 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -4048,6 +4048,8 @@ pinctrl_handler(void *arg_)
         latch_wait(&pctrl->pinctrl_thread_exit);
 
         ovsrcu_quiesce_start();
+        /* Wake-up periodicaly for coverage counters sync.*/
+        poll_timer_wait(1000);
         poll_block();
     }
 
-- 
2.47.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to