RDMA/bnxt_re: Update missing hsi data structures

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>
This commit is contained in:
Devesh Sharma 2020-04-02 14:12:13 -04:00 committed by Jason Gunthorpe
parent 99bf84e24e
commit c78671a4e6

View File

@ -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;
@ -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;
@ -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;
@ -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;
@ -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;
@ -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;
@ -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 {
@ -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 {