mlxsw: spectrum_router: Access nhgi->rif through a helper
To abstract away deduction of RIF from the corresponding next hop group info (NHGI), mlxsw currently uses a macro. In its current form, that macro is impossible to extend to more general computation. Therefore introduce a helper, mlxsw_sp_nhgi_rif(), and use it throughout. This will make it possible to change the deduction path easily later on. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Amit Cohen <amcohen@nvidia.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
69f4ba177d
commit
532b6e2bbc
@ -2966,9 +2966,14 @@ struct mlxsw_sp_nexthop_group_info {
|
||||
is_resilient:1;
|
||||
struct list_head list; /* member in nh_res_grp_list */
|
||||
struct mlxsw_sp_nexthop nexthops[];
|
||||
#define nh_rif nexthops[0].rif
|
||||
};
|
||||
|
||||
static struct mlxsw_sp_rif *
|
||||
mlxsw_sp_nhgi_rif(const struct mlxsw_sp_nexthop_group_info *nhgi)
|
||||
{
|
||||
return nhgi->nexthops[0].rif;
|
||||
}
|
||||
|
||||
struct mlxsw_sp_nexthop_group_vr_key {
|
||||
u16 vr_id;
|
||||
enum mlxsw_sp_l3proto proto;
|
||||
@ -5510,7 +5515,7 @@ mlxsw_sp_fib_entry_should_offload(const struct mlxsw_sp_fib_entry *fib_entry)
|
||||
case MLXSW_SP_FIB_ENTRY_TYPE_REMOTE:
|
||||
return !!nh_group->nhgi->adj_index_valid;
|
||||
case MLXSW_SP_FIB_ENTRY_TYPE_LOCAL:
|
||||
return !!nh_group->nhgi->nh_rif;
|
||||
return !!mlxsw_sp_nhgi_rif(nh_group->nhgi);
|
||||
case MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE:
|
||||
case MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP:
|
||||
case MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP:
|
||||
@ -5772,7 +5777,8 @@ static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
|
||||
trap_action = MLXSW_REG_RALUE_TRAP_ACTION_NOP;
|
||||
adjacency_index = nhgi->adj_index;
|
||||
ecmp_size = nhgi->ecmp_size;
|
||||
} else if (!nhgi->adj_index_valid && nhgi->count && nhgi->nh_rif) {
|
||||
} else if (!nhgi->adj_index_valid && nhgi->count &&
|
||||
mlxsw_sp_nhgi_rif(nhgi)) {
|
||||
trap_action = MLXSW_REG_RALUE_TRAP_ACTION_NOP;
|
||||
adjacency_index = mlxsw_sp->router->adj_trap_index;
|
||||
ecmp_size = 1;
|
||||
@ -5791,7 +5797,7 @@ static int mlxsw_sp_fib_entry_op_local(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_fib_entry *fib_entry,
|
||||
enum mlxsw_reg_ralue_op op)
|
||||
{
|
||||
struct mlxsw_sp_rif *rif = fib_entry->nh_group->nhgi->nh_rif;
|
||||
struct mlxsw_sp_rif *rif = mlxsw_sp_nhgi_rif(fib_entry->nh_group->nhgi);
|
||||
enum mlxsw_reg_ralue_trap_action trap_action;
|
||||
char ralue_pl[MLXSW_REG_RALUE_LEN];
|
||||
u16 trap_id = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user