All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/3] net: openvswitch: improve codes
@ 2020-08-24  7:35 xiangxia.m.yue
  2020-08-24  7:36 ` [PATCH net-next v2 1/3] net: openvswitch: improve coding style xiangxia.m.yue
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: xiangxia.m.yue @ 2020-08-24  7:35 UTC (permalink / raw)
  To: davem, pshelar, xiyou.wangcong; +Cc: dev, netdev, Tonghao Zhang

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>

This series patches are not bug fix, just improve codes.

Tonghao Zhang (3):
  net: openvswitch: improve coding style
  net: openvswitch: refactor flow free function
  net: openvswitch: remove unused keep_flows

 net/openvswitch/actions.c    |  5 +--
 net/openvswitch/datapath.c   | 35 ++++++++++---------
 net/openvswitch/flow_table.c | 65 +++++++++++++++++-------------------
 net/openvswitch/flow_table.h |  1 -
 net/openvswitch/vport.c      |  7 ++--
 5 files changed, 57 insertions(+), 56 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH net-next v2 1/3] net: openvswitch: improve coding style
  2020-08-24  7:35 [PATCH net-next v2 0/3] net: openvswitch: improve codes xiangxia.m.yue
@ 2020-08-24  7:36 ` xiangxia.m.yue
  2020-08-26 19:23   ` Pravin Shelar
  2020-08-24  7:36 ` [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
  2020-08-24  7:36 ` [PATCH net-next v2 3/3] net: openvswitch: remove unused keep_flows xiangxia.m.yue
  2 siblings, 1 reply; 10+ messages in thread
From: xiangxia.m.yue @ 2020-08-24  7:36 UTC (permalink / raw)
  To: davem, pshelar, xiyou.wangcong; +Cc: dev, netdev, Tonghao Zhang

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>

Not change the logic, just improve coding style.

Cc: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
 net/openvswitch/actions.c    |  5 ++--
 net/openvswitch/datapath.c   | 35 ++++++++++++++++------------
 net/openvswitch/flow_table.c | 44 ++++++++++++++++++++----------------
 net/openvswitch/vport.c      |  7 +++---
 4 files changed, 51 insertions(+), 40 deletions(-)

diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c
index 2611657f40ca..573b9ad97e7d 100644
--- a/net/openvswitch/actions.c
+++ b/net/openvswitch/actions.c
@@ -742,7 +742,8 @@ static int set_sctp(struct sk_buff *skb, struct sw_flow_key *flow_key,
 	return 0;
 }
 
-static int ovs_vport_output(struct net *net, struct sock *sk, struct sk_buff *skb)
+static int ovs_vport_output(struct net *net, struct sock *sk,
+			    struct sk_buff *skb)
 {
 	struct ovs_frag_data *data = this_cpu_ptr(&ovs_frag_data_storage);
 	struct vport *vport = data->vport;
@@ -925,7 +926,7 @@ static int output_userspace(struct datapath *dp, struct sk_buff *skb,
 	upcall.mru = OVS_CB(skb)->mru;
 
 	for (a = nla_data(attr), rem = nla_len(attr); rem > 0;
-		 a = nla_next(a, &rem)) {
+	     a = nla_next(a, &rem)) {
 		switch (nla_type(a)) {
 		case OVS_USERSPACE_ATTR_USERDATA:
 			upcall.userdata = a;
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 6e47ef7ef036..bb5192909fa3 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -182,7 +182,7 @@ struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no)
 
 	head = vport_hash_bucket(dp, port_no);
 	hlist_for_each_entry_rcu(vport, head, dp_hash_node,
-				lockdep_ovsl_is_held()) {
+				 lockdep_ovsl_is_held()) {
 		if (vport->port_no == port_no)
 			return vport;
 	}
@@ -254,7 +254,7 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
 	error = ovs_execute_actions(dp, skb, sf_acts, key);
 	if (unlikely(error))
 		net_dbg_ratelimited("ovs: action execution error on datapath %s: %d\n",
-							ovs_dp_name(dp), error);
+				    ovs_dp_name(dp), error);
 
 	stats_counter = &stats->n_hit;
 
@@ -302,7 +302,7 @@ int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
 static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,
 			     const struct sw_flow_key *key,
 			     const struct dp_upcall_info *upcall_info,
-				 uint32_t cutlen)
+			     uint32_t cutlen)
 {
 	unsigned int gso_type = skb_shinfo(skb)->gso_type;
 	struct sw_flow_key later_key;
@@ -1080,11 +1080,12 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
 }
 
 /* Factor out action copy to avoid "Wframe-larger-than=1024" warning. */
-static noinline_for_stack struct sw_flow_actions *get_flow_actions(struct net *net,
-						const struct nlattr *a,
-						const struct sw_flow_key *key,
-						const struct sw_flow_mask *mask,
-						bool log)
+static noinline_for_stack
+struct sw_flow_actions *get_flow_actions(struct net *net,
+					 const struct nlattr *a,
+					 const struct sw_flow_key *key,
+					 const struct sw_flow_mask *mask,
+					 bool log)
 {
 	struct sw_flow_actions *acts;
 	struct sw_flow_key masked_key;
@@ -1383,7 +1384,8 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
 
 			ovs_notify(&dp_flow_genl_family, reply, info);
 		} else {
-			netlink_set_err(sock_net(skb->sk)->genl_sock, 0, 0, PTR_ERR(reply));
+			netlink_set_err(sock_net(skb->sk)->genl_sock, 0, 0,
+					PTR_ERR(reply));
 		}
 	}
 
@@ -1513,7 +1515,7 @@ static int ovs_dp_cmd_fill_info(struct datapath *dp, struct sk_buff *skb,
 	int err;
 
 	ovs_header = genlmsg_put(skb, portid, seq, &dp_datapath_genl_family,
-				   flags, cmd);
+				 flags, cmd);
 	if (!ovs_header)
 		goto error;
 
@@ -1572,11 +1574,13 @@ static struct datapath *lookup_datapath(struct net *net,
 	return dp ? dp : ERR_PTR(-ENODEV);
 }
 
-static void ovs_dp_reset_user_features(struct sk_buff *skb, struct genl_info *info)
+static void ovs_dp_reset_user_features(struct sk_buff *skb,
+				       struct genl_info *info)
 {
 	struct datapath *dp;
 
-	dp = lookup_datapath(sock_net(skb->sk), info->userhdr, info->attrs);
+	dp = lookup_datapath(sock_net(skb->sk), info->userhdr,
+			     info->attrs);
 	if (IS_ERR(dp))
 		return;
 
@@ -2075,7 +2079,7 @@ static unsigned int ovs_get_max_headroom(struct datapath *dp)
 
 	for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++) {
 		hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node,
-					lockdep_ovsl_is_held()) {
+					 lockdep_ovsl_is_held()) {
 			dev = vport->dev;
 			dev_headroom = netdev_get_fwd_headroom(dev);
 			if (dev_headroom > max_headroom)
@@ -2095,7 +2099,7 @@ static void ovs_update_headroom(struct datapath *dp, unsigned int new_headroom)
 	dp->max_headroom = new_headroom;
 	for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++)
 		hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node,
-					lockdep_ovsl_is_held())
+					 lockdep_ovsl_is_held())
 			netdev_set_rx_headroom(vport->dev, new_headroom);
 }
 
@@ -2551,7 +2555,8 @@ static int __init dp_init(void)
 {
 	int err;
 
-	BUILD_BUG_ON(sizeof(struct ovs_skb_cb) > sizeof_field(struct sk_buff, cb));
+	BUILD_BUG_ON(sizeof(struct ovs_skb_cb) >
+		     sizeof_field(struct sk_buff, cb));
 
 	pr_info("Open vSwitch switching datapath\n");
 
diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c
index e2235849a57e..4b7ab62d0e1a 100644
--- a/net/openvswitch/flow_table.c
+++ b/net/openvswitch/flow_table.c
@@ -111,9 +111,11 @@ static void flow_free(struct sw_flow *flow)
 	if (ovs_identifier_is_key(&flow->id))
 		kfree(flow->id.unmasked_key);
 	if (flow->sf_acts)
-		ovs_nla_free_flow_actions((struct sw_flow_actions __force *)flow->sf_acts);
+		ovs_nla_free_flow_actions((struct sw_flow_actions __force *)
+					  flow->sf_acts);
 	/* We open code this to make sure cpu 0 is always considered */
-	for (cpu = 0; cpu < nr_cpu_ids; cpu = cpumask_next(cpu, &flow->cpu_used_mask))
+	for (cpu = 0; cpu < nr_cpu_ids;
+	     cpu = cpumask_next(cpu, &flow->cpu_used_mask))
 		if (flow->stats[cpu])
 			kmem_cache_free(flow_stats_cache,
 					(struct sw_flow_stats __force *)flow->stats[cpu]);
@@ -192,7 +194,7 @@ static void tbl_mask_array_reset_counters(struct mask_array *ma)
 	 * zero based counter we store the value at reset, and subtract it
 	 * later when processing.
 	 */
-	for (i = 0; i < ma->max; i++)  {
+	for (i = 0; i < ma->max; i++) {
 		ma->masks_usage_zero_cntr[i] = 0;
 
 		for_each_possible_cpu(cpu) {
@@ -273,7 +275,7 @@ static int tbl_mask_array_add_mask(struct flow_table *tbl,
 
 	if (ma_count >= ma->max) {
 		err = tbl_mask_array_realloc(tbl, ma->max +
-					      MASK_ARRAY_SIZE_MIN);
+					     MASK_ARRAY_SIZE_MIN);
 		if (err)
 			return err;
 
@@ -288,7 +290,7 @@ static int tbl_mask_array_add_mask(struct flow_table *tbl,
 	BUG_ON(ovsl_dereference(ma->masks[ma_count]));
 
 	rcu_assign_pointer(ma->masks[ma_count], new);
-	WRITE_ONCE(ma->count, ma_count +1);
+	WRITE_ONCE(ma->count, ma_count + 1);
 
 	return 0;
 }
@@ -309,10 +311,10 @@ static void tbl_mask_array_del_mask(struct flow_table *tbl,
 	return;
 
 found:
-	WRITE_ONCE(ma->count, ma_count -1);
+	WRITE_ONCE(ma->count, ma_count - 1);
 
-	rcu_assign_pointer(ma->masks[i], ma->masks[ma_count -1]);
-	RCU_INIT_POINTER(ma->masks[ma_count -1], NULL);
+	rcu_assign_pointer(ma->masks[i], ma->masks[ma_count - 1]);
+	RCU_INIT_POINTER(ma->masks[ma_count - 1], NULL);
 
 	kfree_rcu(mask, rcu);
 
@@ -448,16 +450,17 @@ int ovs_flow_tbl_init(struct flow_table *table)
 
 static void flow_tbl_destroy_rcu_cb(struct rcu_head *rcu)
 {
-	struct table_instance *ti = container_of(rcu, struct table_instance, rcu);
+	struct table_instance *ti =
+		container_of(rcu, struct table_instance, rcu);
 
 	__table_instance_destroy(ti);
 }
 
 static void table_instance_flow_free(struct flow_table *table,
-				  struct table_instance *ti,
-				  struct table_instance *ufid_ti,
-				  struct sw_flow *flow,
-				  bool count)
+				     struct table_instance *ti,
+				     struct table_instance *ufid_ti,
+				     struct sw_flow *flow,
+				     bool count)
 {
 	hlist_del_rcu(&flow->flow_table.node[ti->node_ver]);
 	if (count)
@@ -484,9 +487,9 @@ void table_instance_flow_flush(struct flow_table *table,
 		return;
 
 	for (i = 0; i < ti->n_buckets; i++) {
-		struct sw_flow *flow;
 		struct hlist_head *head = &ti->buckets[i];
 		struct hlist_node *n;
+		struct sw_flow *flow;
 
 		hlist_for_each_entry_safe(flow, n, head,
 					  flow_table.node[ti->node_ver]) {
@@ -661,7 +664,7 @@ static int flow_key_start(const struct sw_flow_key *key)
 		return 0;
 	else
 		return rounddown(offsetof(struct sw_flow_key, phy),
-					  sizeof(long));
+				 sizeof(long));
 }
 
 static bool cmp_key(const struct sw_flow_key *key1,
@@ -673,7 +676,7 @@ static bool cmp_key(const struct sw_flow_key *key1,
 	long diffs = 0;
 	int i;
 
-	for (i = key_start; i < key_end;  i += sizeof(long))
+	for (i = key_start; i < key_end; i += sizeof(long))
 		diffs |= *cp1++ ^ *cp2++;
 
 	return diffs == 0;
@@ -713,7 +716,7 @@ static struct sw_flow *masked_flow_lookup(struct table_instance *ti,
 	(*n_mask_hit)++;
 
 	hlist_for_each_entry_rcu(flow, head, flow_table.node[ti->node_ver],
-				lockdep_ovsl_is_held()) {
+				 lockdep_ovsl_is_held()) {
 		if (flow->mask == mask && flow->flow_table.hash == hash &&
 		    flow_cmp_masked_key(flow, &masked_key, &mask->range))
 			return flow;
@@ -897,7 +900,8 @@ static bool ovs_flow_cmp_ufid(const struct sw_flow *flow,
 	return !memcmp(flow->id.ufid, sfid->ufid, sfid->ufid_len);
 }
 
-bool ovs_flow_cmp(const struct sw_flow *flow, const struct sw_flow_match *match)
+bool ovs_flow_cmp(const struct sw_flow *flow,
+		  const struct sw_flow_match *match)
 {
 	if (ovs_identifier_is_ufid(&flow->id))
 		return flow_cmp_masked_key(flow, match->key, &match->range);
@@ -916,7 +920,7 @@ struct sw_flow *ovs_flow_tbl_lookup_ufid(struct flow_table *tbl,
 	hash = ufid_hash(ufid);
 	head = find_bucket(ti, hash);
 	hlist_for_each_entry_rcu(flow, head, ufid_table.node[ti->node_ver],
-				lockdep_ovsl_is_held()) {
+				 lockdep_ovsl_is_held()) {
 		if (flow->ufid_table.hash == hash &&
 		    ovs_flow_cmp_ufid(flow, ufid))
 			return flow;
@@ -1107,7 +1111,7 @@ void ovs_flow_masks_rebalance(struct flow_table *table)
 	if (!masks_and_count)
 		return;
 
-	for (i = 0; i < ma->max; i++)  {
+	for (i = 0; i < ma->max; i++) {
 		struct sw_flow_mask *mask;
 		unsigned int start;
 		int cpu;
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c
index 0d44c5c013fa..82d801f063b7 100644
--- a/net/openvswitch/vport.c
+++ b/net/openvswitch/vport.c
@@ -98,7 +98,7 @@ struct vport *ovs_vport_locate(const struct net *net, const char *name)
 	struct vport *vport;
 
 	hlist_for_each_entry_rcu(vport, bucket, hash_node,
-				lockdep_ovsl_is_held())
+				 lockdep_ovsl_is_held())
 		if (!strcmp(name, ovs_vport_name(vport)) &&
 		    net_eq(ovs_dp_get_net(vport->dp), net))
 			return vport;
@@ -118,7 +118,7 @@ struct vport *ovs_vport_locate(const struct net *net, const char *name)
  * vport_free().
  */
 struct vport *ovs_vport_alloc(int priv_size, const struct vport_ops *ops,
-			  const struct vport_parms *parms)
+			      const struct vport_parms *parms)
 {
 	struct vport *vport;
 	size_t alloc_size;
@@ -397,7 +397,8 @@ int ovs_vport_get_upcall_portids(const struct vport *vport,
  *
  * Returns the portid of the target socket.  Must be called with rcu_read_lock.
  */
-u32 ovs_vport_find_upcall_portid(const struct vport *vport, struct sk_buff *skb)
+u32 ovs_vport_find_upcall_portid(const struct vport *vport,
+				 struct sk_buff *skb)
 {
 	struct vport_portids *ids;
 	u32 ids_index;
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function
  2020-08-24  7:35 [PATCH net-next v2 0/3] net: openvswitch: improve codes xiangxia.m.yue
  2020-08-24  7:36 ` [PATCH net-next v2 1/3] net: openvswitch: improve coding style xiangxia.m.yue
@ 2020-08-24  7:36 ` xiangxia.m.yue
  2020-08-24 13:09   ` David Miller
  2020-08-24  7:36 ` [PATCH net-next v2 3/3] net: openvswitch: remove unused keep_flows xiangxia.m.yue
  2 siblings, 1 reply; 10+ messages in thread
From: xiangxia.m.yue @ 2020-08-24  7:36 UTC (permalink / raw)
  To: davem, pshelar, xiyou.wangcong; +Cc: dev, netdev, Tonghao Zhang

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>

Decrease table->count and ufid_count unconditionally,
because we only don't use count or ufid_count to count
when flushing the flows. To simplify the codes, we
remove the "count" argument of table_instance_flow_free.

To avoid a bug when deleting flows in the future, add
BUG_ON in flush flows function.

Cc: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
v2:
add more details why refactor this function.
---
 net/openvswitch/flow_table.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c
index 4b7ab62d0e1a..f8a21dd80e72 100644
--- a/net/openvswitch/flow_table.c
+++ b/net/openvswitch/flow_table.c
@@ -459,18 +459,14 @@ static void flow_tbl_destroy_rcu_cb(struct rcu_head *rcu)
 static void table_instance_flow_free(struct flow_table *table,
 				     struct table_instance *ti,
 				     struct table_instance *ufid_ti,
-				     struct sw_flow *flow,
-				     bool count)
+				     struct sw_flow *flow)
 {
 	hlist_del_rcu(&flow->flow_table.node[ti->node_ver]);
-	if (count)
-		table->count--;
+	table->count--;
 
 	if (ovs_identifier_is_ufid(&flow->id)) {
 		hlist_del_rcu(&flow->ufid_table.node[ufid_ti->node_ver]);
-
-		if (count)
-			table->ufid_count--;
+		table->ufid_count--;
 	}
 
 	flow_mask_remove(table, flow->mask);
@@ -495,10 +491,13 @@ void table_instance_flow_flush(struct flow_table *table,
 					  flow_table.node[ti->node_ver]) {
 
 			table_instance_flow_free(table, ti, ufid_ti,
-						 flow, false);
+						 flow);
 			ovs_flow_free(flow, true);
 		}
 	}
+
+	BUG_ON(table->count != 0);
+	BUG_ON(table->ufid_count != 0);
 }
 
 static void table_instance_destroy(struct table_instance *ti,
@@ -635,8 +634,6 @@ int ovs_flow_tbl_flush(struct flow_table *flow_table)
 	rcu_assign_pointer(flow_table->ti, new_ti);
 	rcu_assign_pointer(flow_table->ufid_ti, new_ufid_ti);
 	flow_table->last_rehash = jiffies;
-	flow_table->count = 0;
-	flow_table->ufid_count = 0;
 
 	table_instance_flow_flush(flow_table, old_ti, old_ufid_ti);
 	table_instance_destroy(old_ti, old_ufid_ti);
@@ -954,7 +951,7 @@ void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow)
 	struct table_instance *ufid_ti = ovsl_dereference(table->ufid_ti);
 
 	BUG_ON(table->count == 0);
-	table_instance_flow_free(table, ti, ufid_ti, flow, true);
+	table_instance_flow_free(table, ti, ufid_ti, flow);
 }
 
 static struct sw_flow_mask *mask_alloc(void)
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v2 3/3] net: openvswitch: remove unused keep_flows
  2020-08-24  7:35 [PATCH net-next v2 0/3] net: openvswitch: improve codes xiangxia.m.yue
  2020-08-24  7:36 ` [PATCH net-next v2 1/3] net: openvswitch: improve coding style xiangxia.m.yue
  2020-08-24  7:36 ` [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
@ 2020-08-24  7:36 ` xiangxia.m.yue
  2 siblings, 0 replies; 10+ messages in thread
From: xiangxia.m.yue @ 2020-08-24  7:36 UTC (permalink / raw)
  To: davem, pshelar, xiyou.wangcong; +Cc: dev, netdev, Tonghao Zhang

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>

keep_flows was introduced by [1], which used as flag to delete flows or not.
When rehashing or expanding the table instance, we will not flush the flows.
Now don't use it anymore, remove it.

[1] - https://github.com/openvswitch/ovs/commit/acd051f1761569205827dc9b037e15568a8d59f8
Cc: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
v2:
change unnused -> unused
---
 net/openvswitch/flow_table.c | 6 ------
 net/openvswitch/flow_table.h | 1 -
 2 files changed, 7 deletions(-)

diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c
index f8a21dd80e72..0473758035b5 100644
--- a/net/openvswitch/flow_table.c
+++ b/net/openvswitch/flow_table.c
@@ -166,7 +166,6 @@ static struct table_instance *table_instance_alloc(int new_size)
 
 	ti->n_buckets = new_size;
 	ti->node_ver = 0;
-	ti->keep_flows = false;
 	get_random_bytes(&ti->hash_seed, sizeof(u32));
 
 	return ti;
@@ -479,9 +478,6 @@ void table_instance_flow_flush(struct flow_table *table,
 {
 	int i;
 
-	if (ti->keep_flows)
-		return;
-
 	for (i = 0; i < ti->n_buckets; i++) {
 		struct hlist_head *head = &ti->buckets[i];
 		struct hlist_node *n;
@@ -598,8 +594,6 @@ static void flow_table_copy_flows(struct table_instance *old,
 						 lockdep_ovsl_is_held())
 				table_instance_insert(new, flow);
 	}
-
-	old->keep_flows = true;
 }
 
 static struct table_instance *table_instance_rehash(struct table_instance *ti,
diff --git a/net/openvswitch/flow_table.h b/net/openvswitch/flow_table.h
index 6e7d4ac59353..d8fb7a3a3dfd 100644
--- a/net/openvswitch/flow_table.h
+++ b/net/openvswitch/flow_table.h
@@ -53,7 +53,6 @@ struct table_instance {
 	struct rcu_head rcu;
 	int node_ver;
 	u32 hash_seed;
-	bool keep_flows;
 };
 
 struct flow_table {
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function
  2020-08-24  7:36 ` [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
@ 2020-08-24 13:09   ` David Miller
  2020-08-24 13:56     ` Tonghao Zhang
  0 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2020-08-24 13:09 UTC (permalink / raw)
  To: xiangxia.m.yue; +Cc: pshelar, xiyou.wangcong, dev, netdev

From: xiangxia.m.yue@gmail.com
Date: Mon, 24 Aug 2020 15:36:01 +0800

> To avoid a bug when deleting flows in the future, add
> BUG_ON in flush flows function.

BUG_ON() is too severe, I think WARN_ON() or similar are sufficient
because the kernel can try to continue operating if this condition is
detected.

And you can force the values to zero in such a situation.

Thank you.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function
  2020-08-24 13:09   ` David Miller
@ 2020-08-24 13:56     ` Tonghao Zhang
  0 siblings, 0 replies; 10+ messages in thread
From: Tonghao Zhang @ 2020-08-24 13:56 UTC (permalink / raw)
  To: David Miller
  Cc: Pravin Shelar, Cong Wang, ovs dev, Linux Kernel Network Developers

On Mon, Aug 24, 2020 at 9:09 PM David Miller <davem@davemloft.net> wrote:
>
> From: xiangxia.m.yue@gmail.com
> Date: Mon, 24 Aug 2020 15:36:01 +0800
>
> > To avoid a bug when deleting flows in the future, add
> > BUG_ON in flush flows function.
>
> BUG_ON() is too severe, I think WARN_ON() or similar are sufficient
> because the kernel can try to continue operating if this condition is
> detected.
>
> And you can force the values to zero in such a situation.
Thanks, David
will be changed to:

diff --git a/net/openvswitch/flow_table.c b/net/openvswitch/flow_table.c
index 0473758035b5..5378282e1d13 100644
--- a/net/openvswitch/flow_table.c
+++ b/net/openvswitch/flow_table.c
@@ -492,8 +492,11 @@ void table_instance_flow_flush(struct flow_table *table,
                }
        }

-       BUG_ON(table->count != 0);
-       BUG_ON(table->ufid_count != 0);
+       if (WARN_ON(table->count != 0 ||
+                   table->ufid_count != 0)) {
+               table->count = 0;
+               table->ufid_count = 0
+       }
 }

> Thank you.



-- 
Best regards, Tonghao

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 1/3] net: openvswitch: improve coding style
  2020-08-24  7:36 ` [PATCH net-next v2 1/3] net: openvswitch: improve coding style xiangxia.m.yue
@ 2020-08-26 19:23   ` Pravin Shelar
  2020-08-31 13:00     ` Tonghao Zhang
  0 siblings, 1 reply; 10+ messages in thread
From: Pravin Shelar @ 2020-08-26 19:23 UTC (permalink / raw)
  To: Tonghao Zhang
  Cc: David S. Miller, Cong Wang, ovs dev, Linux Kernel Network Developers

On Mon, Aug 24, 2020 at 12:37 AM <xiangxia.m.yue@gmail.com> wrote:
>
> From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
>
> Not change the logic, just improve coding style.
>
> Cc: Pravin B Shelar <pshelar@ovn.org>
> Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>

Acked-by: Pravin B Shelar <pshelar@ovn.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 1/3] net: openvswitch: improve coding style
  2020-08-26 19:23   ` Pravin Shelar
@ 2020-08-31 13:00     ` Tonghao Zhang
  2020-08-31 18:41       ` David Miller
  0 siblings, 1 reply; 10+ messages in thread
From: Tonghao Zhang @ 2020-08-31 13:00 UTC (permalink / raw)
  To: David Miller
  Cc: Cong Wang, ovs dev, Linux Kernel Network Developers, Pravin Shelar

On Thu, Aug 27, 2020 at 3:23 AM Pravin Shelar <pravin.ovn@gmail.com> wrote:
>
> On Mon, Aug 24, 2020 at 12:37 AM <xiangxia.m.yue@gmail.com> wrote:
> >
> > From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> >
> > Not change the logic, just improve coding style.
> >
> > Cc: Pravin B Shelar <pshelar@ovn.org>
> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
>
> Acked-by: Pravin B Shelar <pshelar@ovn.org>
Hi David
This series patches were ACKed by Pravin. Will you have a plan to
apply them to the net-next ? or I sent v4 with ACK tag.


-- 
Best regards, Tonghao

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 1/3] net: openvswitch: improve coding style
  2020-08-31 13:00     ` Tonghao Zhang
@ 2020-08-31 18:41       ` David Miller
  2020-09-01 12:32         ` Tonghao Zhang
  0 siblings, 1 reply; 10+ messages in thread
From: David Miller @ 2020-08-31 18:41 UTC (permalink / raw)
  To: xiangxia.m.yue; +Cc: xiyou.wangcong, dev, netdev, pshelar

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date: Mon, 31 Aug 2020 21:00:28 +0800

> On Thu, Aug 27, 2020 at 3:23 AM Pravin Shelar <pravin.ovn@gmail.com> wrote:
>>
>> On Mon, Aug 24, 2020 at 12:37 AM <xiangxia.m.yue@gmail.com> wrote:
>> >
>> > From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
>> >
>> > Not change the logic, just improve coding style.
>> >
>> > Cc: Pravin B Shelar <pshelar@ovn.org>
>> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
>>
>> Acked-by: Pravin B Shelar <pshelar@ovn.org>
> Hi David
> This series patches were ACKed by Pravin. Will you have a plan to
> apply them to the net-next ? or I sent v4 with ACK tag.

In v3 of this series Stefano Brivio asked you to add some more curly brace
changes as feedback.  So you must address this feedback and post a new
version of the series.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v2 1/3] net: openvswitch: improve coding style
  2020-08-31 18:41       ` David Miller
@ 2020-09-01 12:32         ` Tonghao Zhang
  0 siblings, 0 replies; 10+ messages in thread
From: Tonghao Zhang @ 2020-09-01 12:32 UTC (permalink / raw)
  To: David Miller
  Cc: Cong Wang, ovs dev, Linux Kernel Network Developers, Pravin Shelar

On Tue, Sep 1, 2020 at 2:41 AM David Miller <davem@davemloft.net> wrote:
>
> From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> Date: Mon, 31 Aug 2020 21:00:28 +0800
>
> > On Thu, Aug 27, 2020 at 3:23 AM Pravin Shelar <pravin.ovn@gmail.com> wrote:
> >>
> >> On Mon, Aug 24, 2020 at 12:37 AM <xiangxia.m.yue@gmail.com> wrote:
> >> >
> >> > From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> >> >
> >> > Not change the logic, just improve coding style.
> >> >
> >> > Cc: Pravin B Shelar <pshelar@ovn.org>
> >> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> >>
> >> Acked-by: Pravin B Shelar <pshelar@ovn.org>
> > Hi David
> > This series patches were ACKed by Pravin. Will you have a plan to
> > apply them to the net-next ? or I sent v4 with ACK tag.
>
> In v3 of this series Stefano Brivio asked you to add some more curly brace
> changes as feedback.  So you must address this feedback and post a new
> version of the series.
Sorry for that, I update the patch 1 in v4:



-- 
Best regards, Tonghao

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-09-01 12:38 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-24  7:35 [PATCH net-next v2 0/3] net: openvswitch: improve codes xiangxia.m.yue
2020-08-24  7:36 ` [PATCH net-next v2 1/3] net: openvswitch: improve coding style xiangxia.m.yue
2020-08-26 19:23   ` Pravin Shelar
2020-08-31 13:00     ` Tonghao Zhang
2020-08-31 18:41       ` David Miller
2020-09-01 12:32         ` Tonghao Zhang
2020-08-24  7:36 ` [PATCH net-next v2 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
2020-08-24 13:09   ` David Miller
2020-08-24 13:56     ` Tonghao Zhang
2020-08-24  7:36 ` [PATCH net-next v2 3/3] net: openvswitch: remove unused keep_flows xiangxia.m.yue

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.