mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-02 17:26:42 +09:00
net/mlx5e: Convert large order kzalloc allocations to kvzalloc
Replace calls to kzalloc_node with kvzalloc_node, as it fallsback to lower-order pages if the higher-order trials fail. Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
committed by
Saeed Mahameed
parent
bc5a7ccd9a
commit
ca11b79899
@@ -352,8 +352,8 @@ static int mlx5e_rq_alloc_mpwqe_info(struct mlx5e_rq *rq,
|
||||
{
|
||||
int wq_sz = mlx5_wq_ll_get_size(&rq->mpwqe.wq);
|
||||
|
||||
rq->mpwqe.info = kcalloc_node(wq_sz, sizeof(*rq->mpwqe.info),
|
||||
GFP_KERNEL, cpu_to_node(c->cpu));
|
||||
rq->mpwqe.info = kvzalloc_node(wq_sz * sizeof(*rq->mpwqe.info),
|
||||
GFP_KERNEL, cpu_to_node(c->cpu));
|
||||
if (!rq->mpwqe.info)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -670,7 +670,7 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
|
||||
err_free:
|
||||
switch (rq->wq_type) {
|
||||
case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:
|
||||
kfree(rq->mpwqe.info);
|
||||
kvfree(rq->mpwqe.info);
|
||||
mlx5_core_destroy_mkey(mdev, &rq->umr_mkey);
|
||||
break;
|
||||
default: /* MLX5_WQ_TYPE_CYCLIC */
|
||||
@@ -702,7 +702,7 @@ static void mlx5e_free_rq(struct mlx5e_rq *rq)
|
||||
|
||||
switch (rq->wq_type) {
|
||||
case MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:
|
||||
kfree(rq->mpwqe.info);
|
||||
kvfree(rq->mpwqe.info);
|
||||
mlx5_core_destroy_mkey(rq->mdev, &rq->umr_mkey);
|
||||
break;
|
||||
default: /* MLX5_WQ_TYPE_CYCLIC */
|
||||
@@ -965,15 +965,15 @@ static void mlx5e_close_rq(struct mlx5e_rq *rq)
|
||||
|
||||
static void mlx5e_free_xdpsq_db(struct mlx5e_xdpsq *sq)
|
||||
{
|
||||
kfree(sq->db.di);
|
||||
kvfree(sq->db.di);
|
||||
}
|
||||
|
||||
static int mlx5e_alloc_xdpsq_db(struct mlx5e_xdpsq *sq, int numa)
|
||||
{
|
||||
int wq_sz = mlx5_wq_cyc_get_size(&sq->wq);
|
||||
|
||||
sq->db.di = kcalloc_node(wq_sz, sizeof(*sq->db.di),
|
||||
GFP_KERNEL, numa);
|
||||
sq->db.di = kvzalloc_node(sizeof(*sq->db.di) * wq_sz,
|
||||
GFP_KERNEL, numa);
|
||||
if (!sq->db.di) {
|
||||
mlx5e_free_xdpsq_db(sq);
|
||||
return -ENOMEM;
|
||||
@@ -1024,15 +1024,15 @@ static void mlx5e_free_xdpsq(struct mlx5e_xdpsq *sq)
|
||||
|
||||
static void mlx5e_free_icosq_db(struct mlx5e_icosq *sq)
|
||||
{
|
||||
kfree(sq->db.ico_wqe);
|
||||
kvfree(sq->db.ico_wqe);
|
||||
}
|
||||
|
||||
static int mlx5e_alloc_icosq_db(struct mlx5e_icosq *sq, int numa)
|
||||
{
|
||||
u8 wq_sz = mlx5_wq_cyc_get_size(&sq->wq);
|
||||
|
||||
sq->db.ico_wqe = kcalloc_node(wq_sz, sizeof(*sq->db.ico_wqe),
|
||||
GFP_KERNEL, numa);
|
||||
sq->db.ico_wqe = kvzalloc_node(sizeof(*sq->db.ico_wqe) * wq_sz,
|
||||
GFP_KERNEL, numa);
|
||||
if (!sq->db.ico_wqe)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1077,8 +1077,8 @@ static void mlx5e_free_icosq(struct mlx5e_icosq *sq)
|
||||
|
||||
static void mlx5e_free_txqsq_db(struct mlx5e_txqsq *sq)
|
||||
{
|
||||
kfree(sq->db.wqe_info);
|
||||
kfree(sq->db.dma_fifo);
|
||||
kvfree(sq->db.wqe_info);
|
||||
kvfree(sq->db.dma_fifo);
|
||||
}
|
||||
|
||||
static int mlx5e_alloc_txqsq_db(struct mlx5e_txqsq *sq, int numa)
|
||||
@@ -1086,10 +1086,10 @@ static int mlx5e_alloc_txqsq_db(struct mlx5e_txqsq *sq, int numa)
|
||||
int wq_sz = mlx5_wq_cyc_get_size(&sq->wq);
|
||||
int df_sz = wq_sz * MLX5_SEND_WQEBB_NUM_DS;
|
||||
|
||||
sq->db.dma_fifo = kcalloc_node(df_sz, sizeof(*sq->db.dma_fifo),
|
||||
GFP_KERNEL, numa);
|
||||
sq->db.wqe_info = kcalloc_node(wq_sz, sizeof(*sq->db.wqe_info),
|
||||
GFP_KERNEL, numa);
|
||||
sq->db.dma_fifo = kvzalloc_node(df_sz * sizeof(*sq->db.dma_fifo),
|
||||
GFP_KERNEL, numa);
|
||||
sq->db.wqe_info = kvzalloc_node(wq_sz * sizeof(*sq->db.wqe_info),
|
||||
GFP_KERNEL, numa);
|
||||
if (!sq->db.dma_fifo || !sq->db.wqe_info) {
|
||||
mlx5e_free_txqsq_db(sq);
|
||||
return -ENOMEM;
|
||||
@@ -1893,7 +1893,7 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
|
||||
int err;
|
||||
int eqn;
|
||||
|
||||
c = kzalloc_node(sizeof(*c), GFP_KERNEL, cpu_to_node(cpu));
|
||||
c = kvzalloc_node(sizeof(*c), GFP_KERNEL, cpu_to_node(cpu));
|
||||
if (!c)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1979,7 +1979,7 @@ err_close_icosq_cq:
|
||||
|
||||
err_napi_del:
|
||||
netif_napi_del(&c->napi);
|
||||
kfree(c);
|
||||
kvfree(c);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -2018,7 +2018,7 @@ static void mlx5e_close_channel(struct mlx5e_channel *c)
|
||||
mlx5e_close_cq(&c->icosq.cq);
|
||||
netif_napi_del(&c->napi);
|
||||
|
||||
kfree(c);
|
||||
kvfree(c);
|
||||
}
|
||||
|
||||
#define DEFAULT_FRAG_SIZE (2048)
|
||||
@@ -2276,7 +2276,7 @@ int mlx5e_open_channels(struct mlx5e_priv *priv,
|
||||
chs->num = chs->params.num_channels;
|
||||
|
||||
chs->c = kcalloc(chs->num, sizeof(struct mlx5e_channel *), GFP_KERNEL);
|
||||
cparam = kzalloc(sizeof(struct mlx5e_channel_param), GFP_KERNEL);
|
||||
cparam = kvzalloc(sizeof(struct mlx5e_channel_param), GFP_KERNEL);
|
||||
if (!chs->c || !cparam)
|
||||
goto err_free;
|
||||
|
||||
@@ -2287,7 +2287,7 @@ int mlx5e_open_channels(struct mlx5e_priv *priv,
|
||||
goto err_close_channels;
|
||||
}
|
||||
|
||||
kfree(cparam);
|
||||
kvfree(cparam);
|
||||
return 0;
|
||||
|
||||
err_close_channels:
|
||||
@@ -2296,7 +2296,7 @@ err_close_channels:
|
||||
|
||||
err_free:
|
||||
kfree(chs->c);
|
||||
kfree(cparam);
|
||||
kvfree(cparam);
|
||||
chs->num = 0;
|
||||
return err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user