From 023d23ad89ca36966a7268890b7c1115f7477bde Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Wed, 26 Jun 2019 02:16:50 -0700 Subject: [PATCH 1/1] fib: default flow hash config for each DPO protocol type Type: fix Fixes: 59fa121f Change-Id: I9eb4fe1612734e54932228527c37bf33b705dbdb Signed-off-by: Neale Ranns --- MAINTAINERS | 5 +++++ src/vnet/dpo/load_balance.c | 22 ++++++++++++++++++++++ src/vnet/dpo/load_balance.h | 1 + src/vnet/fib/fib_path_list.c | 3 +-- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index a50c3da8602..d2af18aa16f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -172,6 +172,11 @@ I: mpls M: Neale Ranns F: src/vnet/mpls/ +VNET BIER +I: bier +M: Neale Ranns +F: src/vnet/bier/ + VNET Session Layer I: session M: Florin Coras diff --git a/src/vnet/dpo/load_balance.c b/src/vnet/dpo/load_balance.c index 939e25c08fa..f244498a077 100644 --- a/src/vnet/dpo/load_balance.c +++ b/src/vnet/dpo/load_balance.c @@ -22,6 +22,7 @@ #include #include #include +#include /* * distribution error tolerance for load-balancing @@ -188,6 +189,27 @@ format_load_balance_dpo (u8 * s, va_list * args) return (load_balance_format(lbi, LOAD_BALANCE_FORMAT_DETAIL, indent, s)); } +flow_hash_config_t +load_balance_get_default_flow_hash (dpo_proto_t lb_proto) +{ + switch (lb_proto) + { + case DPO_PROTO_IP4: + case DPO_PROTO_IP6: + return (IP_FLOW_HASH_DEFAULT); + + case DPO_PROTO_MPLS: + return (MPLS_FLOW_HASH_DEFAULT); + + case DPO_PROTO_ETHERNET: + case DPO_PROTO_BIER: + case DPO_PROTO_NSH: + break; + } + + return (0); +} + static load_balance_t * load_balance_create_i (u32 num_buckets, dpo_proto_t lb_proto, diff --git a/src/vnet/dpo/load_balance.h b/src/vnet/dpo/load_balance.h index 3f0d5ac2acb..a204b7fdc58 100644 --- a/src/vnet/dpo/load_balance.h +++ b/src/vnet/dpo/load_balance.h @@ -188,6 +188,7 @@ typedef enum load_balance_format_flags_t_ { extern index_t load_balance_create(u32 num_buckets, dpo_proto_t lb_proto, flow_hash_config_t fhc); +extern flow_hash_config_t load_balance_get_default_flow_hash(dpo_proto_t lb_proto); extern void load_balance_multipath_update( const dpo_id_t *dpo, const load_balance_path_t * raw_next_hops, diff --git a/src/vnet/fib/fib_path_list.c b/src/vnet/fib/fib_path_list.c index 7c57c807327..d3543836424 100644 --- a/src/vnet/fib/fib_path_list.c +++ b/src/vnet/fib/fib_path_list.c @@ -394,8 +394,7 @@ fib_path_list_mk_lb (fib_path_list_t *path_list, dproto, load_balance_create(vec_len(nhs), dproto, - fib_table_get_default_flow_hash_config( - dpo_proto_to_fib(dproto)))); + load_balance_get_default_flow_hash(dproto))); load_balance_multipath_update(dpo, nhs, fib_path_list_fwd_flags_2_load_balance(flags)); -- 2.16.6