Re: [ovs-dev] [PATCH net-next v4 10/10] net: openvswitch: simplify the ovs_dp_cmd_new

2019-10-18 Thread William Tu
On Wed, Oct 16, 2019 at 5:56 AM  wrote:
>
> From: Tonghao Zhang 
>
> use the specified functions to init resource.
>
> Signed-off-by: Tonghao Zhang 
> Tested-by: Greg Rose 
> ---

Looks like this is simply moving code around.
I don't have any opinion.

>  net/openvswitch/datapath.c | 60 
> +-
>  1 file changed, 38 insertions(+), 22 deletions(-)
>
> diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
> index aeb76e4..4d48e48 100644
> --- a/net/openvswitch/datapath.c
> +++ b/net/openvswitch/datapath.c
> @@ -1576,6 +1576,31 @@ static int ovs_dp_change(struct datapath *dp, struct 
> nlattr *a[])
> return 0;
>  }
>
> +static int ovs_dp_stats_init(struct datapath *dp)
> +{
> +   dp->stats_percpu = netdev_alloc_pcpu_stats(struct dp_stats_percpu);
> +   if (!dp->stats_percpu)
> +   return -ENOMEM;
> +
> +   return 0;
> +}
> +
> +static int ovs_dp_vport_init(struct datapath *dp)
> +{
> +   int i;
> +
> +   dp->ports = kmalloc_array(DP_VPORT_HASH_BUCKETS,
> + sizeof(struct hlist_head),
> + GFP_KERNEL);
> +   if (!dp->ports)
> +   return -ENOMEM;
> +
> +   for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++)
> +   INIT_HLIST_HEAD(>ports[i]);
> +
> +   return 0;
> +}
> +
>  static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
>  {
> struct nlattr **a = info->attrs;
> @@ -1584,7 +1609,7 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
> genl_info *info)
> struct datapath *dp;
> struct vport *vport;
> struct ovs_net *ovs_net;
> -   int err, i;
> +   int err;
>
> err = -EINVAL;
> if (!a[OVS_DP_ATTR_NAME] || !a[OVS_DP_ATTR_UPCALL_PID])
> @@ -1597,35 +1622,26 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
> genl_info *info)
> err = -ENOMEM;
> dp = kzalloc(sizeof(*dp), GFP_KERNEL);
> if (dp == NULL)
> -   goto err_free_reply;
> +   goto err_destroy_reply;
>
> ovs_dp_set_net(dp, sock_net(skb->sk));
>
> /* Allocate table. */
> err = ovs_flow_tbl_init(>table);
> if (err)
> -   goto err_free_dp;
> +   goto err_destroy_dp;
>
> -   dp->stats_percpu = netdev_alloc_pcpu_stats(struct dp_stats_percpu);
> -   if (!dp->stats_percpu) {
> -   err = -ENOMEM;
> +   err = ovs_dp_stats_init(dp);
> +   if (err)
> goto err_destroy_table;
> -   }
>
> -   dp->ports = kmalloc_array(DP_VPORT_HASH_BUCKETS,
> - sizeof(struct hlist_head),
> - GFP_KERNEL);
> -   if (!dp->ports) {
> -   err = -ENOMEM;
> -   goto err_destroy_percpu;
> -   }
> -
> -   for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++)
> -   INIT_HLIST_HEAD(>ports[i]);
> +   err = ovs_dp_vport_init(dp);
> +   if (err)
> +   goto err_destroy_stats;
>
> err = ovs_meters_init(dp);
> if (err)
> -   goto err_destroy_ports_array;
> +   goto err_destroy_ports;
>
> /* Set up our datapath device. */
> parms.name = nla_data(a[OVS_DP_ATTR_NAME]);
> @@ -1675,15 +1691,15 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
> genl_info *info)
>
>  err_destroy_meters:
> ovs_meters_exit(dp);
> -err_destroy_ports_array:
> +err_destroy_ports:
> kfree(dp->ports);
> -err_destroy_percpu:
> +err_destroy_stats:
> free_percpu(dp->stats_percpu);
>  err_destroy_table:
> ovs_flow_tbl_destroy(>table);
> -err_free_dp:
> +err_destroy_dp:
> kfree(dp);
> -err_free_reply:
> +err_destroy_reply:
> kfree_skb(reply);
>  err:
> return err;
> --
> 1.8.3.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


