Re: [ovs-dev] [PATCH] connmgr: Fix ofconn configuration on vswitchd startup.

2023-09-27 Thread Brad Cowie
On Sat, 23 Sept 2023 at 08:32, Eelco Chaudron  wrote:

>
> Hi Brad,
>
> See one style comment below, the rest of the changes seem fine.
> However, would it be possible to add a unit test for this fix?
>

Hi Eelco,

Thanks for the review and feedback.

I have sent a V2 patch which addresses the code formatting issue and adds a
unit test.

Thanks,
Brad
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] connmgr: Fix ofconn configuration on vswitchd startup.

2023-09-22 Thread Eelco Chaudron



On 15 Sep 2023, at 6:36, Brad Cowie wrote:

> ofconn connection parameters, such as probe_interval and max_backoff,
> are always set to their default values when vswitchd starts up even if
> the user has configured these to be something different in ovsdb:
>
>   $ ovs-vsctl set controller UUID inactivity_probe=9000
>
>   $ journalctl -u ovs-vswitchd.service | grep "inactivity"
>   ovs|10895|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 9 seconds,
>   sending inactivity probe
>
>   $ systemctl restart openvswitch-switch.service
>
>   $ journalctl -u ovs-vswitchd.service | grep "inactivity"
>   ovs|00848|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 5 seconds,
>   sending inactivity probe
>
> This bug was introduced by commit a0baa7df (connmgr: Make treatment of
> active and passive connections more uniform.).
>
> This happens because ofservice_reconfigure() loops over each
> ofconn in ofservice->conns and calls ofconn_reconfigure() on it
> to set the configuration parameters, however when ofservice_reconfigure()
> is called from ofservice_create(), ofservice->conns hasn't been populated
> yet so ofconn_reconfigure() is never called.
>
> This commit moves the ofservice_reconfigure() call to ofconn_create()
> where ofservice->conns is populated.
>
> This commit also removes the hardcoded default values for
> inactivity_probe (5s) and max_backoff (8s) on initial creation
> of the ofservice, as these config values are available from the
> ofproto_controller struct c.
>
> Signed-off-by: Brad Cowie 

Hi Brad,

See one style comment below, the rest of the changes seem fine.
However, would it be possible to add a unit test for this fix?

Cheers,

Eelco


