/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2015 Mellanox Technologies. All rights reserved. */ #ifndef _LINUX_NVME_RDMA_H #define _LINUX_NVME_RDMA_H enum nvme_rdma_cm_fmt { NVME_RDMA_CM_FMT_1_0 = 0x0, }; enum nvme_rdma_cm_status { NVME_RDMA_CM_INVALID_LEN = 0x01, NVME_RDMA_CM_INVALID_RECFMT = 0x02, NVME_RDMA_CM_INVALID_QID = 0x03, NVME_RDMA_CM_INVALID_HSQSIZE = 0x04, NVME_RDMA_CM_INVALID_HRQSIZE = 0x05, NVME_RDMA_CM_NO_RSC = 0x06, NVME_RDMA_CM_INVALID_IRD = 0x07, NVME_RDMA_CM_INVALID_ORD = 0x08, }; static inline const char *nvme_rdma_cm_msg(enum nvme_rdma_cm_status status) { switch (status) { case NVME_RDMA_CM_INVALID_LEN: return "invalid length"; case NVME_RDMA_CM_INVALID_RECFMT: return "invalid record format"; case NVME_RDMA_CM_INVALID_QID: return "invalid queue ID"; case NVME_RDMA_CM_INVALID_HSQSIZE: return "invalid host SQ size"; case NVME_RDMA_CM_INVALID_HRQSIZE: return "invalid host RQ size"; case NVME_RDMA_CM_NO_RSC: return "resource not found"; case NVME_RDMA_CM_INVALID_IRD: return "invalid IRD"; case NVME_RDMA_CM_INVALID_ORD: return "Invalid ORD"; default: return "unrecognized reason"; } } /** * struct nvme_rdma_cm_req - rdma connect request * * @recfmt: format of the RDMA Private Data * @qid: queue Identifier for the Admin or I/O Queue * @hrqsize: host receive queue size to be created * @hsqsize: host send queue size to be created */ struct nvme_rdma_cm_req { __le16 recfmt; __le16 qid; __le16 hrqsize; __le16 hsqsize; u8 rsvd[24]; }; /** * struct nvme_rdma_cm_rep - rdma connect reply * * @recfmt: format of the RDMA Private Data * @crqsize: controller receive queue size */ struct nvme_rdma_cm_rep { __le16 recfmt; __le16 crqsize; u8 rsvd[28]; }; /** * struct nvme_rdma_cm_rej - rdma connect reject * * @recfmt: format of the RDMA Private Data * @sts: error status for the associated connect request */ struct nvme_rdma_cm_rej { __le16 recfmt; __le16 sts; }; #endif /* _LINUX_NVME_RDMA_H */