Commit c78671a4 authored by Devesh Sharma's avatar Devesh Sharma Committed by Jason Gunthorpe
Browse files

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: default avatarDevesh Sharma <devesh.sharma@broadcom.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 99bf84e2
Loading
Loading
Loading
Loading
+106 −0
Original line number Diff line number Diff line
@@ -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 {