[ovs-dev] [PATCH] datapath: Avoid calling flow_hash() twice for the same key.
Ben Pfaff
blp at nicira.com
Fri Dec 17 22:44:41 UTC 2010
This is a small optimization for the case where a new flow is being added
to the flow table.
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
datapath/datapath.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/datapath/datapath.c b/datapath/datapath.c
index cf16323..b95c8f2 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -817,9 +817,11 @@ static int do_put_flow(struct datapath *dp, struct odp_flow_put *uf,
struct sw_flow *flow;
struct tbl *table;
int error;
+ u32 hash;
+ hash = flow_hash(&uf->flow.key);
table = get_table_protected(dp);
- flow_node = tbl_lookup(table, &uf->flow.key, flow_hash(&uf->flow.key), flow_cmp);
+ flow_node = tbl_lookup(table, &uf->flow.key, hash, flow_cmp);
if (!flow_node) {
/* No such flow. */
struct sw_flow_actions *acts;
@@ -853,7 +855,7 @@ static int do_put_flow(struct datapath *dp, struct odp_flow_put *uf,
rcu_assign_pointer(flow->sf_acts, acts);
/* Put flow in bucket. */
- error = tbl_insert(table, &flow->tbl_node, flow_hash(&flow->key));
+ error = tbl_insert(table, &flow->tbl_node, hash);
if (error)
goto error_free_flow_acts;
--
1.7.1
More information about the dev
mailing list