RDMA/rxe: Move max_elem into rxe_type_info
authorBob Pearson <rpearsonhpe@gmail.com>
Fri, 4 Mar 2022 00:08:02 +0000 (18:08 -0600)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 15 Mar 2022 23:49:57 +0000 (20:49 -0300)
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>
drivers/infiniband/sw/rxe/rxe.c
drivers/infiniband/sw/rxe/rxe_pool.c
drivers/infiniband/sw/rxe/rxe_pool.h

index fce3994d8f7a8c91c5ef45df411b75de2bba5e3e..dc1f9dd70966adcda1a2502d8e2b99f07c7639f8 100644 (file)
@@ -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;
 
index 3b50fd3d9d70b0897001fed60d072773fecbcd68..bc3ae64adba8eac835e56a262732711fa5b6f574 100644 (file)
@@ -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;
index a8582ad85b1e2ac153358f0b29af57125a26dad4..5f34d232d7f40cc1a6f61dde961382a6318e1148 100644 (file)
@@ -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);