@@ -46,7 +46,7 @@ struct mlx5_tc_ct_priv {
46
46
struct mlx5_core_dev * dev ;
47
47
const struct net_device * netdev ;
48
48
struct mod_hdr_tbl * mod_hdr_tbl ;
49
- struct idr fte_ids ;
49
+ struct xarray fte_ids ;
50
50
struct xarray tuple_ids ;
51
51
struct rhashtable zone_ht ;
52
52
struct rhashtable ct_tuples_ht ;
@@ -1773,12 +1773,12 @@ __mlx5_tc_ct_flow_offload(struct mlx5_tc_ct_priv *ct_priv,
1773
1773
}
1774
1774
ct_flow -> ft = ft ;
1775
1775
1776
- err = idr_alloc_u32 (& ct_priv -> fte_ids , ct_flow , & fte_id ,
1777
- MLX5_FTE_ID_MAX , GFP_KERNEL );
1776
+ err = xa_alloc (& ct_priv -> fte_ids , & fte_id , ct_flow ,
1777
+ XA_LIMIT ( 1 , MLX5_FTE_ID_MAX ) , GFP_KERNEL );
1778
1778
if (err ) {
1779
1779
netdev_warn (priv -> netdev ,
1780
1780
"Failed to allocate fte id, err: %d\n" , err );
1781
- goto err_idr ;
1781
+ goto err_xarray ;
1782
1782
}
1783
1783
ct_flow -> fte_id = fte_id ;
1784
1784
@@ -1914,8 +1914,8 @@ __mlx5_tc_ct_flow_offload(struct mlx5_tc_ct_priv *ct_priv,
1914
1914
err_alloc_post :
1915
1915
kfree (ct_flow -> pre_ct_attr );
1916
1916
err_alloc_pre :
1917
- idr_remove (& ct_priv -> fte_ids , fte_id );
1918
- err_idr :
1917
+ xa_erase (& ct_priv -> fte_ids , fte_id );
1918
+ err_xarray :
1919
1919
mlx5_tc_ct_del_ft_cb (ct_priv , ft );
1920
1920
err_ft :
1921
1921
kvfree (post_ct_spec );
@@ -2033,7 +2033,7 @@ __mlx5_tc_ct_delete_flow(struct mlx5_tc_ct_priv *ct_priv,
2033
2033
mlx5_tc_rule_delete (priv , ct_flow -> post_ct_rule ,
2034
2034
ct_flow -> post_ct_attr );
2035
2035
mlx5_chains_put_chain_mapping (ct_priv -> chains , ct_flow -> chain_mapping );
2036
- idr_remove (& ct_priv -> fte_ids , ct_flow -> fte_id );
2036
+ xa_erase (& ct_priv -> fte_ids , ct_flow -> fte_id );
2037
2037
mlx5_tc_ct_del_ft_cb (ct_priv , ct_flow -> ft );
2038
2038
}
2039
2039
@@ -2203,7 +2203,7 @@ mlx5_tc_ct_init(struct mlx5e_priv *priv, struct mlx5_fs_chains *chains,
2203
2203
goto err_post_ct_tbl ;
2204
2204
}
2205
2205
2206
- idr_init (& ct_priv -> fte_ids );
2206
+ xa_init_flags (& ct_priv -> fte_ids , XA_FLAGS_ALLOC1 );
2207
2207
mutex_init (& ct_priv -> control_lock );
2208
2208
rhashtable_init (& ct_priv -> zone_ht , & zone_params );
2209
2209
rhashtable_init (& ct_priv -> ct_tuples_ht , & tuples_ht_params );
@@ -2247,7 +2247,7 @@ mlx5_tc_ct_clean(struct mlx5_tc_ct_priv *ct_priv)
2247
2247
rhashtable_destroy (& ct_priv -> ct_tuples_nat_ht );
2248
2248
rhashtable_destroy (& ct_priv -> zone_ht );
2249
2249
mutex_destroy (& ct_priv -> control_lock );
2250
- idr_destroy (& ct_priv -> fte_ids );
2250
+ xa_destroy (& ct_priv -> fte_ids );
2251
2251
kfree (ct_priv );
2252
2252
}
2253
2253
0 commit comments