162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright(c) 2018 Intel Corporation. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef TID_RDMA_DEFS_H 862306a36Sopenharmony_ci#define TID_RDMA_DEFS_H 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <rdma/ib_pack.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct tid_rdma_read_req { 1362306a36Sopenharmony_ci __le32 kdeth0; 1462306a36Sopenharmony_ci __le32 kdeth1; 1562306a36Sopenharmony_ci struct ib_reth reth; 1662306a36Sopenharmony_ci __be32 tid_flow_psn; 1762306a36Sopenharmony_ci __be32 tid_flow_qp; 1862306a36Sopenharmony_ci __be32 verbs_qp; 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct tid_rdma_read_resp { 2262306a36Sopenharmony_ci __le32 kdeth0; 2362306a36Sopenharmony_ci __le32 kdeth1; 2462306a36Sopenharmony_ci __be32 aeth; 2562306a36Sopenharmony_ci __be32 reserved[4]; 2662306a36Sopenharmony_ci __be32 verbs_psn; 2762306a36Sopenharmony_ci __be32 verbs_qp; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct tid_rdma_write_req { 3162306a36Sopenharmony_ci __le32 kdeth0; 3262306a36Sopenharmony_ci __le32 kdeth1; 3362306a36Sopenharmony_ci struct ib_reth reth; 3462306a36Sopenharmony_ci __be32 reserved[2]; 3562306a36Sopenharmony_ci __be32 verbs_qp; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct tid_rdma_write_resp { 3962306a36Sopenharmony_ci __le32 kdeth0; 4062306a36Sopenharmony_ci __le32 kdeth1; 4162306a36Sopenharmony_ci __be32 aeth; 4262306a36Sopenharmony_ci __be32 reserved[3]; 4362306a36Sopenharmony_ci __be32 tid_flow_psn; 4462306a36Sopenharmony_ci __be32 tid_flow_qp; 4562306a36Sopenharmony_ci __be32 verbs_qp; 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistruct tid_rdma_write_data { 4962306a36Sopenharmony_ci __le32 kdeth0; 5062306a36Sopenharmony_ci __le32 kdeth1; 5162306a36Sopenharmony_ci __be32 reserved[6]; 5262306a36Sopenharmony_ci __be32 verbs_qp; 5362306a36Sopenharmony_ci}; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cistruct tid_rdma_resync { 5662306a36Sopenharmony_ci __le32 kdeth0; 5762306a36Sopenharmony_ci __le32 kdeth1; 5862306a36Sopenharmony_ci __be32 reserved[6]; 5962306a36Sopenharmony_ci __be32 verbs_qp; 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cistruct tid_rdma_ack { 6362306a36Sopenharmony_ci __le32 kdeth0; 6462306a36Sopenharmony_ci __le32 kdeth1; 6562306a36Sopenharmony_ci __be32 aeth; 6662306a36Sopenharmony_ci __be32 reserved[2]; 6762306a36Sopenharmony_ci __be32 tid_flow_psn; 6862306a36Sopenharmony_ci __be32 verbs_psn; 6962306a36Sopenharmony_ci __be32 tid_flow_qp; 7062306a36Sopenharmony_ci __be32 verbs_qp; 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci/* 7462306a36Sopenharmony_ci * TID RDMA Opcodes 7562306a36Sopenharmony_ci */ 7662306a36Sopenharmony_ci#define IB_OPCODE_TID_RDMA 0xe0 7762306a36Sopenharmony_cienum { 7862306a36Sopenharmony_ci IB_OPCODE_WRITE_REQ = 0x0, 7962306a36Sopenharmony_ci IB_OPCODE_WRITE_RESP = 0x1, 8062306a36Sopenharmony_ci IB_OPCODE_WRITE_DATA = 0x2, 8162306a36Sopenharmony_ci IB_OPCODE_WRITE_DATA_LAST = 0x3, 8262306a36Sopenharmony_ci IB_OPCODE_READ_REQ = 0x4, 8362306a36Sopenharmony_ci IB_OPCODE_READ_RESP = 0x5, 8462306a36Sopenharmony_ci IB_OPCODE_RESYNC = 0x6, 8562306a36Sopenharmony_ci IB_OPCODE_ACK = 0x7, 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, WRITE_REQ), 8862306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, WRITE_RESP), 8962306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, WRITE_DATA), 9062306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, WRITE_DATA_LAST), 9162306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, READ_REQ), 9262306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, READ_RESP), 9362306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, RESYNC), 9462306a36Sopenharmony_ci IB_OPCODE(TID_RDMA, ACK), 9562306a36Sopenharmony_ci}; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci#define TID_OP(x) IB_OPCODE_TID_RDMA_##x 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci/* 10062306a36Sopenharmony_ci * Define TID RDMA specific WR opcodes. The ib_wr_opcode 10162306a36Sopenharmony_ci * enum already provides some reserved values for use by 10262306a36Sopenharmony_ci * low level drivers. Two of those are used but renamed 10362306a36Sopenharmony_ci * to be more descriptive. 10462306a36Sopenharmony_ci */ 10562306a36Sopenharmony_ci#define IB_WR_TID_RDMA_WRITE IB_WR_RESERVED1 10662306a36Sopenharmony_ci#define IB_WR_TID_RDMA_READ IB_WR_RESERVED2 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#endif /* TID_RDMA_DEFS_H */ 109