Skip to content

Commit

Permalink
RDMA/bnxt_re: Update missing hsi data structures
Browse files Browse the repository at this point in the history
Adding fast path support data structure into hardware HSI. These
structures are header only definition of RQE/SRQE/SQE. This is to help
calculating the size of hardware wqe size.

Link: https://lore.kernel.org/r/1585851136-2316-3-git-send-email-devesh.sharma@broadcom.com
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
  • Loading branch information
Devesh Sharma authored and Jason Gunthorpe committed Apr 14, 2020
1 parent 99bf84e commit c78671a
Showing 1 changed file with 106 additions and 0 deletions.
106 changes: 106 additions & 0 deletions drivers/infiniband/hw/bnxt_re/roce_hsi.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,20 @@ struct sq_send {
__le32 data[24];
};

/* sq_send_hdr (size:256b/32B) */
struct sq_send_hdr {
u8 wqe_type;
u8 flags;
u8 wqe_size;
u8 reserved8_1;
__le32 inv_key_or_imm_data;
__le32 length;
__le32 q_key;
__le32 dst_qp;
__le32 avid;
__le64 reserved64;
};

/* Send Raw Ethernet and QP1 SQ WQE (40 bytes) */
struct sq_send_raweth_qp1 {
u8 wqe_type;
Expand Down Expand Up @@ -265,6 +279,21 @@ struct sq_send_raweth_qp1 {
__le32 data[24];
};

/* sq_send_raweth_qp1_hdr (size:256b/32B) */
struct sq_send_raweth_qp1_hdr {
u8 wqe_type;
u8 flags;
u8 wqe_size;
u8 reserved8;
__le16 lflags;
__le16 cfa_action;
__le32 length;
__le32 reserved32_1;
__le32 cfa_meta;
__le32 reserved32_2;
__le64 reserved64;
};

/* RDMA SQ WQE (40 bytes) */
struct sq_rdma {
u8 wqe_type;
Expand All @@ -288,6 +317,20 @@ struct sq_rdma {
__le32 data[24];
};

/* sq_rdma_hdr (size:256b/32B) */
struct sq_rdma_hdr {
u8 wqe_type;
u8 flags;
u8 wqe_size;
u8 reserved8;
__le32 imm_data;
__le32 length;
__le32 reserved32_1;
__le64 remote_va;
__le32 remote_key;
__le32 reserved32_2;
};

/* Atomic SQ WQE (40 bytes) */
struct sq_atomic {
u8 wqe_type;
Expand All @@ -307,6 +350,17 @@ struct sq_atomic {
__le32 data[24];
};

/* sq_atomic_hdr (size:256b/32B) */
struct sq_atomic_hdr {
u8 wqe_type;
u8 flags;
__le16 reserved16;
__le32 remote_key;
__le64 remote_va;
__le64 swap_data;
__le64 cmp_data;
};

/* Local Invalidate SQ WQE (40 bytes) */
struct sq_localinvalidate {
u8 wqe_type;
Expand All @@ -324,6 +378,16 @@ struct sq_localinvalidate {
__le32 data[24];
};

/* sq_localinvalidate_hdr (size:256b/32B) */
struct sq_localinvalidate_hdr {
u8 wqe_type;
u8 flags;
__le16 reserved16;
__le32 inv_l_key;
__le64 reserved64;
u8 reserved128[16];
};

/* FR-PMR SQ WQE (40 bytes) */
struct sq_fr_pmr {
u8 wqe_type;
Expand Down Expand Up @@ -380,6 +444,21 @@ struct sq_fr_pmr {
__le32 data[24];
};

/* sq_fr_pmr_hdr (size:256b/32B) */
struct sq_fr_pmr_hdr {
u8 wqe_type;
u8 flags;
u8 access_cntl;
u8 zero_based_page_size_log;
__le32 l_key;
u8 length[5];
u8 reserved8_1;
u8 reserved8_2;
u8 numlevels_pbl_page_size_log;
__le64 pblptr;
__le64 va;
};

/* Bind SQ WQE (40 bytes) */
struct sq_bind {
u8 wqe_type;
Expand Down Expand Up @@ -417,6 +496,22 @@ struct sq_bind {
#define SQ_BIND_DATA_SFT 0
};

/* sq_bind_hdr (size:256b/32B) */
struct sq_bind_hdr {
u8 wqe_type;
u8 flags;
u8 access_cntl;
u8 reserved8_1;
u8 mw_type_zero_based;
u8 reserved8_2;
__le16 reserved16;
__le32 parent_l_key;
__le32 l_key;
__le64 va;
u8 length[5];
u8 reserved24[3];
};

/* RQ/SRQ WQE Structures */
/* RQ/SRQ WQE (40 bytes) */
struct rq_wqe {
Expand All @@ -435,6 +530,17 @@ struct rq_wqe {
__le32 data[24];
};

/* rq_wqe_hdr (size:256b/32B) */
struct rq_wqe_hdr {
u8 wqe_type;
u8 flags;
u8 wqe_size;
u8 reserved8;
__le32 reserved32;
__le32 wr_id[2];
u8 reserved128[16];
};

/* CQ CQE Structures */
/* Base CQE (32 bytes) */
struct cq_base {
Expand Down

0 comments on commit c78671a

Please sign in to comment.