[ovs-dev] [PATCH net-next v4 10/10] net: openvswitch: simplify the ovs_dp_cmd_new

2019-10-16 Thread xiangxia . m . yue
From: Tonghao Zhang 

use the specified functions to init resource.

Signed-off-by: Tonghao Zhang 
Tested-by: Greg Rose 
---
 net/openvswitch/datapath.c | 60 +-
 1 file changed, 38 insertions(+), 22 deletions(-)

diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index aeb76e4..4d48e48 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -1576,6 +1576,31 @@ static int ovs_dp_change(struct datapath *dp, struct 
nlattr *a[])
return 0;
 }
 
+static int ovs_dp_stats_init(struct datapath *dp)
+{
+   dp->stats_percpu = netdev_alloc_pcpu_stats(struct dp_stats_percpu);
+   if (!dp->stats_percpu)
+   return -ENOMEM;
+
+   return 0;
+}
+
+static int ovs_dp_vport_init(struct datapath *dp)
+{
+   int i;
+
+   dp->ports = kmalloc_array(DP_VPORT_HASH_BUCKETS,
+ sizeof(struct hlist_head),
+ GFP_KERNEL);
+   if (!dp->ports)
+   return -ENOMEM;
+
+   for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++)
+   INIT_HLIST_HEAD(>ports[i]);
+
+   return 0;
+}
+
 static int ovs_dp_cmd_new(struct sk_buff *skb, struct genl_info *info)
 {
struct nlattr **a = info->attrs;
@@ -1584,7 +1609,7 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
genl_info *info)
struct datapath *dp;
struct vport *vport;
struct ovs_net *ovs_net;
-   int err, i;
+   int err;
 
err = -EINVAL;
if (!a[OVS_DP_ATTR_NAME] || !a[OVS_DP_ATTR_UPCALL_PID])
@@ -1597,35 +1622,26 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
genl_info *info)
err = -ENOMEM;
dp = kzalloc(sizeof(*dp), GFP_KERNEL);
if (dp == NULL)
-   goto err_free_reply;
+   goto err_destroy_reply;
 
ovs_dp_set_net(dp, sock_net(skb->sk));
 
/* Allocate table. */
err = ovs_flow_tbl_init(>table);
if (err)
-   goto err_free_dp;
+   goto err_destroy_dp;
 
-   dp->stats_percpu = netdev_alloc_pcpu_stats(struct dp_stats_percpu);
-   if (!dp->stats_percpu) {
-   err = -ENOMEM;
+   err = ovs_dp_stats_init(dp);
+   if (err)
goto err_destroy_table;
-   }
 
-   dp->ports = kmalloc_array(DP_VPORT_HASH_BUCKETS,
- sizeof(struct hlist_head),
- GFP_KERNEL);
-   if (!dp->ports) {
-   err = -ENOMEM;
-   goto err_destroy_percpu;
-   }
-
-   for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++)
-   INIT_HLIST_HEAD(>ports[i]);
+   err = ovs_dp_vport_init(dp);
+   if (err)
+   goto err_destroy_stats;
 
err = ovs_meters_init(dp);
if (err)
-   goto err_destroy_ports_array;
+   goto err_destroy_ports;
 
/* Set up our datapath device. */
parms.name = nla_data(a[OVS_DP_ATTR_NAME]);
@@ -1675,15 +1691,15 @@ static int ovs_dp_cmd_new(struct sk_buff *skb, struct 
genl_info *info)
 
 err_destroy_meters:
ovs_meters_exit(dp);
-err_destroy_ports_array:
+err_destroy_ports:
kfree(dp->ports);
-err_destroy_percpu:
+err_destroy_stats:
free_percpu(dp->stats_percpu);
 err_destroy_table:
ovs_flow_tbl_destroy(>table);
-err_free_dp:
+err_destroy_dp:
kfree(dp);
-err_free_reply:
+err_destroy_reply:
kfree_skb(reply);
 err:
return err;
-- 
1.8.3.1

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