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 15enum nvme_rdma_cm_fmt { 16 NVME_RDMA_CM_FMT_1_0 = 0x0, 17}; 18 19enum 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 30static 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 */ 62struct 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 */ 76struct 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 */ 88struct nvme_rdma_cm_rej { 89 __le16 recfmt; 90 __le16 sts; 91}; 92 93#endif /* _LINUX_NVME_RDMA_H */ 94