Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mlx5/mlx5_core/mlx5_pd.c
/*- | /*- | ||||
* Copyright (c) 2013-2017, Mellanox Technologies, Ltd. All rights reserved. | * Copyright (c) 2013-2020, Mellanox Technologies, Ltd. All rights reserved. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
* modification, are permitted provided that the following conditions | * modification, are permitted provided that the following conditions | ||||
* are met: | * are met: | ||||
* 1. Redistributions of source code must retain the above copyright | * 1. Redistributions of source code must retain the above copyright | ||||
* notice, this list of conditions and the following disclaimer. | * notice, this list of conditions and the following disclaimer. | ||||
* 2. Redistributions in binary form must reproduce the above copyright | * 2. Redistributions in binary form must reproduce the above copyright | ||||
* notice, this list of conditions and the following disclaimer in the | * notice, this list of conditions and the following disclaimer in the | ||||
Show All 14 Lines | |||||
* $FreeBSD$ | * $FreeBSD$ | ||||
*/ | */ | ||||
#include <linux/kernel.h> | #include <linux/kernel.h> | ||||
#include <linux/module.h> | #include <linux/module.h> | ||||
#include <dev/mlx5/driver.h> | #include <dev/mlx5/driver.h> | ||||
#include "mlx5_core.h" | #include "mlx5_core.h" | ||||
int mlx5_core_alloc_pd(struct mlx5_core_dev *dev, u32 *pdn) | int mlx5_core_alloc_pd(struct mlx5_core_dev *dev, u32 *pdn, u16 uid) | ||||
{ | { | ||||
u32 in[MLX5_ST_SZ_DW(alloc_pd_in)] = {0}; | u32 in[MLX5_ST_SZ_DW(alloc_pd_in)] = {0}; | ||||
u32 out[MLX5_ST_SZ_DW(alloc_pd_out)] = {0}; | u32 out[MLX5_ST_SZ_DW(alloc_pd_out)] = {0}; | ||||
int err; | int err; | ||||
MLX5_SET(alloc_pd_in, in, opcode, MLX5_CMD_OP_ALLOC_PD); | MLX5_SET(alloc_pd_in, in, opcode, MLX5_CMD_OP_ALLOC_PD); | ||||
MLX5_SET(alloc_pd_in, in, uid, uid); | |||||
err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); | err = mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); | ||||
if (err) | if (err) | ||||
return err; | return err; | ||||
*pdn = MLX5_GET(alloc_pd_out, out, pd); | *pdn = MLX5_GET(alloc_pd_out, out, pd); | ||||
return 0; | return 0; | ||||
} | } | ||||
EXPORT_SYMBOL(mlx5_core_alloc_pd); | EXPORT_SYMBOL(mlx5_core_alloc_pd); | ||||
int mlx5_core_dealloc_pd(struct mlx5_core_dev *dev, u32 pdn) | int mlx5_core_dealloc_pd(struct mlx5_core_dev *dev, u32 pdn, u16 uid) | ||||
{ | { | ||||
u32 in[MLX5_ST_SZ_DW(dealloc_pd_in)] = {0}; | u32 in[MLX5_ST_SZ_DW(dealloc_pd_in)] = {0}; | ||||
u32 out[MLX5_ST_SZ_DW(dealloc_pd_out)] = {0}; | u32 out[MLX5_ST_SZ_DW(dealloc_pd_out)] = {0}; | ||||
MLX5_SET(dealloc_pd_in, in, opcode, MLX5_CMD_OP_DEALLOC_PD); | MLX5_SET(dealloc_pd_in, in, opcode, MLX5_CMD_OP_DEALLOC_PD); | ||||
MLX5_SET(dealloc_pd_in, in, uid, uid); | |||||
MLX5_SET(dealloc_pd_in, in, pd, pdn); | MLX5_SET(dealloc_pd_in, in, pd, pdn); | ||||
return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); | return mlx5_cmd_exec(dev, in, sizeof(in), out, sizeof(out)); | ||||
} | } | ||||
EXPORT_SYMBOL(mlx5_core_dealloc_pd); | EXPORT_SYMBOL(mlx5_core_dealloc_pd); |