mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 12:11:49 +08:00
nvme-rdma: send cntlid in the RDMA_CM_REQUEST Private Data
When sending a RDMA_CM_REQUEST, the NVMe RDMA Transport Specification allows you to populate the cntlid field in the RDMA_CM_REQUEST Private Data. The cntlid is returned by the target on completion of the first RDMA_CM_REQUEST command (which creates the admin queue). The cntlid field can then be populated by the host when the I/O queues are created (using additional RDMA_CM_REQUEST commands), such that the target can perform extra validation for additional RDMA_CM_REQUEST commands. This additional error code and error message is also added, such that nvme_rdma_cm_msg() will display the proper error message if the target fails the RDMA_CM_REQUEST command because of this extra validation. Signed-off-by: Niklas Cassel <cassel@kernel.org> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
ff4a0a4088
commit
03c3d7c743
@ -1876,6 +1876,8 @@ static int nvme_rdma_route_resolved(struct nvme_rdma_queue *queue)
|
||||
*/
|
||||
priv.hrqsize = cpu_to_le16(queue->queue_size);
|
||||
priv.hsqsize = cpu_to_le16(queue->ctrl->ctrl.sqsize);
|
||||
/* cntlid should only be set when creating an I/O queue */
|
||||
priv.cntlid = cpu_to_le16(ctrl->ctrl.cntlid);
|
||||
}
|
||||
|
||||
ret = rdma_connect_locked(queue->cm_id, ¶m);
|
||||
|
@ -25,6 +25,7 @@ enum nvme_rdma_cm_status {
|
||||
NVME_RDMA_CM_NO_RSC = 0x06,
|
||||
NVME_RDMA_CM_INVALID_IRD = 0x07,
|
||||
NVME_RDMA_CM_INVALID_ORD = 0x08,
|
||||
NVME_RDMA_CM_INVALID_CNTLID = 0x09,
|
||||
};
|
||||
|
||||
static inline const char *nvme_rdma_cm_msg(enum nvme_rdma_cm_status status)
|
||||
@ -46,6 +47,8 @@ static inline const char *nvme_rdma_cm_msg(enum nvme_rdma_cm_status status)
|
||||
return "invalid IRD";
|
||||
case NVME_RDMA_CM_INVALID_ORD:
|
||||
return "Invalid ORD";
|
||||
case NVME_RDMA_CM_INVALID_CNTLID:
|
||||
return "invalid controller ID";
|
||||
default:
|
||||
return "unrecognized reason";
|
||||
}
|
||||
@ -64,7 +67,8 @@ struct nvme_rdma_cm_req {
|
||||
__le16 qid;
|
||||
__le16 hrqsize;
|
||||
__le16 hsqsize;
|
||||
u8 rsvd[24];
|
||||
__le16 cntlid;
|
||||
u8 rsvd[22];
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user