net/mlx5e: Refactor rx_res_init() and rx_res_free() APIs
Refactor mlx5e_rx_res_init() and mlx5e_rx_res_free() by wrapping mlx5e_rx_res_alloc() and mlx5e_rx_res_destroy() API's respectively. Signed-off-by: Adham Faris <afaris@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
5a37b28824
commit
d90ea84375
@ -284,7 +284,12 @@ struct mlx5e_rss *mlx5e_rx_res_rss_get(struct mlx5e_rx_res *res, u32 rss_idx)
|
||||
|
||||
/* End of API rx_res_rss_* */
|
||||
|
||||
struct mlx5e_rx_res *mlx5e_rx_res_alloc(void)
|
||||
static void mlx5e_rx_res_free(struct mlx5e_rx_res *res)
|
||||
{
|
||||
kvfree(res);
|
||||
}
|
||||
|
||||
static struct mlx5e_rx_res *mlx5e_rx_res_alloc(void)
|
||||
{
|
||||
return kvzalloc(sizeof(struct mlx5e_rx_res), GFP_KERNEL);
|
||||
}
|
||||
@ -404,13 +409,19 @@ static void mlx5e_rx_res_ptp_destroy(struct mlx5e_rx_res *res)
|
||||
mlx5e_rqt_destroy(&res->ptp.rqt);
|
||||
}
|
||||
|
||||
int mlx5e_rx_res_init(struct mlx5e_rx_res *res, struct mlx5_core_dev *mdev,
|
||||
enum mlx5e_rx_res_features features, unsigned int max_nch,
|
||||
u32 drop_rqn, const struct mlx5e_packet_merge_param *init_pkt_merge_param,
|
||||
unsigned int init_nch)
|
||||
struct mlx5e_rx_res *
|
||||
mlx5e_rx_res_create(struct mlx5_core_dev *mdev, enum mlx5e_rx_res_features features,
|
||||
unsigned int max_nch, u32 drop_rqn,
|
||||
const struct mlx5e_packet_merge_param *init_pkt_merge_param,
|
||||
unsigned int init_nch)
|
||||
{
|
||||
struct mlx5e_rx_res *res;
|
||||
int err;
|
||||
|
||||
res = mlx5e_rx_res_alloc();
|
||||
if (!res)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
res->mdev = mdev;
|
||||
res->features = features;
|
||||
res->max_nch = max_nch;
|
||||
@ -421,7 +432,7 @@ int mlx5e_rx_res_init(struct mlx5e_rx_res *res, struct mlx5_core_dev *mdev,
|
||||
|
||||
err = mlx5e_rx_res_rss_init_def(res, init_nch);
|
||||
if (err)
|
||||
goto err_out;
|
||||
goto err_rx_res_free;
|
||||
|
||||
err = mlx5e_rx_res_channels_init(res);
|
||||
if (err)
|
||||
@ -431,14 +442,15 @@ int mlx5e_rx_res_init(struct mlx5e_rx_res *res, struct mlx5_core_dev *mdev,
|
||||
if (err)
|
||||
goto err_channels_destroy;
|
||||
|
||||
return 0;
|
||||
return res;
|
||||
|
||||
err_channels_destroy:
|
||||
mlx5e_rx_res_channels_destroy(res);
|
||||
err_rss_destroy:
|
||||
__mlx5e_rx_res_rss_destroy(res, 0);
|
||||
err_out:
|
||||
return err;
|
||||
err_rx_res_free:
|
||||
mlx5e_rx_res_free(res);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
void mlx5e_rx_res_destroy(struct mlx5e_rx_res *res)
|
||||
@ -446,11 +458,7 @@ void mlx5e_rx_res_destroy(struct mlx5e_rx_res *res)
|
||||
mlx5e_rx_res_ptp_destroy(res);
|
||||
mlx5e_rx_res_channels_destroy(res);
|
||||
mlx5e_rx_res_rss_destroy_all(res);
|
||||
}
|
||||
|
||||
void mlx5e_rx_res_free(struct mlx5e_rx_res *res)
|
||||
{
|
||||
kvfree(res);
|
||||
mlx5e_rx_res_free(res);
|
||||
}
|
||||
|
||||
u32 mlx5e_rx_res_get_tirn_direct(struct mlx5e_rx_res *res, unsigned int ix)
|
||||
|
@ -21,13 +21,12 @@ enum mlx5e_rx_res_features {
|
||||
};
|
||||
|
||||
/* Setup */
|
||||
struct mlx5e_rx_res *mlx5e_rx_res_alloc(void);
|
||||
int mlx5e_rx_res_init(struct mlx5e_rx_res *res, struct mlx5_core_dev *mdev,
|
||||
enum mlx5e_rx_res_features features, unsigned int max_nch,
|
||||
u32 drop_rqn, const struct mlx5e_packet_merge_param *init_pkt_merge_param,
|
||||
unsigned int init_nch);
|
||||
struct mlx5e_rx_res *
|
||||
mlx5e_rx_res_create(struct mlx5_core_dev *mdev, enum mlx5e_rx_res_features features,
|
||||
unsigned int max_nch, u32 drop_rqn,
|
||||
const struct mlx5e_packet_merge_param *init_pkt_merge_param,
|
||||
unsigned int init_nch);
|
||||
void mlx5e_rx_res_destroy(struct mlx5e_rx_res *res);
|
||||
void mlx5e_rx_res_free(struct mlx5e_rx_res *res);
|
||||
|
||||
/* TIRN getters for flow steering */
|
||||
u32 mlx5e_rx_res_get_tirn_direct(struct mlx5e_rx_res *res, unsigned int ix);
|
||||
|
@ -5389,10 +5389,6 @@ static int mlx5e_init_nic_rx(struct mlx5e_priv *priv)
|
||||
enum mlx5e_rx_res_features features;
|
||||
int err;
|
||||
|
||||
priv->rx_res = mlx5e_rx_res_alloc();
|
||||
if (!priv->rx_res)
|
||||
return -ENOMEM;
|
||||
|
||||
mlx5e_create_q_counters(priv);
|
||||
|
||||
err = mlx5e_open_drop_rq(priv, &priv->drop_rq);
|
||||
@ -5404,12 +5400,16 @@ static int mlx5e_init_nic_rx(struct mlx5e_priv *priv)
|
||||
features = MLX5E_RX_RES_FEATURE_PTP;
|
||||
if (mlx5_tunnel_inner_ft_supported(mdev))
|
||||
features |= MLX5E_RX_RES_FEATURE_INNER_FT;
|
||||
err = mlx5e_rx_res_init(priv->rx_res, priv->mdev, features,
|
||||
priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (err)
|
||||
|
||||
priv->rx_res = mlx5e_rx_res_create(priv->mdev, features, priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (IS_ERR(priv->rx_res)) {
|
||||
err = PTR_ERR(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
mlx5_core_err(mdev, "create rx resources failed, %d\n", err);
|
||||
goto err_close_drop_rq;
|
||||
}
|
||||
|
||||
err = mlx5e_create_flow_steering(priv->fs, priv->rx_res, priv->profile,
|
||||
priv->netdev);
|
||||
@ -5439,12 +5439,11 @@ err_destroy_flow_steering:
|
||||
priv->profile);
|
||||
err_destroy_rx_res:
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
err_close_drop_rq:
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
err_destroy_q_counters:
|
||||
mlx5e_destroy_q_counters(priv);
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -5455,10 +5454,9 @@ static void mlx5e_cleanup_nic_rx(struct mlx5e_priv *priv)
|
||||
mlx5e_destroy_flow_steering(priv->fs, !!(priv->netdev->hw_features & NETIF_F_NTUPLE),
|
||||
priv->profile);
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
mlx5e_destroy_q_counters(priv);
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
}
|
||||
|
||||
static void mlx5e_set_mqprio_rl(struct mlx5e_priv *priv)
|
||||
|
@ -998,26 +998,22 @@ static int mlx5e_init_rep_rx(struct mlx5e_priv *priv)
|
||||
struct mlx5_core_dev *mdev = priv->mdev;
|
||||
int err;
|
||||
|
||||
priv->rx_res = mlx5e_rx_res_alloc();
|
||||
if (!priv->rx_res) {
|
||||
err = -ENOMEM;
|
||||
goto err_free_fs;
|
||||
}
|
||||
|
||||
mlx5e_fs_init_l2_addr(priv->fs, priv->netdev);
|
||||
|
||||
err = mlx5e_open_drop_rq(priv, &priv->drop_rq);
|
||||
if (err) {
|
||||
mlx5_core_err(mdev, "open drop rq failed, %d\n", err);
|
||||
goto err_rx_res_free;
|
||||
goto err_free_fs;
|
||||
}
|
||||
|
||||
err = mlx5e_rx_res_init(priv->rx_res, priv->mdev, 0,
|
||||
priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (err)
|
||||
priv->rx_res = mlx5e_rx_res_create(priv->mdev, 0, priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (IS_ERR(priv->rx_res)) {
|
||||
err = PTR_ERR(priv->rx_res);
|
||||
mlx5_core_err(mdev, "Create rx resources failed, err=%d\n", err);
|
||||
goto err_close_drop_rq;
|
||||
}
|
||||
|
||||
err = mlx5e_create_rep_ttc_table(priv);
|
||||
if (err)
|
||||
@ -1041,11 +1037,9 @@ err_destroy_ttc_table:
|
||||
mlx5_destroy_ttc_table(mlx5e_fs_get_ttc(priv->fs, false));
|
||||
err_destroy_rx_res:
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = ERR_PTR(-EINVAL);
|
||||
err_close_drop_rq:
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
err_rx_res_free:
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
err_free_fs:
|
||||
mlx5e_fs_cleanup(priv->fs);
|
||||
priv->fs = NULL;
|
||||
@ -1059,9 +1053,8 @@ static void mlx5e_cleanup_rep_rx(struct mlx5e_priv *priv)
|
||||
mlx5e_destroy_rep_root_ft(priv);
|
||||
mlx5_destroy_ttc_table(mlx5e_fs_get_ttc(priv->fs, false));
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = ERR_PTR(-EINVAL);
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
}
|
||||
|
||||
static void mlx5e_rep_mpesw_work(struct work_struct *work)
|
||||
|
@ -418,12 +418,6 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
priv->rx_res = mlx5e_rx_res_alloc();
|
||||
if (!priv->rx_res) {
|
||||
err = -ENOMEM;
|
||||
goto err_free_fs;
|
||||
}
|
||||
|
||||
mlx5e_create_q_counters(priv);
|
||||
|
||||
err = mlx5e_open_drop_rq(priv, &priv->drop_rq);
|
||||
@ -432,12 +426,13 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)
|
||||
goto err_destroy_q_counters;
|
||||
}
|
||||
|
||||
err = mlx5e_rx_res_init(priv->rx_res, priv->mdev, 0,
|
||||
priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (err)
|
||||
priv->rx_res = mlx5e_rx_res_create(priv->mdev, 0, priv->max_nch, priv->drop_rq.rqn,
|
||||
&priv->channels.params.packet_merge,
|
||||
priv->channels.params.num_channels);
|
||||
if (IS_ERR(priv->rx_res)) {
|
||||
err = PTR_ERR(priv->rx_res);
|
||||
goto err_close_drop_rq;
|
||||
}
|
||||
|
||||
err = mlx5i_create_flow_steering(priv);
|
||||
if (err)
|
||||
@ -447,13 +442,11 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)
|
||||
|
||||
err_destroy_rx_res:
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = ERR_PTR(-EINVAL);
|
||||
err_close_drop_rq:
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
err_destroy_q_counters:
|
||||
mlx5e_destroy_q_counters(priv);
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
err_free_fs:
|
||||
mlx5e_fs_cleanup(priv->fs);
|
||||
return err;
|
||||
}
|
||||
@ -462,10 +455,9 @@ static void mlx5i_cleanup_rx(struct mlx5e_priv *priv)
|
||||
{
|
||||
mlx5i_destroy_flow_steering(priv);
|
||||
mlx5e_rx_res_destroy(priv->rx_res);
|
||||
priv->rx_res = ERR_PTR(-EINVAL);
|
||||
mlx5e_close_drop_rq(&priv->drop_rq);
|
||||
mlx5e_destroy_q_counters(priv);
|
||||
mlx5e_rx_res_free(priv->rx_res);
|
||||
priv->rx_res = NULL;
|
||||
mlx5e_fs_cleanup(priv->fs);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user