From 18ae34ae1f754a3ead10e9db3de021f3a4c5d1f4 Mon Sep 17 00:00:00 2001 From: Ilya Maximets Date: Thu, 24 Oct 2019 12:55:15 +0200 Subject: [PATCH] dpif-netdev: Do not mix recirculation depth into RSS hash itself. Mixing of RSS hash with recirculation depth is useful for flow lookup because same packet after recirculation should match with different datapath rule. Setting of the mixed value back to the packet is completely unnecessary because recirculation depth is different on each recirculation, i.e. we will have different packet hash for flow lookup anyway. This should fix the issue that packets from the same flow could be directed to different buckets based on a dp_hash or different ports of a balanced bonding in case they were recirculated different number of times (e.g. due to conntrack rules). With this change, the original RSS hash will remain the same making it possible to calculate equal dp_hash values for such packets. Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2019-September/363127.html Fixes: 048963aa8507 ("dpif-netdev: Reset RSS hash when recirculating.") Signed-off-by: Ilya Maximets Acked-by: Jan Scheurich --- lib/dpif-netdev.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 4546b55e8..c09b8fd95 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -6288,7 +6288,6 @@ dpif_netdev_packet_get_rss_hash(struct dp_packet *packet, recirc_depth = *recirc_depth_get_unsafe(); if (OVS_UNLIKELY(recirc_depth)) { hash = hash_finish(hash, recirc_depth); - dp_packet_set_rss_hash(packet, hash); } return hash; } -- 2.39.5