IB/mlx5: Move and decouple user vendor structures
This patch decouples and moves vendors specific structures to common UAPI folder which will be visible to all consumers. These structures are used by user-space library driver (libmlx5) and currently manually copied to that library. This move will allow cross-compile against these files and simplify introduction of vendor specific data. Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
bd99fdea42
commit
3085e29e2f
|
@ -7819,6 +7819,7 @@ Q: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/mellanox/mlx5/core/
|
F: drivers/net/ethernet/mellanox/mlx5/core/
|
||||||
F: include/linux/mlx5/
|
F: include/linux/mlx5/
|
||||||
|
F: include/uapi/rdma/mlx5-abi.h
|
||||||
|
|
||||||
MELLANOX MLX5 IB driver
|
MELLANOX MLX5 IB driver
|
||||||
M: Matan Barak <matanb@mellanox.com>
|
M: Matan Barak <matanb@mellanox.com>
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include <rdma/ib_user_verbs.h>
|
#include <rdma/ib_user_verbs.h>
|
||||||
#include <rdma/ib_cache.h>
|
#include <rdma/ib_cache.h>
|
||||||
#include "mlx5_ib.h"
|
#include "mlx5_ib.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
static void mlx5_ib_cq_comp(struct mlx5_core_cq *cq)
|
static void mlx5_ib_cq_comp(struct mlx5_core_cq *cq)
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,7 +54,6 @@
|
||||||
#include <linux/in.h>
|
#include <linux/in.h>
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/mlx5/fs.h>
|
#include <linux/mlx5/fs.h>
|
||||||
#include "user.h"
|
|
||||||
#include "mlx5_ib.h"
|
#include "mlx5_ib.h"
|
||||||
|
|
||||||
#define DRIVER_NAME "mlx5_ib"
|
#define DRIVER_NAME "mlx5_ib"
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/mlx5/transobj.h>
|
#include <linux/mlx5/transobj.h>
|
||||||
#include <rdma/ib_user_verbs.h>
|
#include <rdma/ib_user_verbs.h>
|
||||||
|
#include <rdma/mlx5-abi.h>
|
||||||
|
|
||||||
#define mlx5_ib_dbg(dev, format, arg...) \
|
#define mlx5_ib_dbg(dev, format, arg...) \
|
||||||
pr_debug("%s:%s:%d:(pid %d): " format, (dev)->ib_dev.name, __func__, \
|
pr_debug("%s:%s:%d:(pid %d): " format, (dev)->ib_dev.name, __func__, \
|
||||||
|
@ -955,4 +956,40 @@ static inline int verify_assign_uidx(u8 cqe_version, u32 cmd_uidx,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int get_qp_user_index(struct mlx5_ib_ucontext *ucontext,
|
||||||
|
struct mlx5_ib_create_qp *ucmd,
|
||||||
|
int inlen,
|
||||||
|
u32 *user_index)
|
||||||
|
{
|
||||||
|
u8 cqe_version = ucontext->cqe_version;
|
||||||
|
|
||||||
|
if (field_avail(struct mlx5_ib_create_qp, uidx, inlen) &&
|
||||||
|
!cqe_version && (ucmd->uidx == MLX5_IB_DEFAULT_UIDX))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!!(field_avail(struct mlx5_ib_create_qp, uidx, inlen) !=
|
||||||
|
!!cqe_version))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return verify_assign_uidx(cqe_version, ucmd->uidx, user_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int get_srq_user_index(struct mlx5_ib_ucontext *ucontext,
|
||||||
|
struct mlx5_ib_create_srq *ucmd,
|
||||||
|
int inlen,
|
||||||
|
u32 *user_index)
|
||||||
|
{
|
||||||
|
u8 cqe_version = ucontext->cqe_version;
|
||||||
|
|
||||||
|
if (field_avail(struct mlx5_ib_create_srq, uidx, inlen) &&
|
||||||
|
!cqe_version && (ucmd->uidx == MLX5_IB_DEFAULT_UIDX))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!!(field_avail(struct mlx5_ib_create_srq, uidx, inlen) !=
|
||||||
|
!!cqe_version))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return verify_assign_uidx(cqe_version, ucmd->uidx, user_index);
|
||||||
|
}
|
||||||
#endif /* MLX5_IB_H */
|
#endif /* MLX5_IB_H */
|
||||||
|
|
|
@ -40,7 +40,6 @@
|
||||||
#include <rdma/ib_umem_odp.h>
|
#include <rdma/ib_umem_odp.h>
|
||||||
#include <rdma/ib_verbs.h>
|
#include <rdma/ib_verbs.h>
|
||||||
#include "mlx5_ib.h"
|
#include "mlx5_ib.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAX_PENDING_REG_MR = 8,
|
MAX_PENDING_REG_MR = 8,
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include <rdma/ib_cache.h>
|
#include <rdma/ib_cache.h>
|
||||||
#include <rdma/ib_user_verbs.h>
|
#include <rdma/ib_user_verbs.h>
|
||||||
#include "mlx5_ib.h"
|
#include "mlx5_ib.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
/* not supported currently */
|
/* not supported currently */
|
||||||
static int wq_signature;
|
static int wq_signature;
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
#include <rdma/ib_user_verbs.h>
|
#include <rdma/ib_user_verbs.h>
|
||||||
|
|
||||||
#include "mlx5_ib.h"
|
#include "mlx5_ib.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
/* not supported currently */
|
/* not supported currently */
|
||||||
static int srq_signature;
|
static int srq_signature;
|
||||||
|
|
|
@ -7,3 +7,4 @@ header-y += rdma_netlink.h
|
||||||
header-y += rdma_user_cm.h
|
header-y += rdma_user_cm.h
|
||||||
header-y += hfi/
|
header-y += hfi/
|
||||||
header-y += rdma_user_rxe.h
|
header-y += rdma_user_rxe.h
|
||||||
|
header-y += mlx5-abi.h
|
||||||
|
|
|
@ -30,13 +30,11 @@
|
||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MLX5_IB_USER_H
|
#ifndef MLX5_ABI_USER_H
|
||||||
#define MLX5_IB_USER_H
|
#define MLX5_ABI_USER_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
#include "mlx5_ib.h"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MLX5_QP_FLAG_SIGNATURE = 1 << 0,
|
MLX5_QP_FLAG_SIGNATURE = 1 << 0,
|
||||||
MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
|
MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
|
||||||
|
@ -50,7 +48,6 @@ enum {
|
||||||
MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
|
MLX5_WQ_FLAG_SIGNATURE = 1 << 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Increment this value if any changes that break userspace ABI
|
/* Increment this value if any changes that break userspace ABI
|
||||||
* compatibility are made.
|
* compatibility are made.
|
||||||
*/
|
*/
|
||||||
|
@ -249,40 +246,4 @@ struct mlx5_ib_modify_wq {
|
||||||
__u32 comp_mask;
|
__u32 comp_mask;
|
||||||
__u32 reserved;
|
__u32 reserved;
|
||||||
};
|
};
|
||||||
|
#endif /* MLX5_ABI_USER_H */
|
||||||
static inline int get_qp_user_index(struct mlx5_ib_ucontext *ucontext,
|
|
||||||
struct mlx5_ib_create_qp *ucmd,
|
|
||||||
int inlen,
|
|
||||||
u32 *user_index)
|
|
||||||
{
|
|
||||||
u8 cqe_version = ucontext->cqe_version;
|
|
||||||
|
|
||||||
if (field_avail(struct mlx5_ib_create_qp, uidx, inlen) &&
|
|
||||||
!cqe_version && (ucmd->uidx == MLX5_IB_DEFAULT_UIDX))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!!(field_avail(struct mlx5_ib_create_qp, uidx, inlen) !=
|
|
||||||
!!cqe_version))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
return verify_assign_uidx(cqe_version, ucmd->uidx, user_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int get_srq_user_index(struct mlx5_ib_ucontext *ucontext,
|
|
||||||
struct mlx5_ib_create_srq *ucmd,
|
|
||||||
int inlen,
|
|
||||||
u32 *user_index)
|
|
||||||
{
|
|
||||||
u8 cqe_version = ucontext->cqe_version;
|
|
||||||
|
|
||||||
if (field_avail(struct mlx5_ib_create_srq, uidx, inlen) &&
|
|
||||||
!cqe_version && (ucmd->uidx == MLX5_IB_DEFAULT_UIDX))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!!(field_avail(struct mlx5_ib_create_srq, uidx, inlen) !=
|
|
||||||
!!cqe_version))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
return verify_assign_uidx(cqe_version, ucmd->uidx, user_index);
|
|
||||||
}
|
|
||||||
#endif /* MLX5_IB_USER_H */
|
|
Loading…
Reference in New Issue