Netdev Archive on lore.kernel.org
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).