On Wed, May 13, 2026 at 3:27 PM Xavier Simonart <[email protected]> wrote:

> 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, we also need to
> - 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.
> - Wakeup pinctrl after router port is reclaimed and garp must be sent.
>
> 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.
> -v3: Wakeup pinctrl on router port reclaim
> ---
>  controller/garp_rarp.c | 3 ++-
>  controller/pinctrl.c   | 2 ++
>  2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/controller/garp_rarp.c b/controller/garp_rarp.c
> index 9d0c2c2e4..1cf415a9f 100644
> --- a/controller/garp_rarp.c
> +++ b/controller/garp_rarp.c
> @@ -298,6 +298,7 @@ reset_timers_for_claimed_cr(struct if_status_mgr *mgr)
>      SSET_FOR_EACH_SAFE (cr_logical_port, claimed_cr) {
>          garp_rarp_node_reset_timers(cr_logical_port);
>          sset_delete(claimed_cr, SSET_NODE_FROM_NAME(cr_logical_port));
> +        garp_rarp_data_has_changed = true;
>      }
>
>  }
> @@ -565,7 +566,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 d607c6287..c60478181 100644
> --- a/controller/pinctrl.c
> +++ b/controller/pinctrl.c
> @@ -4120,6 +4120,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
>
>
Thank you Xavier,

applied to main and backported down to 25.09.

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

Reply via email to