From 58f8f0e703234efbd915009d184dba7c3c90059b Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 17 Dec 2010 14:58:52 -0800 Subject: [PATCH] datapath: Avoid calling flow_hash() twice for the same key. This is a small optimization for the case where a new flow is being added to the flow table. Signed-off-by: Ben Pfaff Acked-by: Jesse Gross --- datapath/datapath.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index cf163234..b95c8f25 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; -- 2.30.2