[ovs-dev] [PATCH v5 7/9] datapath: Take actions directly in ovs_flow_cmd_alloc_info().

Pravin Shelar pshelar at nicira.com
Fri Mar 28 20:27:03 UTC 2014


On Tue, Mar 25, 2014 at 2:35 PM, Jarno Rajahalme <jrajahalme at nicira.com> wrote:
> ovs_flow_cmd_alloc_info() does not need the flow, but the actions.
> Taking actions directly allows further optimization in a subsequent
> patch.
>
This patch would change if you agree with earlier comment.

> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
> ---
> v5: Split to a separate patch.
>
>  datapath/datapath.c |   16 +++++++---------
>  1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/datapath/datapath.c b/datapath/datapath.c
> index 2901d69..0de00ad 100644
> --- a/datapath/datapath.c
> +++ b/datapath/datapath.c
> @@ -762,22 +762,19 @@ error:
>         return err;
>  }
>
> -/* Must be called with rcu_read_lock or ovs_mutex if 'flow' is in the flow
> - * table. */
> -static struct sk_buff *ovs_flow_cmd_alloc_info(const struct sw_flow *flow,
> +/* Must be called with rcu_read_lock or ovs_mutex if 'acts' is in a flow
> + * that is in the flow table. */
> +static struct sk_buff *ovs_flow_cmd_alloc_info(const struct sw_flow_actions *acts,
>                                                struct genl_info *info,
>                                                bool always)
>  {
>         struct sk_buff *skb;
> -       size_t len;
>
>         if (!always && !ovs_must_notify(info, &ovs_dp_flow_multicast_group))
>                 return NULL;
>
> -       len = ovs_flow_cmd_msg_size(ovsl_dereference_flow_acts(flow));
> -
> -       skb = genlmsg_new_unicast(len, info, GFP_KERNEL);
> -
> +       skb = genlmsg_new_unicast(ovs_flow_cmd_msg_size(acts), info,
> +                                 GFP_KERNEL);
>         if (!skb)
>                 return ERR_PTR(-ENOMEM);
>
> @@ -794,7 +791,8 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
>         struct sk_buff *skb;
>         int retval;
>
> -       skb = ovs_flow_cmd_alloc_info(flow, info, always);
> +       skb = ovs_flow_cmd_alloc_info(ovsl_dereference_flow_acts(flow), info,
> +                                     always);
>         if (!skb || IS_ERR(skb))
>                 return skb;
>
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list