|
Hannes Reinecke |
7fc52c |
From: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
7fc52c |
Date: Tue, 31 Mar 2020 09:49:48 -0700
|
|
Hannes Reinecke |
7fc52c |
Subject: [PATCH] nvme-fc nvmet-fc: refactor for common LS definitions
|
|
Hannes Reinecke |
7fc52c |
Git-commit: c0005a9d63a6127c2914e0b66c7224b0bb5b5fd4
|
|
Hannes Reinecke |
7fc52c |
Git-repo: git://git.infradead.org/nvme.git
|
|
Hannes Reinecke |
7fc52c |
Patch-mainline: Queued in subsystem maintainer repository
|
|
Hannes Reinecke |
7fc52c |
References: bsc#1169045
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
Routines in the target will want to be used in the host as well.
|
|
Hannes Reinecke |
7fc52c |
Error definitions should now shared as both sides will process
|
|
Hannes Reinecke |
7fc52c |
requests and responses to requests.
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
Moved common declarations to new fc.h header kept in the host
|
|
Hannes Reinecke |
7fc52c |
subdirectory.
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
Signed-off-by: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
7fc52c |
Reviewed-by: Hannes Reinecke <hare@suse.de>
|
|
Hannes Reinecke |
7fc52c |
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
|
|
Hannes Reinecke |
7fc52c |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
7fc52c |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
7fc52c |
---
|
|
Hannes Reinecke |
7fc52c |
drivers/nvme/host/fc.c | 36 +------------
|
|
Hannes Reinecke |
7fc52c |
drivers/nvme/host/fc.h | 133 +++++++++++++++++++++++++++++++++++++++++++++++
|
|
Hannes Reinecke |
7fc52c |
drivers/nvme/target/fc.c | 115 ++++------------------------------------
|
|
Hannes Reinecke |
7fc52c |
3 files changed, 143 insertions(+), 141 deletions(-)
|
|
Hannes Reinecke |
7fc52c |
create mode 100644 drivers/nvme/host/fc.h
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
|
|
Hannes Reinecke |
7fc52c |
index 8012099fc3ee..83f9b2ac7c55 100644
|
|
Hannes Reinecke |
7fc52c |
--- a/drivers/nvme/host/fc.c
|
|
Hannes Reinecke |
7fc52c |
+++ b/drivers/nvme/host/fc.c
|
|
Hannes Reinecke |
7fc52c |
@@ -14,6 +14,7 @@
|
|
Hannes Reinecke |
7fc52c |
#include "fabrics.h"
|
|
Hannes Reinecke |
7fc52c |
#include <linux/nvme-fc-driver.h>
|
|
Hannes Reinecke |
7fc52c |
#include <linux/nvme-fc.h>
|
|
Hannes Reinecke |
7fc52c |
+#include "fc.h"
|
|
Hannes Reinecke |
7fc52c |
#include <scsi/scsi_transport_fc.h>
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
/* *************************** Data Structures/Defines ****************** */
|
|
Hannes Reinecke |
7fc52c |
@@ -1140,41 +1141,6 @@ nvme_fc_send_ls_req_async(struct nvme_fc_rport *rport,
|
|
Hannes Reinecke |
7fc52c |
return __nvme_fc_send_ls_req(rport, lsop, done);
|
|
Hannes Reinecke |
7fc52c |
}
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
-/* Validation Error indexes into the string table below */
|
|
Hannes Reinecke |
7fc52c |
-enum {
|
|
Hannes Reinecke |
7fc52c |
- VERR_NO_ERROR = 0,
|
|
Hannes Reinecke |
7fc52c |
- VERR_LSACC = 1,
|
|
Hannes Reinecke |
7fc52c |
- VERR_LSDESC_RQST = 2,
|
|
Hannes Reinecke |
7fc52c |
- VERR_LSDESC_RQST_LEN = 3,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ASSOC_ID = 4,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ASSOC_ID_LEN = 5,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CONN_ID = 6,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CONN_ID_LEN = 7,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC = 8,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC_ACC_LEN = 9,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN = 10,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN_ACC_LEN = 11,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN = 12,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_ACC_LEN = 13,
|
|
Hannes Reinecke |
7fc52c |
-};
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
-static char *validation_errors[] = {
|
|
Hannes Reinecke |
7fc52c |
- "OK",
|
|
Hannes Reinecke |
7fc52c |
- "Not LS_ACC",
|
|
Hannes Reinecke |
7fc52c |
- "Not LSDESC_RQST",
|
|
Hannes Reinecke |
7fc52c |
- "Bad LSDESC_RQST Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not Association ID",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Association ID Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not Connection ID",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Connection ID Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not CR_ASSOC Rqst",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_ASSOC ACC Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not CR_CONN Rqst",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_CONN ACC Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not Disconnect Rqst",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Disconnect ACC Length",
|
|
Hannes Reinecke |
7fc52c |
-};
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
static int
|
|
Hannes Reinecke |
7fc52c |
nvme_fc_connect_admin_queue(struct nvme_fc_ctrl *ctrl,
|
|
Hannes Reinecke |
7fc52c |
struct nvme_fc_queue *queue, u16 qsize, u16 ersp_ratio)
|
|
Hannes Reinecke |
7fc52c |
diff --git a/drivers/nvme/host/fc.h b/drivers/nvme/host/fc.h
|
|
Hannes Reinecke |
7fc52c |
new file mode 100644
|
|
Hannes Reinecke |
7fc52c |
index 000000000000..d2861cdd58ee
|
|
Hannes Reinecke |
7fc52c |
--- /dev/null
|
|
Hannes Reinecke |
7fc52c |
+++ b/drivers/nvme/host/fc.h
|
|
Hannes Reinecke |
7fc52c |
@@ -0,0 +1,133 @@
|
|
Hannes Reinecke |
7fc52c |
+/* SPDX-License-Identifier: GPL-2.0 */
|
|
Hannes Reinecke |
7fc52c |
+/*
|
|
Hannes Reinecke |
7fc52c |
+ * Copyright (c) 2016, Avago Technologies
|
|
Hannes Reinecke |
7fc52c |
+ */
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+#ifndef _NVME_FC_TRANSPORT_H
|
|
Hannes Reinecke |
7fc52c |
+#define _NVME_FC_TRANSPORT_H 1
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+/*
|
|
Hannes Reinecke |
7fc52c |
+ * Common definitions between the nvme_fc (host) transport and
|
|
Hannes Reinecke |
7fc52c |
+ * nvmet_fc (target) transport implementation.
|
|
Hannes Reinecke |
7fc52c |
+ */
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+/*
|
|
Hannes Reinecke |
7fc52c |
+ * ****************** FC-NVME LS HANDLING ******************
|
|
Hannes Reinecke |
7fc52c |
+ */
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+static inline void
|
|
Hannes Reinecke |
7fc52c |
+nvme_fc_format_rsp_hdr(void *buf, u8 ls_cmd, __be32 desc_len, u8 rqst_ls_cmd)
|
|
Hannes Reinecke |
7fc52c |
+{
|
|
Hannes Reinecke |
7fc52c |
+ struct fcnvme_ls_acc_hdr *acc = buf;
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+ acc->w0.ls_cmd = ls_cmd;
|
|
Hannes Reinecke |
7fc52c |
+ acc->desc_list_len = desc_len;
|
|
Hannes Reinecke |
7fc52c |
+ acc->rqst.desc_tag = cpu_to_be32(FCNVME_LSDESC_RQST);
|
|
Hannes Reinecke |
7fc52c |
+ acc->rqst.desc_len =
|
|
Hannes Reinecke |
7fc52c |
+ fcnvme_lsdesc_len(sizeof(struct fcnvme_lsdesc_rqst));
|
|
Hannes Reinecke |
7fc52c |
+ acc->rqst.w0.ls_cmd = rqst_ls_cmd;
|
|
Hannes Reinecke |
7fc52c |
+}
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+static inline int
|
|
Hannes Reinecke |
7fc52c |
+nvme_fc_format_rjt(void *buf, u16 buflen, u8 ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
+ u8 reason, u8 explanation, u8 vendor)
|
|
Hannes Reinecke |
7fc52c |
+{
|
|
Hannes Reinecke |
7fc52c |
+ struct fcnvme_ls_rjt *rjt = buf;
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+ nvme_fc_format_rsp_hdr(buf, FCNVME_LSDESC_RQST,
|
|
Hannes Reinecke |
7fc52c |
+ fcnvme_lsdesc_len(sizeof(struct fcnvme_ls_rjt)),
|
|
Hannes Reinecke |
7fc52c |
+ ls_cmd);
|
|
Hannes Reinecke |
7fc52c |
+ rjt->rjt.desc_tag = cpu_to_be32(FCNVME_LSDESC_RJT);
|
|
Hannes Reinecke |
7fc52c |
+ rjt->rjt.desc_len = fcnvme_lsdesc_len(sizeof(struct fcnvme_lsdesc_rjt));
|
|
Hannes Reinecke |
7fc52c |
+ rjt->rjt.reason_code = reason;
|
|
Hannes Reinecke |
7fc52c |
+ rjt->rjt.reason_explanation = explanation;
|
|
Hannes Reinecke |
7fc52c |
+ rjt->rjt.vendor = vendor;
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+ return sizeof(struct fcnvme_ls_rjt);
|
|
Hannes Reinecke |
7fc52c |
+}
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+/* Validation Error indexes into the string table below */
|
|
Hannes Reinecke |
7fc52c |
+enum {
|
|
Hannes Reinecke |
7fc52c |
+ VERR_NO_ERROR = 0,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC_LEN = 1,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC_RQST_LEN = 2,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC_CMD = 3,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC_CMD_LEN = 4,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_ERSP_RATIO = 5,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_ASSOC_ALLOC_FAIL = 6,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_QUEUE_ALLOC_FAIL = 7,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN_LEN = 8,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN_RQST_LEN = 9,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_ASSOC_ID = 10,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_ASSOC_ID_LEN = 11,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_NO_ASSOC = 12,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CONN_ID = 13,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CONN_ID_LEN = 14,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_INVAL_CONN = 15,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN_CMD = 16,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN_CMD_LEN = 17,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_LEN = 18,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_RQST_LEN = 19,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_CMD = 20,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_CMD_LEN = 21,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_SCOPE = 22,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_LEN = 23,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_RQST_LEN = 24,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_CMD = 25,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_CMD_LEN = 26,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_RCTL = 27,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_RS_RO = 28,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_LSACC = 29,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_LSDESC_RQST = 30,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_LSDESC_RQST_LEN = 31,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC = 32,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_ASSOC_ACC_LEN = 33,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN = 34,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_CR_CONN_ACC_LEN = 35,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN = 36,
|
|
Hannes Reinecke |
7fc52c |
+ VERR_DISCONN_ACC_LEN = 37,
|
|
Hannes Reinecke |
7fc52c |
+};
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+static char *validation_errors[] = {
|
|
Hannes Reinecke |
7fc52c |
+ "OK",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_ASSOC Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_ASSOC Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not CR_ASSOC Cmd",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_ASSOC Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad Ersp Ratio",
|
|
Hannes Reinecke |
7fc52c |
+ "Association Allocation Failed",
|
|
Hannes Reinecke |
7fc52c |
+ "Queue Allocation Failed",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_CONN Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_CONN Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not Association ID",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad Association ID Length",
|
|
Hannes Reinecke |
7fc52c |
+ "No Association",
|
|
Hannes Reinecke |
7fc52c |
+ "Not Connection ID",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad Connection ID Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Invalid Connection ID",
|
|
Hannes Reinecke |
7fc52c |
+ "Not CR_CONN Cmd",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_CONN Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad DISCONN Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad DISCONN Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not DISCONN Cmd",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad DISCONN Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad Disconnect Scope",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad RS Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad RS Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not RS Cmd",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad RS Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad RS R_CTL",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad RS Relative Offset",
|
|
Hannes Reinecke |
7fc52c |
+ "Not LS_ACC",
|
|
Hannes Reinecke |
7fc52c |
+ "Not LSDESC_RQST",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad LSDESC_RQST Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not CR_ASSOC Rqst",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_ASSOC ACC Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not CR_CONN Rqst",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad CR_CONN ACC Length",
|
|
Hannes Reinecke |
7fc52c |
+ "Not Disconnect Rqst",
|
|
Hannes Reinecke |
7fc52c |
+ "Bad Disconnect ACC Length",
|
|
Hannes Reinecke |
7fc52c |
+};
|
|
Hannes Reinecke |
7fc52c |
+
|
|
Hannes Reinecke |
7fc52c |
+#endif /* _NVME_FC_TRANSPORT_H */
|
|
Hannes Reinecke |
7fc52c |
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
7fc52c |
index aac7869a70bb..1f3118a3b0a3 100644
|
|
Hannes Reinecke |
7fc52c |
--- a/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
7fc52c |
+++ b/drivers/nvme/target/fc.c
|
|
Hannes Reinecke |
7fc52c |
@@ -14,6 +14,7 @@
|
|
Hannes Reinecke |
7fc52c |
#include "nvmet.h"
|
|
Hannes Reinecke |
7fc52c |
#include <linux/nvme-fc-driver.h>
|
|
Hannes Reinecke |
7fc52c |
#include <linux/nvme-fc.h>
|
|
Hannes Reinecke |
7fc52c |
+#include "../host/fc.h"
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
/* *************************** Data Structures/Defines ****************** */
|
|
Hannes Reinecke |
7fc52c |
@@ -1257,102 +1258,6 @@ EXPORT_SYMBOL_GPL(nvmet_fc_unregister_targetport);
|
|
Hannes Reinecke |
7fc52c |
/* *********************** FC-NVME LS Handling **************************** */
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
-static void
|
|
Hannes Reinecke |
7fc52c |
-nvmet_fc_format_rsp_hdr(void *buf, u8 ls_cmd, __be32 desc_len, u8 rqst_ls_cmd)
|
|
Hannes Reinecke |
7fc52c |
-{
|
|
Hannes Reinecke |
7fc52c |
- struct fcnvme_ls_acc_hdr *acc = buf;
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
- acc->w0.ls_cmd = ls_cmd;
|
|
Hannes Reinecke |
7fc52c |
- acc->desc_list_len = desc_len;
|
|
Hannes Reinecke |
7fc52c |
- acc->rqst.desc_tag = cpu_to_be32(FCNVME_LSDESC_RQST);
|
|
Hannes Reinecke |
7fc52c |
- acc->rqst.desc_len =
|
|
Hannes Reinecke |
7fc52c |
- fcnvme_lsdesc_len(sizeof(struct fcnvme_lsdesc_rqst));
|
|
Hannes Reinecke |
7fc52c |
- acc->rqst.w0.ls_cmd = rqst_ls_cmd;
|
|
Hannes Reinecke |
7fc52c |
-}
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
-static int
|
|
Hannes Reinecke |
7fc52c |
-nvmet_fc_format_rjt(void *buf, u16 buflen, u8 ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
- u8 reason, u8 explanation, u8 vendor)
|
|
Hannes Reinecke |
7fc52c |
-{
|
|
Hannes Reinecke |
7fc52c |
- struct fcnvme_ls_rjt *rjt = buf;
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
- nvmet_fc_format_rsp_hdr(buf, FCNVME_LSDESC_RQST,
|
|
Hannes Reinecke |
7fc52c |
- fcnvme_lsdesc_len(sizeof(struct fcnvme_ls_rjt)),
|
|
Hannes Reinecke |
7fc52c |
- ls_cmd);
|
|
Hannes Reinecke |
7fc52c |
- rjt->rjt.desc_tag = cpu_to_be32(FCNVME_LSDESC_RJT);
|
|
Hannes Reinecke |
7fc52c |
- rjt->rjt.desc_len = fcnvme_lsdesc_len(sizeof(struct fcnvme_lsdesc_rjt));
|
|
Hannes Reinecke |
7fc52c |
- rjt->rjt.reason_code = reason;
|
|
Hannes Reinecke |
7fc52c |
- rjt->rjt.reason_explanation = explanation;
|
|
Hannes Reinecke |
7fc52c |
- rjt->rjt.vendor = vendor;
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
- return sizeof(struct fcnvme_ls_rjt);
|
|
Hannes Reinecke |
7fc52c |
-}
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
-/* Validation Error indexes into the string table below */
|
|
Hannes Reinecke |
7fc52c |
-enum {
|
|
Hannes Reinecke |
7fc52c |
- VERR_NO_ERROR = 0,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC_LEN = 1,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC_RQST_LEN = 2,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC_CMD = 3,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_ASSOC_CMD_LEN = 4,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ERSP_RATIO = 5,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ASSOC_ALLOC_FAIL = 6,
|
|
Hannes Reinecke |
7fc52c |
- VERR_QUEUE_ALLOC_FAIL = 7,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN_LEN = 8,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN_RQST_LEN = 9,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ASSOC_ID = 10,
|
|
Hannes Reinecke |
7fc52c |
- VERR_ASSOC_ID_LEN = 11,
|
|
Hannes Reinecke |
7fc52c |
- VERR_NO_ASSOC = 12,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CONN_ID = 13,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CONN_ID_LEN = 14,
|
|
Hannes Reinecke |
7fc52c |
- VERR_NO_CONN = 15,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN_CMD = 16,
|
|
Hannes Reinecke |
7fc52c |
- VERR_CR_CONN_CMD_LEN = 17,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_LEN = 18,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_RQST_LEN = 19,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_CMD = 20,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_CMD_LEN = 21,
|
|
Hannes Reinecke |
7fc52c |
- VERR_DISCONN_SCOPE = 22,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_LEN = 23,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_RQST_LEN = 24,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_CMD = 25,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_CMD_LEN = 26,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_RCTL = 27,
|
|
Hannes Reinecke |
7fc52c |
- VERR_RS_RO = 28,
|
|
Hannes Reinecke |
7fc52c |
-};
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
-static char *validation_errors[] = {
|
|
Hannes Reinecke |
7fc52c |
- "OK",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_ASSOC Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_ASSOC Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not CR_ASSOC Cmd",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_ASSOC Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Ersp Ratio",
|
|
Hannes Reinecke |
7fc52c |
- "Association Allocation Failed",
|
|
Hannes Reinecke |
7fc52c |
- "Queue Allocation Failed",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_CONN Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_CONN Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not Association ID",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Association ID Length",
|
|
Hannes Reinecke |
7fc52c |
- "No Association",
|
|
Hannes Reinecke |
7fc52c |
- "Not Connection ID",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Connection ID Length",
|
|
Hannes Reinecke |
7fc52c |
- "No Connection",
|
|
Hannes Reinecke |
7fc52c |
- "Not CR_CONN Cmd",
|
|
Hannes Reinecke |
7fc52c |
- "Bad CR_CONN Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad DISCONN Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad DISCONN Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not DISCONN Cmd",
|
|
Hannes Reinecke |
7fc52c |
- "Bad DISCONN Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad Disconnect Scope",
|
|
Hannes Reinecke |
7fc52c |
- "Bad RS Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad RS Rqst Length",
|
|
Hannes Reinecke |
7fc52c |
- "Not RS Cmd",
|
|
Hannes Reinecke |
7fc52c |
- "Bad RS Cmd Length",
|
|
Hannes Reinecke |
7fc52c |
- "Bad RS R_CTL",
|
|
Hannes Reinecke |
7fc52c |
- "Bad RS Relative Offset",
|
|
Hannes Reinecke |
7fc52c |
-};
|
|
Hannes Reinecke |
7fc52c |
-
|
|
Hannes Reinecke |
7fc52c |
static void
|
|
Hannes Reinecke |
7fc52c |
nvmet_fc_ls_create_association(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
struct nvmet_fc_ls_iod *iod)
|
|
Hannes Reinecke |
7fc52c |
@@ -1407,7 +1312,7 @@ nvmet_fc_ls_create_association(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
dev_err(tgtport->dev,
|
|
Hannes Reinecke |
7fc52c |
"Create Association LS failed: %s\n",
|
|
Hannes Reinecke |
7fc52c |
validation_errors[ret]);
|
|
Hannes Reinecke |
7fc52c |
- iod->lsrsp->rsplen = nvmet_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
+ iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
NVME_FC_MAX_LS_BUFFER_SIZE, rqst->w0.ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_RC_LOGIC,
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_EXP_NONE, 0);
|
|
Hannes Reinecke |
7fc52c |
@@ -1422,7 +1327,7 @@ nvmet_fc_ls_create_association(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
iod->lsrsp->rsplen = sizeof(*acc);
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
- nvmet_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
+ nvme_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
fcnvme_lsdesc_len(
|
|
Hannes Reinecke |
7fc52c |
sizeof(struct fcnvme_ls_cr_assoc_acc)),
|
|
Hannes Reinecke |
7fc52c |
FCNVME_LS_CREATE_ASSOCIATION);
|
|
Hannes Reinecke |
7fc52c |
@@ -1498,7 +1403,7 @@ nvmet_fc_ls_create_connection(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
dev_err(tgtport->dev,
|
|
Hannes Reinecke |
7fc52c |
"Create Connection LS failed: %s\n",
|
|
Hannes Reinecke |
7fc52c |
validation_errors[ret]);
|
|
Hannes Reinecke |
7fc52c |
- iod->lsrsp->rsplen = nvmet_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
+ iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
NVME_FC_MAX_LS_BUFFER_SIZE, rqst->w0.ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
(ret == VERR_NO_ASSOC) ?
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_RC_INV_ASSOC :
|
|
Hannes Reinecke |
7fc52c |
@@ -1515,7 +1420,7 @@ nvmet_fc_ls_create_connection(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
iod->lsrsp->rsplen = sizeof(*acc);
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
- nvmet_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
+ nvme_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
fcnvme_lsdesc_len(sizeof(struct fcnvme_ls_cr_conn_acc)),
|
|
Hannes Reinecke |
7fc52c |
FCNVME_LS_CREATE_CONNECTION);
|
|
Hannes Reinecke |
7fc52c |
acc->connectid.desc_tag = cpu_to_be32(FCNVME_LSDESC_CONN_ID);
|
|
Hannes Reinecke |
7fc52c |
@@ -1578,13 +1483,11 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
dev_err(tgtport->dev,
|
|
Hannes Reinecke |
7fc52c |
"Disconnect LS failed: %s\n",
|
|
Hannes Reinecke |
7fc52c |
validation_errors[ret]);
|
|
Hannes Reinecke |
7fc52c |
- iod->lsrsp->rsplen = nvmet_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
+ iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
|
|
Hannes Reinecke |
7fc52c |
NVME_FC_MAX_LS_BUFFER_SIZE, rqst->w0.ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
(ret == VERR_NO_ASSOC) ?
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_RC_INV_ASSOC :
|
|
Hannes Reinecke |
7fc52c |
- (ret == VERR_NO_CONN) ?
|
|
Hannes Reinecke |
7fc52c |
- FCNVME_RJT_RC_INV_CONN :
|
|
Hannes Reinecke |
7fc52c |
- FCNVME_RJT_RC_LOGIC,
|
|
Hannes Reinecke |
7fc52c |
+ FCNVME_RJT_RC_LOGIC,
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_EXP_NONE, 0);
|
|
Hannes Reinecke |
7fc52c |
return;
|
|
Hannes Reinecke |
7fc52c |
}
|
|
Hannes Reinecke |
7fc52c |
@@ -1593,7 +1496,7 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
iod->lsrsp->rsplen = sizeof(*acc);
|
|
Hannes Reinecke |
7fc52c |
|
|
Hannes Reinecke |
7fc52c |
- nvmet_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
+ nvme_fc_format_rsp_hdr(acc, FCNVME_LS_ACC,
|
|
Hannes Reinecke |
7fc52c |
fcnvme_lsdesc_len(
|
|
Hannes Reinecke |
7fc52c |
sizeof(struct fcnvme_ls_disconnect_assoc_acc)),
|
|
Hannes Reinecke |
7fc52c |
FCNVME_LS_DISCONNECT_ASSOC);
|
|
Hannes Reinecke |
7fc52c |
@@ -1676,7 +1579,7 @@ nvmet_fc_handle_ls_rqst(struct nvmet_fc_tgtport *tgtport,
|
|
Hannes Reinecke |
7fc52c |
nvmet_fc_ls_disconnect(tgtport, iod);
|
|
Hannes Reinecke |
7fc52c |
break;
|
|
Hannes Reinecke |
7fc52c |
default:
|
|
Hannes Reinecke |
7fc52c |
- iod->lsrsp->rsplen = nvmet_fc_format_rjt(iod->rspbuf,
|
|
Hannes Reinecke |
7fc52c |
+ iod->lsrsp->rsplen = nvme_fc_format_rjt(iod->rspbuf,
|
|
Hannes Reinecke |
7fc52c |
NVME_FC_MAX_LS_BUFFER_SIZE, w0->ls_cmd,
|
|
Hannes Reinecke |
7fc52c |
FCNVME_RJT_RC_INVAL, FCNVME_RJT_EXP_NONE, 0);
|
|
Hannes Reinecke |
7fc52c |
}
|
|
Hannes Reinecke |
7fc52c |
--
|
|
Hannes Reinecke |
7fc52c |
2.16.4
|
|
Hannes Reinecke |
7fc52c |
|