]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
eth: fbnic: support RSS on IPv6 Flow Label
authorJakub Kicinski <kuba@kernel.org>
Mon, 11 Aug 2025 23:42:10 +0000 (16:42 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 14 Aug 2025 09:40:21 +0000 (11:40 +0200)
Support IPv6 Flow Label hashing. Use both inner and outer IPv6
header's Flow Label if both headers are detected. Flow Label
is unlike normal header fields, by enabling it user accepts
the unstable hash and possible reordering. Because of that
I think it's reasonable to hash over all Flow Labels we can
find, even tho we don't hash over all L3 addresses.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20250811234212.580748-3-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
drivers/net/ethernet/meta/fbnic/fbnic_rpc.c

index dc7ba8d5fc433e4c30945a9df6035c65c97099a8..461c8661eb934da21d51c8862698879ab76e0948 100644 (file)
@@ -1310,7 +1310,7 @@ fbnic_get_rss_hash_opts(struct net_device *netdev,
 #define FBNIC_L2_HASH_OPTIONS \
        (RXH_L2DA | RXH_DISCARD)
 #define FBNIC_L3_HASH_OPTIONS \
-       (FBNIC_L2_HASH_OPTIONS | RXH_IP_SRC | RXH_IP_DST)
+       (FBNIC_L2_HASH_OPTIONS | RXH_IP_SRC | RXH_IP_DST | RXH_IP6_FL)
 #define FBNIC_L4_HASH_OPTIONS \
        (FBNIC_L3_HASH_OPTIONS | RXH_L4_B_0_1 | RXH_L4_B_2_3)
 
index 8ff07b5562e3b1f4da6414af40cc45dc14c6729f..a4dc1024c0c2d50ba43e535b06542aeb87c9879d 100644 (file)
@@ -71,6 +71,8 @@ u16 fbnic_flow_hash_2_rss_en_mask(struct fbnic_net *fbn, int flow_type)
        rss_en_mask |= FBNIC_FH_2_RSSEM_BIT(IP_DST, IP_DST, flow_hash);
        rss_en_mask |= FBNIC_FH_2_RSSEM_BIT(L4_B_0_1, L4_SRC, flow_hash);
        rss_en_mask |= FBNIC_FH_2_RSSEM_BIT(L4_B_2_3, L4_DST, flow_hash);
+       rss_en_mask |= FBNIC_FH_2_RSSEM_BIT(IP6_FL, OV6_FL_LBL, flow_hash);
+       rss_en_mask |= FBNIC_FH_2_RSSEM_BIT(IP6_FL, IV6_FL_LBL, flow_hash);
 
        return rss_en_mask;
 }