|
Daniel Wagner |
59d57a |
From: Quinn Tran <qutran@marvell.com>
|
|
Daniel Wagner |
59d57a |
Date: Mon, 6 Jun 2022 21:46:18 -0700
|
|
Daniel Wagner |
59d57a |
Subject: scsi: qla2xxx: edif: bsg refactor
|
|
Denis Kirjanov |
718367 |
Patch-mainline: v5.20-rc1
|
|
Daniel Wagner |
59d57a |
Git-commit: 7a7b0b4865d3490f62d6ef1a3aa39fa2b47859a4
|
|
Daniel Wagner |
59d57a |
References: bsc#1201958
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- Add version field to edif bsg for future enhancement.
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- Add version edif bsg version check
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- Remove unused interfaces and fields.
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
Link: https://lore.kernel.org/r/20220607044627.19563-3-njavali@marvell.com
|
|
Daniel Wagner |
59d57a |
Fixes: dd30706e73b7 ("scsi: qla2xxx: edif: Add key update")
|
|
Daniel Wagner |
59d57a |
Signed-off-by: Quinn Tran <qutran@marvell.com>
|
|
Daniel Wagner |
59d57a |
Signed-off-by: Nilesh Javali <njavali@marvell.com>
|
|
Daniel Wagner |
59d57a |
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
|
Daniel Wagner |
59d57a |
Acked-by: Daniel Wagner <dwagner@suse.de>
|
|
Daniel Wagner |
59d57a |
---
|
|
Daniel Wagner |
59d57a |
drivers/scsi/qla2xxx/qla_edif.c | 32 +++++++++---
|
|
Daniel Wagner |
59d57a |
drivers/scsi/qla2xxx/qla_edif_bsg.h | 90 ++++++++++++++++++++++--------------
|
|
Daniel Wagner |
59d57a |
2 files changed, 79 insertions(+), 43 deletions(-)
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
--- a/drivers/scsi/qla2xxx/qla_edif_bsg.h
|
|
Daniel Wagner |
59d57a |
+++ b/drivers/scsi/qla2xxx/qla_edif_bsg.h
|
|
Daniel Wagner |
59d57a |
@@ -7,13 +7,15 @@
|
|
Daniel Wagner |
59d57a |
#ifndef __QLA_EDIF_BSG_H
|
|
Daniel Wagner |
59d57a |
#define __QLA_EDIF_BSG_H
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
+#define EDIF_VERSION1 1
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
/* BSG Vendor specific commands */
|
|
Daniel Wagner |
59d57a |
#define ELS_MAX_PAYLOAD 2112
|
|
Daniel Wagner |
59d57a |
#ifndef WWN_SIZE
|
|
Daniel Wagner |
59d57a |
#define WWN_SIZE 8
|
|
Daniel Wagner |
59d57a |
#endif
|
|
Daniel Wagner |
59d57a |
-#define VND_CMD_APP_RESERVED_SIZE 32
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
+#define VND_CMD_APP_RESERVED_SIZE 28
|
|
Daniel Wagner |
59d57a |
+#define VND_CMD_PAD_SIZE 3
|
|
Daniel Wagner |
59d57a |
enum auth_els_sub_cmd {
|
|
Daniel Wagner |
59d57a |
SEND_ELS = 0,
|
|
Daniel Wagner |
59d57a |
SEND_ELS_REPLY,
|
|
Daniel Wagner |
59d57a |
@@ -28,7 +30,9 @@ struct extra_auth_els {
|
|
Daniel Wagner |
59d57a |
#define BSG_CTL_FLAG_LS_ACC 1
|
|
Daniel Wagner |
59d57a |
#define BSG_CTL_FLAG_LS_RJT 2
|
|
Daniel Wagner |
59d57a |
#define BSG_CTL_FLAG_TRM 3
|
|
Daniel Wagner |
59d57a |
- uint8_t extra_rsvd[3];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[2];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct qla_bsg_auth_els_request {
|
|
Daniel Wagner |
59d57a |
@@ -39,51 +43,46 @@ struct qla_bsg_auth_els_request {
|
|
Daniel Wagner |
59d57a |
struct qla_bsg_auth_els_reply {
|
|
Daniel Wagner |
59d57a |
struct fc_bsg_reply r;
|
|
Daniel Wagner |
59d57a |
uint32_t rx_xchg_address;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
};
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_id {
|
|
Daniel Wagner |
59d57a |
int app_vid;
|
|
Daniel Wagner |
59d57a |
- uint8_t app_key[32];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_start_reply {
|
|
Daniel Wagner |
59d57a |
uint32_t host_support_edif;
|
|
Daniel Wagner |
59d57a |
uint32_t edif_enode_active;
|
|
Daniel Wagner |
59d57a |
uint32_t edif_edb_active;
|
|
Daniel Wagner |
59d57a |
- uint32_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_start {
|
|
Daniel Wagner |
59d57a |
struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
- uint32_t prli_to;
|
|
Daniel Wagner |
59d57a |
- uint32_t key_shred;
|
|
Daniel Wagner |
59d57a |
uint8_t app_start_flags;
|
|
Daniel Wagner |
59d57a |
- uint8_t reserved[VND_CMD_APP_RESERVED_SIZE - 1];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[2];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_stop {
|
|
Daniel Wagner |
59d57a |
struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
- char buf[16];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_plogi_reply {
|
|
Daniel Wagner |
59d57a |
uint32_t prli_status;
|
|
Daniel Wagner |
59d57a |
- uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
-} __packed;
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
-#define RECFG_TIME 1
|
|
Daniel Wagner |
59d57a |
-#define RECFG_BYTES 2
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
-struct app_rekey_cfg {
|
|
Daniel Wagner |
59d57a |
- struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
- uint8_t rekey_mode;
|
|
Daniel Wagner |
59d57a |
- port_id_t d_id;
|
|
Daniel Wagner |
59d57a |
- uint8_t force;
|
|
Daniel Wagner |
59d57a |
- union {
|
|
Daniel Wagner |
59d57a |
- int64_t bytes;
|
|
Daniel Wagner |
59d57a |
- int64_t time;
|
|
Daniel Wagner |
59d57a |
- } rky_units;
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -91,7 +90,9 @@ struct app_pinfo_req {
|
|
Daniel Wagner |
59d57a |
struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
uint8_t num_ports;
|
|
Daniel Wagner |
59d57a |
port_id_t remote_pid;
|
|
Daniel Wagner |
59d57a |
- uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_pinfo {
|
|
Daniel Wagner |
59d57a |
@@ -103,11 +104,8 @@ struct app_pinfo {
|
|
Daniel Wagner |
59d57a |
#define VND_CMD_RTYPE_INITIATOR 2
|
|
Daniel Wagner |
59d57a |
uint8_t remote_state;
|
|
Daniel Wagner |
59d57a |
uint8_t auth_state;
|
|
Daniel Wagner |
59d57a |
- uint8_t rekey_mode;
|
|
Daniel Wagner |
59d57a |
- int64_t rekey_count;
|
|
Daniel Wagner |
59d57a |
- int64_t rekey_config_value;
|
|
Daniel Wagner |
59d57a |
- int64_t rekey_consumed_value;
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -120,6 +118,8 @@ struct app_pinfo {
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_pinfo_reply {
|
|
Daniel Wagner |
59d57a |
uint8_t port_count;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
struct app_pinfo ports[0];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
@@ -127,6 +127,8 @@ struct app_pinfo_reply {
|
|
Daniel Wagner |
59d57a |
struct app_sinfo_req {
|
|
Daniel Wagner |
59d57a |
struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
uint8_t num_ports;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -140,6 +142,9 @@ struct app_sinfo {
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
struct app_stats_reply {
|
|
Daniel Wagner |
59d57a |
uint8_t elem_count;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
struct app_sinfo elem[0];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -163,9 +168,11 @@ struct qla_sa_update_frame {
|
|
Daniel Wagner |
59d57a |
uint8_t node_name[WWN_SIZE];
|
|
Daniel Wagner |
59d57a |
uint8_t port_name[WWN_SIZE];
|
|
Daniel Wagner |
59d57a |
port_id_t port_id;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved2[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
-// used for edif mgmt bsg interface
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_UNDEF 0
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_SA_UPDATE 1
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_APP_START 2
|
|
Daniel Wagner |
59d57a |
@@ -175,6 +182,8 @@ struct qla_sa_update_frame {
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_REKEY_CONFIG 6
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_GET_FCINFO 7
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SC_GET_STATS 8
|
|
Daniel Wagner |
59d57a |
+#define QL_VND_SC_AEN_COMPLETE 9
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
/* Application interface data structure for rtn data */
|
|
Daniel Wagner |
59d57a |
#define EXT_DEF_EVENT_DATA_SIZE 64
|
|
Daniel Wagner |
59d57a |
@@ -191,7 +200,9 @@ struct edif_sa_update_aen {
|
|
Daniel Wagner |
59d57a |
port_id_t port_id;
|
|
Daniel Wagner |
59d57a |
uint32_t key_type; /* Tx (1) or RX (2) */
|
|
Daniel Wagner |
59d57a |
uint32_t status; /* 0 succes, 1 failed, 2 timeout , 3 error */
|
|
Daniel Wagner |
59d57a |
- uint8_t reserved[16];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
#define QL_VND_SA_STAT_SUCCESS 0
|
|
Daniel Wagner |
59d57a |
@@ -212,7 +223,18 @@ struct auth_complete_cmd {
|
|
Daniel Wagner |
59d57a |
uint8_t wwpn[WWN_SIZE];
|
|
Daniel Wagner |
59d57a |
port_id_t d_id;
|
|
Daniel Wagner |
59d57a |
} u;
|
|
Daniel Wagner |
59d57a |
- uint32_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
+} __packed;
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
+struct aen_complete_cmd {
|
|
Daniel Wagner |
59d57a |
+ struct app_id app_info;
|
|
Daniel Wagner |
59d57a |
+ port_id_t port_id;
|
|
Daniel Wagner |
59d57a |
+ uint32_t event_code;
|
|
Daniel Wagner |
59d57a |
+ uint8_t version;
|
|
Daniel Wagner |
59d57a |
+ uint8_t pad[VND_CMD_PAD_SIZE];
|
|
Daniel Wagner |
59d57a |
+ uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
|
|
Daniel Wagner |
59d57a |
} __packed;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
#define RX_DELAY_DELETE_TIMEOUT 20
|
|
Daniel Wagner |
59d57a |
--- a/drivers/scsi/qla2xxx/qla_edif.c
|
|
Daniel Wagner |
59d57a |
+++ b/drivers/scsi/qla2xxx/qla_edif.c
|
|
Daniel Wagner |
59d57a |
@@ -280,14 +280,19 @@ qla_edif_app_check(scsi_qla_host_t *vha,
|
|
Daniel Wagner |
59d57a |
{
|
|
Daniel Wagner |
59d57a |
/* check that the app is allow/known to the driver */
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- if (appid.app_vid == EDIF_APP_ID) {
|
|
Daniel Wagner |
59d57a |
- ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x911d, "%s app id ok\n", __func__);
|
|
Daniel Wagner |
59d57a |
- return true;
|
|
Daniel Wagner |
59d57a |
+ if (appid.app_vid != EDIF_APP_ID) {
|
|
Daniel Wagner |
59d57a |
+ ql_dbg(ql_dbg_edif, vha, 0x911d, "%s app id not ok (%x)",
|
|
Daniel Wagner |
59d57a |
+ __func__, appid.app_vid);
|
|
Daniel Wagner |
59d57a |
+ return false;
|
|
Daniel Wagner |
59d57a |
+ }
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
+ if (appid.version != EDIF_VERSION1) {
|
|
Daniel Wagner |
59d57a |
+ ql_dbg(ql_dbg_edif, vha, 0x911d, "%s app version is not ok (%x)",
|
|
Daniel Wagner |
59d57a |
+ __func__, appid.version);
|
|
Daniel Wagner |
59d57a |
+ return false;
|
|
Daniel Wagner |
59d57a |
}
|
|
Daniel Wagner |
59d57a |
- ql_dbg(ql_dbg_edif, vha, 0x911d, "%s app id not ok (%x)",
|
|
Daniel Wagner |
59d57a |
- __func__, appid.app_vid);
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- return false;
|
|
Daniel Wagner |
59d57a |
+ return true;
|
|
Daniel Wagner |
59d57a |
}
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
static void
|
|
Daniel Wagner |
59d57a |
@@ -555,6 +560,7 @@ qla_edif_app_start(scsi_qla_host_t *vha,
|
|
Daniel Wagner |
59d57a |
appreply.host_support_edif = vha->hw->flags.edif_enabled;
|
|
Daniel Wagner |
59d57a |
appreply.edif_enode_active = vha->pur_cinfo.enode_flags;
|
|
Daniel Wagner |
59d57a |
appreply.edif_edb_active = vha->e_dbell.db_flags;
|
|
Daniel Wagner |
59d57a |
+ appreply.version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
bsg_job->reply_len = sizeof(struct fc_bsg_reply);
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -684,6 +690,7 @@ qla_edif_app_authok(scsi_qla_host_t *vha
|
|
Daniel Wagner |
59d57a |
portid.b.area = appplogiok.u.d_id.b.area;
|
|
Daniel Wagner |
59d57a |
portid.b.al_pa = appplogiok.u.d_id.b.al_pa;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
+ appplogireply.version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
switch (appplogiok.type) {
|
|
Daniel Wagner |
59d57a |
case PL_TYPE_WWPN:
|
|
Daniel Wagner |
59d57a |
fcport = qla2x00_find_fcport_by_wwpn(vha,
|
|
Daniel Wagner |
59d57a |
@@ -876,6 +883,8 @@ qla_edif_app_getfcinfo(scsi_qla_host_t *
|
|
Daniel Wagner |
59d57a |
} else {
|
|
Daniel Wagner |
59d57a |
struct fc_port *fcport = NULL, *tf;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
+ app_reply->version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
list_for_each_entry_safe(fcport, tf, &vha->vp_fcports, list) {
|
|
Daniel Wagner |
59d57a |
if (!(fcport->flags & FCF_FCSP_DEVICE))
|
|
Daniel Wagner |
59d57a |
continue;
|
|
Daniel Wagner |
59d57a |
@@ -892,9 +901,6 @@ qla_edif_app_getfcinfo(scsi_qla_host_t *
|
|
Daniel Wagner |
59d57a |
if (tdid.b24 != 0 && tdid.b24 != fcport->d_id.b24)
|
|
Daniel Wagner |
59d57a |
continue;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
- app_reply->ports[pcnt].rekey_count =
|
|
Daniel Wagner |
59d57a |
- fcport->edif.rekey_cnt;
|
|
Daniel Wagner |
59d57a |
-
|
|
Daniel Wagner |
59d57a |
if (fcport->scan_state != QLA_FCPORT_FOUND)
|
|
Daniel Wagner |
59d57a |
continue;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
@@ -909,6 +915,7 @@ qla_edif_app_getfcinfo(scsi_qla_host_t *
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
rval = 0;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
+ app_reply->ports[pcnt].version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
app_reply->ports[pcnt].remote_type =
|
|
Daniel Wagner |
59d57a |
VND_CMD_RTYPE_UNKNOWN;
|
|
Daniel Wagner |
59d57a |
if (fcport->port_type & (FCT_NVME_TARGET | FCT_TARGET))
|
|
Daniel Wagner |
59d57a |
@@ -1005,6 +1012,8 @@ qla_edif_app_getstats(scsi_qla_host_t *v
|
|
Daniel Wagner |
59d57a |
} else {
|
|
Daniel Wagner |
59d57a |
struct fc_port *fcport = NULL, *tf;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
+ app_reply->version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
list_for_each_entry_safe(fcport, tf, &vha->vp_fcports, list) {
|
|
Daniel Wagner |
59d57a |
if (fcport->edif.enable) {
|
|
Daniel Wagner |
59d57a |
if (pcnt > app_req.num_ports)
|
|
Daniel Wagner |
59d57a |
@@ -2036,6 +2045,7 @@ qla_edb_eventcreate(scsi_qla_host_t *vha
|
|
Daniel Wagner |
59d57a |
edbnode->u.sa_aen.port_id = fcport->d_id;
|
|
Daniel Wagner |
59d57a |
edbnode->u.sa_aen.status = data;
|
|
Daniel Wagner |
59d57a |
edbnode->u.sa_aen.key_type = data2;
|
|
Daniel Wagner |
59d57a |
+ edbnode->u.sa_aen.version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
break;
|
|
Daniel Wagner |
59d57a |
default:
|
|
Daniel Wagner |
59d57a |
ql_dbg(ql_dbg_edif, vha, 0x09102,
|
|
Daniel Wagner |
59d57a |
@@ -3379,6 +3389,10 @@ int qla_edif_process_els(scsi_qla_host_t
|
|
Daniel Wagner |
59d57a |
port_id_t d_id;
|
|
Daniel Wagner |
59d57a |
struct qla_bsg_auth_els_request *p =
|
|
Daniel Wagner |
59d57a |
(struct qla_bsg_auth_els_request *)bsg_job->request;
|
|
Daniel Wagner |
59d57a |
+ struct qla_bsg_auth_els_reply *rpl =
|
|
Daniel Wagner |
59d57a |
+ (struct qla_bsg_auth_els_reply *)bsg_job->reply;
|
|
Daniel Wagner |
59d57a |
+
|
|
Daniel Wagner |
59d57a |
+ rpl->version = EDIF_VERSION1;
|
|
Daniel Wagner |
59d57a |
|
|
Daniel Wagner |
59d57a |
d_id.b.al_pa = bsg_request->rqst_data.h_els.port_id[2];
|
|
Daniel Wagner |
59d57a |
d_id.b.area = bsg_request->rqst_data.h_els.port_id[1];
|