> ---
>  ofproto/connmgr.c | 12 +---
>  1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
> index b092e9e04..eafed8fe7 100644
> --- a/ofproto/connmgr.c
> +++ b/ofproto/connmgr.c
> @@ -1209,7 +1209,7 @@ ofconn_create(struct ofservice *ofservice, struct rconn 
> *rconn,
>  hmap_init(&ofconn->bundles);
>  ofconn->next_bundle_expiry_check = time_msec() + BUNDLE_EXPIRY_INTERVAL;
>
> -ofconn_set_rate_limit(ofconn, settings->rate_limit, 
> settings->burst_limit);
> +ofservice_reconfigure(ofservice, settings);
>
>  ovs_mutex_unlock(&ofproto_mutex);
>  }
> @@ -1915,10 +1915,7 @@ connmgr_count_hidden_rules(const struct connmgr *mgr)
>  }
>  
>  /* Creates a new ofservice for 'target' in 'mgr'.  Returns 0 if successful,
> - * otherwise a positive errno value.
> - *
> - * ofservice_reconfigure() must be called to fully configure the new
> - * ofservice. */
> + * otherwise a positive errno value. */
>  static void
>  ofservice_create(struct connmgr *mgr, const char *target,
>   const struct ofproto_controller *c)
> @@ -1928,7 +1925,9 @@ ofservice_create(struct connmgr *mgr, const char 
> *target,
>  struct rconn *rconn = NULL;
>  if (!vconn_verify_name(target)) {
>  char *name = ofconn_make_name(mgr, target);
> -rconn = rconn_create(5, 8, c->dscp, c->allowed_versions);
> +rconn = rconn_create(
> +c->probe_interval, c->max_backoff,
> +c->dscp, c->allowed_versions);

In OVS if possible the split happens on an argument boundary. For example this 
would become:

   rconn = rconn_create(c->probe_interval, c->max_backoff,
c->dscp, c->allowed_versions);

>  rconn_connect(rconn, target, name);
>  free(name);
>  } else if (!pvconn_verify_name(target)) {
> @@ -1951,7 +1950,6 @@ ofservice_create(struct connmgr *mgr, const char 
> *target,
>  ofservice->rconn = rconn;
>  ofservice->pvconn = pvconn;
>  ofservice->s = *c;
> -ofservice_reconfigure(ofservice, c);
>
>  VLOG_INFO("%s: added %s controller \"%s\"",
>mgr->name, ofconn_type_to_string(ofservice->type), target);
> -- 
> 2.34.1
>
> ___
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] connmgr: Fix ofconn configuration on vswitchd startup.

2023-09-20 Thread Simon Horman
On Fri, Sep 15, 2023 at 04:36:21AM +, Brad Cowie wrote:
> ofconn connection parameters, such as probe_interval and max_backoff,
> are always set to their default values when vswitchd starts up even if
> the user has configured these to be something different in ovsdb:
> 
>   $ ovs-vsctl set controller UUID inactivity_probe=9000
> 
>   $ journalctl -u ovs-vswitchd.service | grep "inactivity"
>   ovs|10895|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 9 seconds,
>   sending inactivity probe
> 
>   $ systemctl restart openvswitch-switch.service
> 
>   $ journalctl -u ovs-vswitchd.service | grep "inactivity"
>   ovs|00848|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 5 seconds,
>   sending inactivity probe
> 
> This bug was introduced by commit a0baa7df (connmgr: Make treatment of
> active and passive connections more uniform.).
> 
> This happens because ofservice_reconfigure() loops over each
> ofconn in ofservice->conns and calls ofconn_reconfigure() on it
> to set the configuration parameters, however when ofservice_reconfigure()
> is called from ofservice_create(), ofservice->conns hasn't been populated
> yet so ofconn_reconfigure() is never called.
> 
> This commit moves the ofservice_reconfigure() call to ofconn_create()
> where ofservice->conns is populated.
> 
> This commit also removes the hardcoded default values for
> inactivity_probe (5s) and max_backoff (8s) on initial creation
> of the ofservice, as these config values are available from the
> ofproto_controller struct c.
> 
> Signed-off-by: Brad Cowie 

Acked-by: Simon Horman 

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] connmgr: Fix ofconn configuration on vswitchd startup.

2023-09-14 Thread Brad Cowie
ofconn connection parameters, such as probe_interval and max_backoff,
are always set to their default values when vswitchd starts up even if
the user has configured these to be something different in ovsdb:

  $ ovs-vsctl set controller UUID inactivity_probe=9000

  $ journalctl -u ovs-vswitchd.service | grep "inactivity"
  ovs|10895|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 9 seconds,
  sending inactivity probe

  $ systemctl restart openvswitch-switch.service

  $ journalctl -u ovs-vswitchd.service | grep "inactivity"
  ovs|00848|rconn|DBG|dp1<->tcp:127.0.0.1:6653: idle 5 seconds,
  sending inactivity probe

This bug was introduced by commit a0baa7df (connmgr: Make treatment of
active and passive connections more uniform.).

This happens because ofservice_reconfigure() loops over each
ofconn in ofservice->conns and calls ofconn_reconfigure() on it
to set the configuration parameters, however when ofservice_reconfigure()
is called from ofservice_create(), ofservice->conns hasn't been populated
yet so ofconn_reconfigure() is never called.

This commit moves the ofservice_reconfigure() call to ofconn_create()
where ofservice->conns is populated.

This commit also removes the hardcoded default values for
inactivity_probe (5s) and max_backoff (8s) on initial creation
of the ofservice, as these config values are available from the
ofproto_controller struct c.

Signed-off-by: Brad Cowie 
---
 ofproto/connmgr.c | 12 +---
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
index b092e9e04..eafed8fe7 100644
--- a/ofproto/connmgr.c
+++ b/ofproto/connmgr.c
@@ -1209,7 +1209,7 @@ ofconn_create(struct ofservice *ofservice, struct rconn 
*rconn,
 hmap_init(&ofconn->bundles);
 ofconn->next_bundle_expiry_check = time_msec() + BUNDLE_EXPIRY_INTERVAL;
 
-ofconn_set_rate_limit(ofconn, settings->rate_limit, settings->burst_limit);
+ofservice_reconfigure(ofservice, settings);
 
 ovs_mutex_unlock(&ofproto_mutex);
 }
@@ -1915,10 +1915,7 @@ connmgr_count_hidden_rules(const struct connmgr *mgr)
 }
 
 /* Creates a new ofservice for 'target' in 'mgr'.  Returns 0 if successful,
- * otherwise a positive errno value.
- *
- * ofservice_reconfigure() must be called to fully configure the new
- * ofservice. */
+ * otherwise a positive errno value. */
 static void
 ofservice_create(struct connmgr *mgr, const char *target,
  const struct ofproto_controller *c)
@@ -1928,7 +1925,9 @@ ofservice_create(struct connmgr *mgr, const char *target,
 struct rconn *rconn = NULL;
 if (!vconn_verify_name(target)) {
 char *name = ofconn_make_name(mgr, target);
-rconn = rconn_create(5, 8, c->dscp, c->allowed_versions);
+rconn = rconn_create(
+c->probe_interval, c->max_backoff,
+c->dscp, c->allowed_versions);
 rconn_connect(rconn, target, name);
 free(name);
 } else if (!pvconn_verify_name(target)) {
@@ -1951,7 +1950,6 @@ ofservice_create(struct connmgr *mgr, const char *target,
 ofservice->rconn = rconn;
 ofservice->pvconn = pvconn;
 ofservice->s = *c;
-ofservice_reconfigure(ofservice, c);
 
 VLOG_INFO("%s: added %s controller \"%s\"",
   mgr->name, ofconn_type_to_string(ofservice->type), target);
-- 
2.34.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev