File tree Expand file tree Collapse file tree 2 files changed +12
-1
lines changed
drivers/net/ethernet/mellanox/mlxsw Expand file tree Collapse file tree 2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -10731,27 +10731,37 @@ static void __mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
10731
10731
static int mlxsw_sp_lb_rif_init (struct mlxsw_sp * mlxsw_sp ,
10732
10732
struct netlink_ext_ack * extack )
10733
10733
{
10734
+ struct mlxsw_sp_router * router = mlxsw_sp -> router ;
10734
10735
struct mlxsw_sp_rif * lb_rif ;
10735
10736
int err ;
10736
10737
10738
+ router -> lb_crif = mlxsw_sp_crif_alloc (NULL );
10739
+ if (IS_ERR (router -> lb_crif ))
10740
+ return PTR_ERR (router -> lb_crif );
10741
+
10737
10742
/* Create a generic loopback RIF associated with the main table
10738
10743
* (default VRF). Any table can be used, but the main table exists
10739
10744
* anyway, so we do not waste resources.
10740
10745
*/
10741
10746
lb_rif = mlxsw_sp_ul_rif_get (mlxsw_sp , RT_TABLE_MAIN , extack );
10742
10747
if (IS_ERR (lb_rif )) {
10743
10748
err = PTR_ERR (lb_rif );
10744
- return err ;
10749
+ goto err_ul_rif_get ;
10745
10750
}
10746
10751
10747
10752
mlxsw_sp -> router -> lb_rif_index = lb_rif -> rif_index ;
10748
10753
10749
10754
return 0 ;
10755
+
10756
+ err_ul_rif_get :
10757
+ mlxsw_sp_crif_free (router -> lb_crif );
10758
+ return err ;
10750
10759
}
10751
10760
10752
10761
static void mlxsw_sp_lb_rif_fini (struct mlxsw_sp * mlxsw_sp )
10753
10762
{
10754
10763
mlxsw_sp_router_ul_rif_put (mlxsw_sp , mlxsw_sp -> router -> lb_rif_index );
10764
+ mlxsw_sp_crif_free (mlxsw_sp -> router -> lb_crif );
10755
10765
}
10756
10766
10757
10767
static int mlxsw_sp1_router_init (struct mlxsw_sp * mlxsw_sp )
Original file line number Diff line number Diff line change @@ -61,6 +61,7 @@ struct mlxsw_sp_router {
61
61
struct mutex lock ; /* Protects shared router resources */
62
62
struct mlxsw_sp_fib_entry_op_ctx * ll_op_ctx ;
63
63
u16 lb_rif_index ;
64
+ struct mlxsw_sp_crif * lb_crif ;
64
65
const struct mlxsw_sp_adj_grp_size_range * adj_grp_size_ranges ;
65
66
size_t adj_grp_size_ranges_count ;
66
67
struct delayed_work nh_grp_activity_dw ;
You can’t perform that action at this time.
0 commit comments