[ovs-dev] [PATCH] dpif-netdev: Do not mix recirculation depth into RSS hash itself.

ychen ychen103103 at 163.com
Wed Oct 30 08:51:52 UTC 2019

I have simply verified in our testing enviroment, and it really worked!

At 2019-10-24 20:32:11, "Ilya Maximets" <i.maximets at ovn.org> wrote:
>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 <i.maximets at ovn.org>
> 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;
> }

More information about the dev mailing list