Skip to content

Commit e3a3aae

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum_router: Start using new trap adjacency entry
Start using the trap adjacency entry that was added in the previous patch and remove the existing one which is no longer needed. Note that the name of the old entry was inaccurate as the entry did not discard packets, but trapped them. Signed-off-by: Ido Schimmel <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 4bdf80b commit e3a3aae

File tree

2 files changed

+1
-52
lines changed

2 files changed

+1
-52
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -5797,41 +5797,6 @@ static int mlxsw_sp_fib_entry_commit(struct mlxsw_sp *mlxsw_sp,
57975797
return err;
57985798
}
57995799

5800-
static int mlxsw_sp_adj_discard_write(struct mlxsw_sp *mlxsw_sp)
5801-
{
5802-
enum mlxsw_reg_ratr_trap_action trap_action;
5803-
char ratr_pl[MLXSW_REG_RATR_LEN];
5804-
int err;
5805-
5806-
if (mlxsw_sp->router->adj_discard_index_valid)
5807-
return 0;
5808-
5809-
err = mlxsw_sp_kvdl_alloc(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
5810-
&mlxsw_sp->router->adj_discard_index);
5811-
if (err)
5812-
return err;
5813-
5814-
trap_action = MLXSW_REG_RATR_TRAP_ACTION_TRAP;
5815-
mlxsw_reg_ratr_pack(ratr_pl, MLXSW_REG_RATR_OP_WRITE_WRITE_ENTRY, true,
5816-
MLXSW_REG_RATR_TYPE_ETHERNET,
5817-
mlxsw_sp->router->adj_discard_index,
5818-
mlxsw_sp->router->lb_rif_index);
5819-
mlxsw_reg_ratr_trap_action_set(ratr_pl, trap_action);
5820-
mlxsw_reg_ratr_trap_id_set(ratr_pl, MLXSW_TRAP_ID_RTR_EGRESS0);
5821-
err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ratr), ratr_pl);
5822-
if (err)
5823-
goto err_ratr_write;
5824-
5825-
mlxsw_sp->router->adj_discard_index_valid = true;
5826-
5827-
return 0;
5828-
5829-
err_ratr_write:
5830-
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
5831-
mlxsw_sp->router->adj_discard_index);
5832-
return err;
5833-
}
5834-
58355800
static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
58365801
struct mlxsw_sp_fib_entry_op_ctx *op_ctx,
58375802
struct mlxsw_sp_fib_entry *fib_entry,
@@ -5844,7 +5809,6 @@ static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
58445809
u16 trap_id = 0;
58455810
u32 adjacency_index = 0;
58465811
u16 ecmp_size = 0;
5847-
int err;
58485812

58495813
/* In case the nexthop group adjacency index is valid, use it
58505814
* with provided ECMP size. Otherwise, setup trap and pass
@@ -5855,11 +5819,8 @@ static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
58555819
adjacency_index = nhgi->adj_index;
58565820
ecmp_size = nhgi->ecmp_size;
58575821
} else if (!nhgi->adj_index_valid && nhgi->count && nhgi->nh_rif) {
5858-
err = mlxsw_sp_adj_discard_write(mlxsw_sp);
5859-
if (err)
5860-
return err;
58615822
trap_action = MLXSW_REG_RALUE_TRAP_ACTION_NOP;
5862-
adjacency_index = mlxsw_sp->router->adj_discard_index;
5823+
adjacency_index = mlxsw_sp->router->adj_trap_index;
58635824
ecmp_size = 1;
58645825
} else {
58655826
trap_action = MLXSW_REG_RALUE_TRAP_ACTION_TRAP;
@@ -7418,16 +7379,6 @@ static void mlxsw_sp_router_fib_flush(struct mlxsw_sp *mlxsw_sp)
74187379
continue;
74197380
mlxsw_sp_vr_fib_flush(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV6);
74207381
}
7421-
7422-
/* After flushing all the routes, it is not possible anyone is still
7423-
* using the adjacency index that is discarding packets, so free it in
7424-
* case it was allocated.
7425-
*/
7426-
if (!mlxsw_sp->router->adj_discard_index_valid)
7427-
return;
7428-
mlxsw_sp_kvdl_free(mlxsw_sp, MLXSW_SP_KVDL_ENTRY_TYPE_ADJ, 1,
7429-
mlxsw_sp->router->adj_discard_index);
7430-
mlxsw_sp->router->adj_discard_index_valid = false;
74317382
}
74327383

74337384
struct mlxsw_sp_fib6_event {

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ struct mlxsw_sp_router {
6565
struct notifier_block inet6addr_nb;
6666
const struct mlxsw_sp_rif_ops **rif_ops_arr;
6767
const struct mlxsw_sp_ipip_ops **ipip_ops_arr;
68-
u32 adj_discard_index;
69-
bool adj_discard_index_valid;
7068
struct mlxsw_sp_router_nve_decap nve_decap_config;
7169
struct mutex lock; /* Protects shared router resources */
7270
struct work_struct fib_event_work;

0 commit comments

Comments
 (0)