1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * Copyright (c) 2015 Mellanox Technologies. All rights reserved. |
4 | */ |
5 | |
6 | #ifndef _LINUX_NVME_RDMA_H |
7 | #define _LINUX_NVME_RDMA_H |
8 | |
9 | #define NVME_RDMA_IP_PORT 4420 |
10 | |
11 | #define NVME_RDMA_MAX_QUEUE_SIZE 256 |
12 | #define NVME_RDMA_MAX_METADATA_QUEUE_SIZE 128 |
13 | #define NVME_RDMA_DEFAULT_QUEUE_SIZE 128 |
14 | |
15 | enum nvme_rdma_cm_fmt { |
16 | NVME_RDMA_CM_FMT_1_0 = 0x0, |
17 | }; |
18 | |
19 | enum nvme_rdma_cm_status { |
20 | NVME_RDMA_CM_INVALID_LEN = 0x01, |
21 | NVME_RDMA_CM_INVALID_RECFMT = 0x02, |
22 | NVME_RDMA_CM_INVALID_QID = 0x03, |
23 | NVME_RDMA_CM_INVALID_HSQSIZE = 0x04, |
24 | NVME_RDMA_CM_INVALID_HRQSIZE = 0x05, |
25 | NVME_RDMA_CM_NO_RSC = 0x06, |
26 | NVME_RDMA_CM_INVALID_IRD = 0x07, |
27 | NVME_RDMA_CM_INVALID_ORD = 0x08, |
28 | }; |
29 | |
30 | static inline const char *nvme_rdma_cm_msg(enum nvme_rdma_cm_status status) |
31 | { |
32 | switch (status) { |
33 | case NVME_RDMA_CM_INVALID_LEN: |
34 | return "invalid length" ; |
35 | case NVME_RDMA_CM_INVALID_RECFMT: |
36 | return "invalid record format" ; |
37 | case NVME_RDMA_CM_INVALID_QID: |
38 | return "invalid queue ID" ; |
39 | case NVME_RDMA_CM_INVALID_HSQSIZE: |
40 | return "invalid host SQ size" ; |
41 | case NVME_RDMA_CM_INVALID_HRQSIZE: |
42 | return "invalid host RQ size" ; |
43 | case NVME_RDMA_CM_NO_RSC: |
44 | return "resource not found" ; |
45 | case NVME_RDMA_CM_INVALID_IRD: |
46 | return "invalid IRD" ; |
47 | case NVME_RDMA_CM_INVALID_ORD: |
48 | return "Invalid ORD" ; |
49 | default: |
50 | return "unrecognized reason" ; |
51 | } |
52 | } |
53 | |
54 | /** |
55 | * struct nvme_rdma_cm_req - rdma connect request |
56 | * |
57 | * @recfmt: format of the RDMA Private Data |
58 | * @qid: queue Identifier for the Admin or I/O Queue |
59 | * @hrqsize: host receive queue size to be created |
60 | * @hsqsize: host send queue size to be created |
61 | */ |
62 | struct nvme_rdma_cm_req { |
63 | __le16 recfmt; |
64 | __le16 qid; |
65 | __le16 hrqsize; |
66 | __le16 hsqsize; |
67 | u8 rsvd[24]; |
68 | }; |
69 | |
70 | /** |
71 | * struct nvme_rdma_cm_rep - rdma connect reply |
72 | * |
73 | * @recfmt: format of the RDMA Private Data |
74 | * @crqsize: controller receive queue size |
75 | */ |
76 | struct nvme_rdma_cm_rep { |
77 | __le16 recfmt; |
78 | __le16 crqsize; |
79 | u8 rsvd[28]; |
80 | }; |
81 | |
82 | /** |
83 | * struct nvme_rdma_cm_rej - rdma connect reject |
84 | * |
85 | * @recfmt: format of the RDMA Private Data |
86 | * @sts: error status for the associated connect request |
87 | */ |
88 | struct nvme_rdma_cm_rej { |
89 | __le16 recfmt; |
90 | __le16 sts; |
91 | }; |
92 | |
93 | #endif /* _LINUX_NVME_RDMA_H */ |
94 | |