[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