RDMA/rxe: Move max_elem into rxe_type_info
Move the maximum number of elements from a parameter in rxe_pool_init to a member of the rxe_type_info array. Link: https://lore.kernel.org/r/20220304000808.225811-7-rpearsonhpe@gmail.com Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
Родитель
b4a47f6836
Коммит
3ccffe8abf
|
@ -118,43 +118,35 @@ static int rxe_init_pools(struct rxe_dev *rxe)
|
|||
{
|
||||
int err;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->uc_pool, RXE_TYPE_UC,
|
||||
rxe->max_ucontext);
|
||||
err = rxe_pool_init(rxe, &rxe->uc_pool, RXE_TYPE_UC);
|
||||
if (err)
|
||||
goto err1;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->pd_pool, RXE_TYPE_PD,
|
||||
rxe->attr.max_pd);
|
||||
err = rxe_pool_init(rxe, &rxe->pd_pool, RXE_TYPE_PD);
|
||||
if (err)
|
||||
goto err2;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->ah_pool, RXE_TYPE_AH,
|
||||
rxe->attr.max_ah);
|
||||
err = rxe_pool_init(rxe, &rxe->ah_pool, RXE_TYPE_AH);
|
||||
if (err)
|
||||
goto err3;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->srq_pool, RXE_TYPE_SRQ,
|
||||
rxe->attr.max_srq);
|
||||
err = rxe_pool_init(rxe, &rxe->srq_pool, RXE_TYPE_SRQ);
|
||||
if (err)
|
||||
goto err4;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->qp_pool, RXE_TYPE_QP,
|
||||
rxe->attr.max_qp);
|
||||
err = rxe_pool_init(rxe, &rxe->qp_pool, RXE_TYPE_QP);
|
||||
if (err)
|
||||
goto err5;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->cq_pool, RXE_TYPE_CQ,
|
||||
rxe->attr.max_cq);
|
||||
err = rxe_pool_init(rxe, &rxe->cq_pool, RXE_TYPE_CQ);
|
||||
if (err)
|
||||
goto err6;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->mr_pool, RXE_TYPE_MR,
|
||||
rxe->attr.max_mr);
|
||||
err = rxe_pool_init(rxe, &rxe->mr_pool, RXE_TYPE_MR);
|
||||
if (err)
|
||||
goto err7;
|
||||
|
||||
err = rxe_pool_init(rxe, &rxe->mw_pool, RXE_TYPE_MW,
|
||||
rxe->attr.max_mw);
|
||||
err = rxe_pool_init(rxe, &rxe->mw_pool, RXE_TYPE_MW);
|
||||
if (err)
|
||||
goto err8;
|
||||
|
||||
|
|
|
@ -16,16 +16,19 @@ static const struct rxe_type_info {
|
|||
enum rxe_pool_flags flags;
|
||||
u32 min_index;
|
||||
u32 max_index;
|
||||
u32 max_elem;
|
||||
} rxe_type_info[RXE_NUM_TYPES] = {
|
||||
[RXE_TYPE_UC] = {
|
||||
.name = "rxe-uc",
|
||||
.size = sizeof(struct rxe_ucontext),
|
||||
.elem_offset = offsetof(struct rxe_ucontext, elem),
|
||||
.max_elem = UINT_MAX,
|
||||
},
|
||||
[RXE_TYPE_PD] = {
|
||||
.name = "rxe-pd",
|
||||
.size = sizeof(struct rxe_pd),
|
||||
.elem_offset = offsetof(struct rxe_pd, elem),
|
||||
.max_elem = UINT_MAX,
|
||||
},
|
||||
[RXE_TYPE_AH] = {
|
||||
.name = "rxe-ah",
|
||||
|
@ -34,6 +37,7 @@ static const struct rxe_type_info {
|
|||
.flags = RXE_POOL_INDEX,
|
||||
.min_index = RXE_MIN_AH_INDEX,
|
||||
.max_index = RXE_MAX_AH_INDEX,
|
||||
.max_elem = RXE_MAX_AH_INDEX - RXE_MIN_AH_INDEX + 1,
|
||||
},
|
||||
[RXE_TYPE_SRQ] = {
|
||||
.name = "rxe-srq",
|
||||
|
@ -42,6 +46,7 @@ static const struct rxe_type_info {
|
|||
.flags = RXE_POOL_INDEX,
|
||||
.min_index = RXE_MIN_SRQ_INDEX,
|
||||
.max_index = RXE_MAX_SRQ_INDEX,
|
||||
.max_elem = RXE_MAX_SRQ_INDEX - RXE_MIN_SRQ_INDEX + 1,
|
||||
},
|
||||
[RXE_TYPE_QP] = {
|
||||
.name = "rxe-qp",
|
||||
|
@ -51,12 +56,14 @@ static const struct rxe_type_info {
|
|||
.flags = RXE_POOL_INDEX,
|
||||
.min_index = RXE_MIN_QP_INDEX,
|
||||
.max_index = RXE_MAX_QP_INDEX,
|
||||
.max_elem = RXE_MAX_QP_INDEX - RXE_MIN_QP_INDEX + 1,
|
||||
},
|
||||
[RXE_TYPE_CQ] = {
|
||||
.name = "rxe-cq",
|
||||
.size = sizeof(struct rxe_cq),
|
||||
.elem_offset = offsetof(struct rxe_cq, elem),
|
||||
.cleanup = rxe_cq_cleanup,
|
||||
.max_elem = UINT_MAX,
|
||||
},
|
||||
[RXE_TYPE_MR] = {
|
||||
.name = "rxe-mr",
|
||||
|
@ -66,6 +73,7 @@ static const struct rxe_type_info {
|
|||
.flags = RXE_POOL_INDEX | RXE_POOL_ALLOC,
|
||||
.min_index = RXE_MIN_MR_INDEX,
|
||||
.max_index = RXE_MAX_MR_INDEX,
|
||||
.max_elem = RXE_MAX_MR_INDEX - RXE_MIN_MR_INDEX + 1,
|
||||
},
|
||||
[RXE_TYPE_MW] = {
|
||||
.name = "rxe-mw",
|
||||
|
@ -75,6 +83,7 @@ static const struct rxe_type_info {
|
|||
.flags = RXE_POOL_INDEX,
|
||||
.min_index = RXE_MIN_MW_INDEX,
|
||||
.max_index = RXE_MAX_MW_INDEX,
|
||||
.max_elem = RXE_MAX_MW_INDEX - RXE_MIN_MW_INDEX + 1,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -104,8 +113,7 @@ out:
|
|||
int rxe_pool_init(
|
||||
struct rxe_dev *rxe,
|
||||
struct rxe_pool *pool,
|
||||
enum rxe_elem_type type,
|
||||
unsigned int max_elem)
|
||||
enum rxe_elem_type type)
|
||||
{
|
||||
const struct rxe_type_info *info = &rxe_type_info[type];
|
||||
int err = 0;
|
||||
|
@ -115,7 +123,7 @@ int rxe_pool_init(
|
|||
pool->rxe = rxe;
|
||||
pool->name = info->name;
|
||||
pool->type = type;
|
||||
pool->max_elem = max_elem;
|
||||
pool->max_elem = info->max_elem;
|
||||
pool->elem_size = ALIGN(info->size, RXE_POOL_ALIGN);
|
||||
pool->elem_offset = info->elem_offset;
|
||||
pool->flags = info->flags;
|
||||
|
|
|
@ -63,7 +63,7 @@ struct rxe_pool {
|
|||
* pool elements will be allocated out of a slab cache
|
||||
*/
|
||||
int rxe_pool_init(struct rxe_dev *rxe, struct rxe_pool *pool,
|
||||
enum rxe_elem_type type, u32 max_elem);
|
||||
enum rxe_elem_type type);
|
||||
|
||||
/* free resources from object pool */
|
||||
void rxe_pool_cleanup(struct rxe_pool *pool);
|
||||
|
|
Загрузка…
Ссылка в новой задаче