Commit 3ccffe8a authored by Bob Pearson's avatar Bob Pearson Committed by Jason Gunthorpe
Browse files

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: default avatarBob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent b4a47f68
Loading
Loading
Loading
Loading
+8 −16
Original line number Original line Diff line number Diff line
@@ -118,43 +118,35 @@ static int rxe_init_pools(struct rxe_dev *rxe)
{
{
	int err;
	int err;


	err = rxe_pool_init(rxe, &rxe->uc_pool, RXE_TYPE_UC,
	err = rxe_pool_init(rxe, &rxe->uc_pool, RXE_TYPE_UC);
			    rxe->max_ucontext);
	if (err)
	if (err)
		goto err1;
		goto err1;


	err = rxe_pool_init(rxe, &rxe->pd_pool, RXE_TYPE_PD,
	err = rxe_pool_init(rxe, &rxe->pd_pool, RXE_TYPE_PD);
			    rxe->attr.max_pd);
	if (err)
	if (err)
		goto err2;
		goto err2;


	err = rxe_pool_init(rxe, &rxe->ah_pool, RXE_TYPE_AH,
	err = rxe_pool_init(rxe, &rxe->ah_pool, RXE_TYPE_AH);
			    rxe->attr.max_ah);
	if (err)
	if (err)
		goto err3;
		goto err3;


	err = rxe_pool_init(rxe, &rxe->srq_pool, RXE_TYPE_SRQ,
	err = rxe_pool_init(rxe, &rxe->srq_pool, RXE_TYPE_SRQ);
			    rxe->attr.max_srq);
	if (err)
	if (err)
		goto err4;
		goto err4;


	err = rxe_pool_init(rxe, &rxe->qp_pool, RXE_TYPE_QP,
	err = rxe_pool_init(rxe, &rxe->qp_pool, RXE_TYPE_QP);
			    rxe->attr.max_qp);
	if (err)
	if (err)
		goto err5;
		goto err5;


	err = rxe_pool_init(rxe, &rxe->cq_pool, RXE_TYPE_CQ,
	err = rxe_pool_init(rxe, &rxe->cq_pool, RXE_TYPE_CQ);
			    rxe->attr.max_cq);
	if (err)
	if (err)
		goto err6;
		goto err6;


	err = rxe_pool_init(rxe, &rxe->mr_pool, RXE_TYPE_MR,
	err = rxe_pool_init(rxe, &rxe->mr_pool, RXE_TYPE_MR);
			    rxe->attr.max_mr);
	if (err)
	if (err)
		goto err7;
		goto err7;


	err = rxe_pool_init(rxe, &rxe->mw_pool, RXE_TYPE_MW,
	err = rxe_pool_init(rxe, &rxe->mw_pool, RXE_TYPE_MW);
			    rxe->attr.max_mw);
	if (err)
	if (err)
		goto err8;
		goto err8;


+11 −3
Original line number Original line Diff line number Diff line
@@ -16,16 +16,19 @@ static const struct rxe_type_info {
	enum rxe_pool_flags flags;
	enum rxe_pool_flags flags;
	u32 min_index;
	u32 min_index;
	u32 max_index;
	u32 max_index;
	u32 max_elem;
} rxe_type_info[RXE_NUM_TYPES] = {
} rxe_type_info[RXE_NUM_TYPES] = {
	[RXE_TYPE_UC] = {
	[RXE_TYPE_UC] = {
		.name		= "rxe-uc",
		.name		= "rxe-uc",
		.size		= sizeof(struct rxe_ucontext),
		.size		= sizeof(struct rxe_ucontext),
		.elem_offset	= offsetof(struct rxe_ucontext, elem),
		.elem_offset	= offsetof(struct rxe_ucontext, elem),
		.max_elem	= UINT_MAX,
	},
	},
	[RXE_TYPE_PD] = {
	[RXE_TYPE_PD] = {
		.name		= "rxe-pd",
		.name		= "rxe-pd",
		.size		= sizeof(struct rxe_pd),
		.size		= sizeof(struct rxe_pd),
		.elem_offset	= offsetof(struct rxe_pd, elem),
		.elem_offset	= offsetof(struct rxe_pd, elem),
		.max_elem	= UINT_MAX,
	},
	},
	[RXE_TYPE_AH] = {
	[RXE_TYPE_AH] = {
		.name		= "rxe-ah",
		.name		= "rxe-ah",
@@ -34,6 +37,7 @@ static const struct rxe_type_info {
		.flags		= RXE_POOL_INDEX,
		.flags		= RXE_POOL_INDEX,
		.min_index	= RXE_MIN_AH_INDEX,
		.min_index	= RXE_MIN_AH_INDEX,
		.max_index	= RXE_MAX_AH_INDEX,
		.max_index	= RXE_MAX_AH_INDEX,
		.max_elem	= RXE_MAX_AH_INDEX - RXE_MIN_AH_INDEX + 1,
	},
	},
	[RXE_TYPE_SRQ] = {
	[RXE_TYPE_SRQ] = {
		.name		= "rxe-srq",
		.name		= "rxe-srq",
@@ -42,6 +46,7 @@ static const struct rxe_type_info {
		.flags		= RXE_POOL_INDEX,
		.flags		= RXE_POOL_INDEX,
		.min_index	= RXE_MIN_SRQ_INDEX,
		.min_index	= RXE_MIN_SRQ_INDEX,
		.max_index	= RXE_MAX_SRQ_INDEX,
		.max_index	= RXE_MAX_SRQ_INDEX,
		.max_elem	= RXE_MAX_SRQ_INDEX - RXE_MIN_SRQ_INDEX + 1,
	},
	},
	[RXE_TYPE_QP] = {
	[RXE_TYPE_QP] = {
		.name		= "rxe-qp",
		.name		= "rxe-qp",
@@ -51,12 +56,14 @@ static const struct rxe_type_info {
		.flags		= RXE_POOL_INDEX,
		.flags		= RXE_POOL_INDEX,
		.min_index	= RXE_MIN_QP_INDEX,
		.min_index	= RXE_MIN_QP_INDEX,
		.max_index	= RXE_MAX_QP_INDEX,
		.max_index	= RXE_MAX_QP_INDEX,
		.max_elem	= RXE_MAX_QP_INDEX - RXE_MIN_QP_INDEX + 1,
	},
	},
	[RXE_TYPE_CQ] = {
	[RXE_TYPE_CQ] = {
		.name		= "rxe-cq",
		.name		= "rxe-cq",
		.size		= sizeof(struct rxe_cq),
		.size		= sizeof(struct rxe_cq),
		.elem_offset	= offsetof(struct rxe_cq, elem),
		.elem_offset	= offsetof(struct rxe_cq, elem),
		.cleanup	= rxe_cq_cleanup,
		.cleanup	= rxe_cq_cleanup,
		.max_elem	= UINT_MAX,
	},
	},
	[RXE_TYPE_MR] = {
	[RXE_TYPE_MR] = {
		.name		= "rxe-mr",
		.name		= "rxe-mr",
@@ -66,6 +73,7 @@ static const struct rxe_type_info {
		.flags		= RXE_POOL_INDEX | RXE_POOL_ALLOC,
		.flags		= RXE_POOL_INDEX | RXE_POOL_ALLOC,
		.min_index	= RXE_MIN_MR_INDEX,
		.min_index	= RXE_MIN_MR_INDEX,
		.max_index	= RXE_MAX_MR_INDEX,
		.max_index	= RXE_MAX_MR_INDEX,
		.max_elem	= RXE_MAX_MR_INDEX - RXE_MIN_MR_INDEX + 1,
	},
	},
	[RXE_TYPE_MW] = {
	[RXE_TYPE_MW] = {
		.name		= "rxe-mw",
		.name		= "rxe-mw",
@@ -75,6 +83,7 @@ static const struct rxe_type_info {
		.flags		= RXE_POOL_INDEX,
		.flags		= RXE_POOL_INDEX,
		.min_index	= RXE_MIN_MW_INDEX,
		.min_index	= RXE_MIN_MW_INDEX,
		.max_index	= RXE_MAX_MW_INDEX,
		.max_index	= RXE_MAX_MW_INDEX,
		.max_elem	= RXE_MAX_MW_INDEX - RXE_MIN_MW_INDEX + 1,
	},
	},
};
};


@@ -104,8 +113,7 @@ static int rxe_pool_init_index(struct rxe_pool *pool, u32 max, u32 min)
int rxe_pool_init(
int rxe_pool_init(
	struct rxe_dev		*rxe,
	struct rxe_dev		*rxe,
	struct rxe_pool		*pool,
	struct rxe_pool		*pool,
	enum rxe_elem_type	type,
	enum rxe_elem_type	type)
	unsigned int		max_elem)
{
{
	const struct rxe_type_info *info = &rxe_type_info[type];
	const struct rxe_type_info *info = &rxe_type_info[type];
	int			err = 0;
	int			err = 0;
@@ -115,7 +123,7 @@ int rxe_pool_init(
	pool->rxe		= rxe;
	pool->rxe		= rxe;
	pool->name		= info->name;
	pool->name		= info->name;
	pool->type		= type;
	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_size		= ALIGN(info->size, RXE_POOL_ALIGN);
	pool->elem_offset	= info->elem_offset;
	pool->elem_offset	= info->elem_offset;
	pool->flags		= info->flags;
	pool->flags		= info->flags;
+1 −1
Original line number Original line Diff line number Diff line
@@ -63,7 +63,7 @@ struct rxe_pool {
 * pool elements will be allocated out of a slab cache
 * pool elements will be allocated out of a slab cache
 */
 */
int rxe_pool_init(struct rxe_dev *rxe, struct rxe_pool *pool,
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 */
/* free resources from object pool */
void rxe_pool_cleanup(struct rxe_pool *pool);
void rxe_pool_cleanup(struct rxe_pool *pool);