> On Thu, Mar 5, 2026 at 5:00 PM Lorenzo Bianconi <[email protected]>
> wrote:
>
> > > The pinctrl would go to sleep if the lock wasn't available without
> > > checking if there is any other update. However, we still might be
> > > able to process packets without the lock (some packet processing
> > > still requires a lock). This improves the pinctrl throughput a bit.
> > >
> > > Fixes: d71c45199341 ("pinctrl: Use ovs_mutex_trylock() in the pinctrl
> > thread.")
> > > Signed-off-by: Ales Musil <[email protected]>
> >
> > Acked-by: Lorenzo Bianconi <[email protected]>
> >
> > Just for my curiosity, do you have any numbers to check the improvement?
> >
>
> Thank you Lorenzo,
>
> nothing concrete unfortunately, there are other things that slow the
> processing
> down even if we take the sleep out of the picture. I'm planning to work on
> those bits next, if everything goes well we might end up lockless in the
> pinctrl.
nice :)
>
>
> > Regards,
> > Lorenzo
> >
> > > ---
> > > controller/pinctrl.c | 33 ++++++++++++++++-----------------
> > > 1 file changed, 16 insertions(+), 17 deletions(-)
> > >
> > > diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> > > index 775d37601..35c42942f 100644
> > > --- a/controller/pinctrl.c
> > > +++ b/controller/pinctrl.c
> > > @@ -4026,26 +4026,25 @@ pinctrl_handler(void *arg_)
> > > }
> > >
> > > if (lock_failed) {
> > > - /* Wait for 5 msecs before waking to avoid degrading the
> > > - * lock to a spinlock. */
> > > + /* Wait for 5 msecs before waking in case there isn't
> > anything
> > > + * else to process. */
> > > poll_timer_wait(5);
> > > - } else {
> > > - rconn_run_wait(swconn);
> > > - rconn_recv_wait(swconn);
> > > - if (rconn_is_connected(swconn)) {
> > > - send_garp_rarp_wait(send_garp_rarp_time);
> > > - send_arp_nd_wait(send_arp_nd_time);
> > > - ipv6_ra_wait(send_ipv6_ra_time);
> > > - ip_mcast_querier_wait(send_mcast_query_time);
> > > - svc_monitors_wait(svc_monitors_next_run_time);
> > > - ipv6_prefixd_wait(send_prefixd_time);
> > > - bfd_monitor_wait(bfd_time);
> > > - }
> > > - seq_wait(pinctrl_handler_seq, new_seq);
> > > -
> > > - latch_wait(&pctrl->pinctrl_thread_exit);
> > > }
> > >
> > > + rconn_run_wait(swconn);
> > > + rconn_recv_wait(swconn);
> > > + if (rconn_is_connected(swconn)) {
> > > + send_garp_rarp_wait(send_garp_rarp_time);
> > > + send_arp_nd_wait(send_arp_nd_time);
> > > + ipv6_ra_wait(send_ipv6_ra_time);
> > > + ip_mcast_querier_wait(send_mcast_query_time);
> > > + svc_monitors_wait(svc_monitors_next_run_time);
> > > + ipv6_prefixd_wait(send_prefixd_time);
> > > + bfd_monitor_wait(bfd_time);
> > > + }
> > > + seq_wait(pinctrl_handler_seq, new_seq);
> > > + latch_wait(&pctrl->pinctrl_thread_exit);
> > > +
> > > ovsrcu_quiesce_start();
> > > poll_block();
> > > }
> > > --
> > > 2.53.0
> > >
> > > _______________________________________________
> > > dev mailing list
> > > [email protected]
> > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> > >
> >
>
> Regards,
> Ales
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev