netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v1 0/3] net: openvswitch: improve codes
@ 2020-08-18 10:09 xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 1/3] net: openvswitch: improve coding style xiangxia.m.yue
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: xiangxia.m.yue @ 2020-08-18 10:09 UTC (permalink / raw)
  To: dev, netdev; +Cc: pshelar, 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 unnused 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] 7+ messages in thread

* [PATCH net-next v1 1/3] net: openvswitch: improve coding style
  2020-08-18 10:09 [PATCH net-next v1 0/3] net: openvswitch: improve codes xiangxia.m.yue
@ 2020-08-18 10:09 ` xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 3/3] net: openvswitch: remove unnused keep_flows xiangxia.m.yue
  2 siblings, 0 replies; 7+ messages in thread
From: xiangxia.m.yue @ 2020-08-18 10:09 UTC (permalink / raw)
  To: dev, netdev; +Cc: pshelar, 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] 7+ messages in thread

* [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function
  2020-08-18 10:09 [PATCH net-next v1 0/3] net: openvswitch: improve codes xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 1/3] net: openvswitch: improve coding style xiangxia.m.yue
@ 2020-08-18 10:09 ` xiangxia.m.yue
  2020-08-19 22:52   ` David Miller
  2020-08-18 10:09 ` [PATCH net-next v1 3/3] net: openvswitch: remove unnused keep_flows xiangxia.m.yue
  2 siblings, 1 reply; 7+ messages in thread
From: xiangxia.m.yue @ 2020-08-18 10:09 UTC (permalink / raw)
  To: dev, netdev; +Cc: pshelar, Tonghao Zhang

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

Decrease table->count and ufid_count unconditionally,
and add BUG_ON in flush flows function.

Cc: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
 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] 7+ messages in thread

* [PATCH net-next v1 3/3] net: openvswitch: remove unnused keep_flows
  2020-08-18 10:09 [PATCH net-next v1 0/3] net: openvswitch: improve codes xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 1/3] net: openvswitch: improve coding style xiangxia.m.yue
  2020-08-18 10:09 ` [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
@ 2020-08-18 10:09 ` xiangxia.m.yue
  2 siblings, 0 replies; 7+ messages in thread
From: xiangxia.m.yue @ 2020-08-18 10:09 UTC (permalink / raw)
  To: dev, netdev; +Cc: pshelar, 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>
---
 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] 7+ messages in thread

* Re: [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function
  2020-08-18 10:09 ` [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
@ 2020-08-19 22:52   ` David Miller
       [not found]     ` <CAMDZJNVcuN29b5S0JxqzEcw4yG6S+TVSpwkiohYJMgE0TU45PA@mail.gmail.com>
  0 siblings, 1 reply; 7+ messages in thread
From: David Miller @ 2020-08-19 22:52 UTC (permalink / raw)
  To: xiangxia.m.yue; +Cc: dev, netdev, pshelar

From: xiangxia.m.yue@gmail.com
Date: Tue, 18 Aug 2020 18:09:22 +0800

> Decrease table->count and ufid_count unconditionally,

You don't explain why this is a valid transformation.

Is it a bug fix?

Can it never happen?

What are the details and how did you determine this?

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

* Re: [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function
       [not found]     ` <CAMDZJNVcuN29b5S0JxqzEcw4yG6S+TVSpwkiohYJMgE0TU45PA@mail.gmail.com>
@ 2020-08-20  1:52       ` David Miller
  2020-08-24  7:39         ` Tonghao Zhang
  0 siblings, 1 reply; 7+ messages in thread
From: David Miller @ 2020-08-20  1:52 UTC (permalink / raw)
  To: xiangxia.m.yue; +Cc: dev, netdev, pshelar

From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date: Thu, 20 Aug 2020 07:21:33 +0800

> On Thu, Aug 20, 2020 at 6:52 AM David Miller <davem@davemloft.net> wrote:
> 
>> From: xiangxia.m.yue@gmail.com
>>
>> Date: Tue, 18 Aug 2020 18:09:22 +0800
>>
>>
>>
>> > Decrease table->count and ufid_count unconditionally,
>>
>>
>>
>> You don't explain why this is a valid transformation.
>>
>>
>>
>> Is it a bug fix?
> 
> No
> 
>>
>>
>>
>> Can it never happen?
>>
>>
>>
>> What are the details and how did you determine this?
> 
> I want to simplify the codes, when flushing the flow, previous codes don't
> count the flow, because we have set them(flow counter/ufid counter)to 0.
> Now don't set counter and count flow and ufid flow when deleting them, and
> I add BUG_ON to make sure other patch no bug when flushing flow.

Add these details to your commit message, please.

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

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

On Thu, Aug 20, 2020 at 9:52 AM David Miller <davem@davemloft.net> wrote:
>
> From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> Date: Thu, 20 Aug 2020 07:21:33 +0800
>
> > On Thu, Aug 20, 2020 at 6:52 AM David Miller <davem@davemloft.net> wrote:
> >
> >> From: xiangxia.m.yue@gmail.com
> >>
> >> Date: Tue, 18 Aug 2020 18:09:22 +0800
> >>
> >>
> >>
> >> > Decrease table->count and ufid_count unconditionally,
> >>
> >>
> >>
> >> You don't explain why this is a valid transformation.
> >>
> >>
> >>
> >> Is it a bug fix?
> >
> > No
> >
> >>
> >>
> >>
> >> Can it never happen?
> >>
> >>
> >>
> >> What are the details and how did you determine this?
> >
> > I want to simplify the codes, when flushing the flow, previous codes don't
> > count the flow, because we have set them(flow counter/ufid counter)to 0.
> > Now don't set counter and count flow and ufid flow when deleting them, and
> > I add BUG_ON to make sure other patch no bug when flushing flow.
>
> Add these details to your commit message, please.
Hi David
v2 are sent, please review
http://patchwork.ozlabs.org/project/netdev/patch/20200824073602.70812-2-xiangxia.m.yue@gmail.com/
http://patchwork.ozlabs.org/project/netdev/patch/20200824073602.70812-3-xiangxia.m.yue@gmail.com/
http://patchwork.ozlabs.org/project/netdev/patch/20200824073602.70812-4-xiangxia.m.yue@gmail.com/

-- 
Best regards, Tonghao

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

end of thread, other threads:[~2020-08-24  7:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-18 10:09 [PATCH net-next v1 0/3] net: openvswitch: improve codes xiangxia.m.yue
2020-08-18 10:09 ` [PATCH net-next v1 1/3] net: openvswitch: improve coding style xiangxia.m.yue
2020-08-18 10:09 ` [PATCH net-next v1 2/3] net: openvswitch: refactor flow free function xiangxia.m.yue
2020-08-19 22:52   ` David Miller
     [not found]     ` <CAMDZJNVcuN29b5S0JxqzEcw4yG6S+TVSpwkiohYJMgE0TU45PA@mail.gmail.com>
2020-08-20  1:52       ` David Miller
2020-08-24  7:39         ` Tonghao Zhang
2020-08-18 10:09 ` [PATCH net-next v1 3/3] net: openvswitch: remove unnused keep_flows xiangxia.m.yue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).