@@ -5797,41 +5797,6 @@ static int mlxsw_sp_fib_entry_commit(struct mlxsw_sp *mlxsw_sp,
5797
5797
return err ;
5798
5798
}
5799
5799
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
-
5835
5800
static int mlxsw_sp_fib_entry_op_remote (struct mlxsw_sp * mlxsw_sp ,
5836
5801
struct mlxsw_sp_fib_entry_op_ctx * op_ctx ,
5837
5802
struct mlxsw_sp_fib_entry * fib_entry ,
@@ -5844,7 +5809,6 @@ static int mlxsw_sp_fib_entry_op_remote(struct mlxsw_sp *mlxsw_sp,
5844
5809
u16 trap_id = 0 ;
5845
5810
u32 adjacency_index = 0 ;
5846
5811
u16 ecmp_size = 0 ;
5847
- int err ;
5848
5812
5849
5813
/* In case the nexthop group adjacency index is valid, use it
5850
5814
* 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,
5855
5819
adjacency_index = nhgi -> adj_index ;
5856
5820
ecmp_size = nhgi -> ecmp_size ;
5857
5821
} 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 ;
5861
5822
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 ;
5863
5824
ecmp_size = 1 ;
5864
5825
} else {
5865
5826
trap_action = MLXSW_REG_RALUE_TRAP_ACTION_TRAP ;
@@ -7418,16 +7379,6 @@ static void mlxsw_sp_router_fib_flush(struct mlxsw_sp *mlxsw_sp)
7418
7379
continue ;
7419
7380
mlxsw_sp_vr_fib_flush (mlxsw_sp , vr , MLXSW_SP_L3_PROTO_IPV6 );
7420
7381
}
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;
7431
7382
}
7432
7383
7433
7384
struct mlxsw_sp_fib6_event {
0 commit comments