Commit 0fb2ed66 authored by majd@mellanox.com's avatar majd@mellanox.com Committed by Doug Ledford

IB/mlx5: Add create and destroy functionality for Raw Packet QP

This patch adds support for Raw Packet QP for the mlx5 device.

Raw Packet QP, unlike other QP types, has no matching mlx5_core_qp
object but rather it is built of RQ/SQ/TIR/TIS/TD mlx5_core object.

Since the SQ and RQ work-queue (WQ) buffers are not contiguous like
other QPs, we allocate separate buffers in the user-space and pass
the address of each one of them separately to the kernel.
Signed-off-by: default avatarMajd Dibbiny <majd@mellanox.com>
Reviewed-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 19098df2
...@@ -211,9 +211,35 @@ struct mlx5_ib_qp_trans { ...@@ -211,9 +211,35 @@ struct mlx5_ib_qp_trans {
u8 resp_depth; u8 resp_depth;
}; };
struct mlx5_ib_rq {
struct mlx5_ib_qp_base base;
struct mlx5_ib_wq *rq;
struct mlx5_ib_ubuffer ubuffer;
struct mlx5_db *doorbell;
u32 tirn;
u8 state;
};
struct mlx5_ib_sq {
struct mlx5_ib_qp_base base;
struct mlx5_ib_wq *sq;
struct mlx5_ib_ubuffer ubuffer;
struct mlx5_db *doorbell;
u32 tisn;
u8 state;
};
struct mlx5_ib_raw_packet_qp {
struct mlx5_ib_sq sq;
struct mlx5_ib_rq rq;
};
struct mlx5_ib_qp { struct mlx5_ib_qp {
struct ib_qp ibqp; struct ib_qp ibqp;
union {
struct mlx5_ib_qp_trans trans_qp; struct mlx5_ib_qp_trans trans_qp;
struct mlx5_ib_raw_packet_qp raw_packet_qp;
};
struct mlx5_buf buf; struct mlx5_buf buf;
struct mlx5_db db; struct mlx5_db db;
......
This diff is collapsed.
...@@ -145,6 +145,7 @@ struct mlx5_ib_create_qp { ...@@ -145,6 +145,7 @@ struct mlx5_ib_create_qp {
__u32 flags; __u32 flags;
__u32 uidx; __u32 uidx;
__u32 reserved0; __u32 reserved0;
__u64 sq_buf_addr;
}; };
struct mlx5_ib_create_qp_resp { struct mlx5_ib_create_qp_resp {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment