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