size_t size;
        size_t elem_offset;
        void (*cleanup)(struct rxe_pool_elem *elem);
-       enum rxe_pool_flags flags;
        u32 min_index;
        u32 max_index;
        u32 max_elem;
                .size           = sizeof(struct rxe_mr),
                .elem_offset    = offsetof(struct rxe_mr, elem),
                .cleanup        = rxe_mr_cleanup,
-               .flags          = 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,
        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;
        pool->cleanup           = info->cleanup;
 
        atomic_set(&pool->num_elem, 0);
        void *obj;
        int err;
 
-       if (WARN_ON(!(pool->flags & RXE_POOL_ALLOC)))
+       if (WARN_ON(!(pool->type == RXE_TYPE_MR)))
                return NULL;
 
        if (atomic_inc_return(&pool->num_elem) > pool->max_elem)
 {
        int err;
 
-       if (WARN_ON(pool->flags & RXE_POOL_ALLOC))
+       if (WARN_ON(pool->type == RXE_TYPE_MR))
                return -EINVAL;
 
        if (atomic_inc_return(&pool->num_elem) > pool->max_elem)
        if (pool->cleanup)
                pool->cleanup(elem);
 
-       if (pool->flags & RXE_POOL_ALLOC)
+       if (pool->type == RXE_TYPE_MR)
                kfree(elem->obj);
 
        atomic_dec(&pool->num_elem);