common/mlx5: add alloc/dealloc PD on Windows
Implement Windows API mlx5_os_alloc_pd() and mlx5_os_dealloc_pd(). They are equivalent to the Linux implementation in [1]. [1] ("net/mlx5: wrap glue alloc/dealloc PD with OS calls") Signed-off-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
This commit is contained in:
parent
86576a644e
commit
1552fb2871
@ -61,3 +61,6 @@ EXPORTS
|
||||
mlx5_malloc
|
||||
mlx5_realloc
|
||||
mlx5_free
|
||||
|
||||
mlx5_os_alloc_pd
|
||||
mlx5_os_dealloc_pd
|
||||
|
@ -21,3 +21,51 @@ void
|
||||
mlx5_glue_constructor(void)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocate PD. Given a devx context object
|
||||
* return an mlx5-pd object.
|
||||
*
|
||||
* @param[in] ctx
|
||||
* Pointer to context.
|
||||
*
|
||||
* @return
|
||||
* The mlx5_pd if pd is valid, NULL and errno otherwise.
|
||||
*/
|
||||
void *
|
||||
mlx5_os_alloc_pd(void *ctx)
|
||||
{
|
||||
struct mlx5_pd *ppd = mlx5_malloc(MLX5_MEM_ZERO,
|
||||
sizeof(struct mlx5_pd), 0, SOCKET_ID_ANY);
|
||||
if (!ppd)
|
||||
return NULL;
|
||||
|
||||
struct mlx5_devx_obj *obj = mlx5_devx_cmd_alloc_pd(ctx);
|
||||
if (!obj) {
|
||||
mlx5_free(ppd);
|
||||
return NULL;
|
||||
}
|
||||
ppd->obj = obj;
|
||||
ppd->pdn = obj->id;
|
||||
ppd->devx_ctx = ctx;
|
||||
return ppd;
|
||||
}
|
||||
|
||||
/**
|
||||
* Release PD. Releases a given mlx5_pd object
|
||||
*
|
||||
* @param[in] pd
|
||||
* Pointer to mlx5_pd.
|
||||
*
|
||||
* @return
|
||||
* Zero if pd is released successfully, negative number otherwise.
|
||||
*/
|
||||
int
|
||||
mlx5_os_dealloc_pd(void *pd)
|
||||
{
|
||||
if (!pd)
|
||||
return -EINVAL;
|
||||
mlx5_devx_cmd_destroy(((struct mlx5_pd *)pd)->obj);
|
||||
mlx5_free(pd);
|
||||
return 0;
|
||||
}
|
||||
|
@ -139,4 +139,7 @@ mlx5_os_get_umem_id(void *umem)
|
||||
return 0;
|
||||
return ((struct mlx5_devx_umem *)umem)->umem_id;
|
||||
}
|
||||
|
||||
void *mlx5_os_alloc_pd(void *ctx);
|
||||
int mlx5_os_dealloc_pd(void *pd);
|
||||
#endif /* RTE_PMD_MLX5_COMMON_OS_H_ */
|
||||
|
@ -28,6 +28,12 @@ struct mlx5_devx_umem {
|
||||
uint32_t umem_id;
|
||||
};
|
||||
|
||||
struct mlx5_pd {
|
||||
void *obj;
|
||||
uint32_t pdn;
|
||||
devx_device_ctx *devx_ctx;
|
||||
};
|
||||
|
||||
#define GET_DEVX_CTX(ctx) (((mlx5_context_st *)ctx)->devx_ctx)
|
||||
#define GET_OBJ_CTX(obj) (((mlx5_devx_obj_st *)obj)->devx_ctx)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user