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