[ovs-dev] [PATCH 3/3] datapath: lisp: Use skb rxhash for source port.

Pravin B Shelar pshelar at nicira.com
Wed Dec 4 19:26:44 UTC 2013


Rather than using complete flow hash, we can use skb->rxhash for
calculating source port. Similar calculation is done by vxlan.

Signed-off-by: Pravin B Shelar <pshelar at nicira.com>
---
 datapath/vport-lisp.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/datapath/vport-lisp.c b/datapath/vport-lisp.c
index e4e603f..c2698ae 100644
--- a/datapath/vport-lisp.c
+++ b/datapath/vport-lisp.c
@@ -165,12 +165,17 @@ static __be64 instance_id_to_tunnel_id(__u8 *iid)
  */
 static u16 get_src_port(struct sk_buff *skb)
 {
-	int low;
-	int high;
+	u32 hash = skb_get_rxhash(skb);
 	unsigned int range;
-	struct sw_flow_key *pkt_key = OVS_CB(skb)->pkt_key;
-	u32 hash = jhash2((const u32 *)pkt_key,
-			  sizeof(*pkt_key) / sizeof(u32), 0);
+	int high;
+	int low;
+
+	if (!hash) {
+		struct sw_flow_key *pkt_key = OVS_CB(skb)->pkt_key;
+
+		hash = jhash2((const u32 *)pkt_key,
+			    sizeof(*pkt_key) / sizeof(u32), 0);
+	}
 
 	inet_get_local_port_range(&low, &high);
 	range = (high - low) + 1;
-- 
1.7.1




More information about the dev mailing list