Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>

> On Jul 29, 2015, at 11:42 PM, Ben Pfaff <b...@nicira.com> wrote:
> 
> To my mind, this is a good way to ensure that '*xout' gets initialized
> properly in every execution.  By using an initializer rather than a
> series of assignment statements, we can be assured that every member
> gets initialized.
> 
> This commit makes xlate_actions() more expensive because struct
> xlate_out is large and this assignment will initialize all of it due to
> C rules.  Later commits will fix this up by removing all of the large
> members, reducing xlate_out to only a few bytes total.
> 
> Signed-off-by: Ben Pfaff <b...@nicira.com>
> ---
> ofproto/ofproto-dpif-xlate.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
> index 125d4c6..b6d5d15 100644
> --- a/ofproto/ofproto-dpif-xlate.c
> +++ b/ofproto/ofproto-dpif-xlate.c
> @@ -4720,6 +4720,17 @@ too_many_output_actions(const struct ofpbuf 
> *odp_actions OVS_UNUSED)
> void
> xlate_actions(struct xlate_in *xin, struct xlate_out *xout)
> {
> +    *xout = (struct xlate_out) {
> +        .slow = 0,
> +        .fail_open = false,
> +        .has_learn = false,
> +        .has_normal = false,
> +        .has_fin_timeout = false,
> +        .nf_output_iface = NF_OUT_DROP,
> +        .mirrors = 0,
> +        .n_recircs = 0,
> +    };
> +
>     struct xlate_cfg *xcfg = ovsrcu_get(struct xlate_cfg *, &xcfgp);
>     struct flow_wildcards *wc = NULL;
>     struct flow *flow = &xin->flow;
> @@ -4760,13 +4771,6 @@ xlate_actions(struct xlate_in *xin, struct xlate_out 
> *xout)
> 
>     ctx.xin = xin;
>     ctx.xout = xout;
> -    ctx.xout->slow = 0;
> -    ctx.xout->has_learn = false;
> -    ctx.xout->has_normal = false;
> -    ctx.xout->has_fin_timeout = false;
> -    ctx.xout->nf_output_iface = NF_OUT_DROP;
> -    ctx.xout->mirrors = 0;
> -    ctx.xout->n_recircs = 0;
> 
>     xout->odp_actions = xin->odp_actions;
>     if (!xout->odp_actions) {
> -- 
> 2.1.3
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to