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