]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Optimize the usage of jhash
authorDonald Sharp <sharpd@nvidia.com>
Sat, 16 Mar 2024 00:42:39 +0000 (20:42 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Tue, 29 Oct 2024 18:11:06 +0000 (14:11 -0400)
There are a bunch of jhash_1word uses.  Let's convert
to jhash_3word and get rid of some calls.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_attr.c

index b62319b211e46c56c65155fb9f11e8e599a505eb..209dcd2288309726c92e531b8862d6eeb91ae5cd 100644 (file)
@@ -697,14 +697,9 @@ static uint32_t srv6_l3vpn_hash_key_make(const void *p)
        uint32_t key = 0;
 
        key = jhash(&l3vpn->sid, 16, key);
-       key = jhash_1word(l3vpn->sid_flags, key);
-       key = jhash_1word(l3vpn->endpoint_behavior, key);
-       key = jhash_1word(l3vpn->loc_block_len, key);
-       key = jhash_1word(l3vpn->loc_node_len, key);
-       key = jhash_1word(l3vpn->func_len, key);
-       key = jhash_1word(l3vpn->arg_len, key);
-       key = jhash_1word(l3vpn->transposition_len, key);
-       key = jhash_1word(l3vpn->transposition_offset, key);
+       key = jhash_3words(l3vpn->sid_flags, l3vpn->endpoint_behavior, l3vpn->loc_block_len, key);
+       key = jhash_3words(l3vpn->loc_node_len, l3vpn->func_len, l3vpn->arg_len, key);
+       key = jhash_2words(l3vpn->transposition_len, l3vpn->transposition_offset, key);
        return key;
 }
 
@@ -863,15 +858,11 @@ unsigned int attrhash_key_make(const void *p)
        if (vnc_subtlvs)
                MIX(encap_hash_key_make(vnc_subtlvs));
 #endif
-       MIX(attr->mp_nexthop_len);
+       MIX3(attr->mp_nexthop_len, attr->rmap_table_id, attr->nh_type);
        key = jhash(attr->mp_nexthop_global.s6_addr, IPV6_MAX_BYTELEN, key);
        key = jhash(attr->mp_nexthop_local.s6_addr, IPV6_MAX_BYTELEN, key);
        MIX3(attr->nh_ifindex, attr->nh_lla_ifindex, attr->distance);
-       MIX(attr->rmap_table_id);
-       MIX(attr->nh_type);
-       MIX(attr->bh_type);
-       MIX(attr->otc);
-       MIX(bgp_attr_get_aigp_metric(attr));
+       MIX3(attr->bh_type, attr->otc, bgp_attr_get_aigp_metric(attr));
 
        return key;
 }