|
Daniel Wagner |
7d82e3 |
From: Quinn Tran <qutran@marvell.com>
|
|
Daniel Wagner |
7d82e3 |
Date: Mon, 6 Jun 2022 21:46:24 -0700
|
|
Daniel Wagner |
7d82e3 |
Subject: scsi: qla2xxx: edif: Remove old doorbell interface
|
|
Denis Kirjanov |
718367 |
Patch-mainline: v5.20-rc1
|
|
Daniel Wagner |
7d82e3 |
Git-commit: 1040e5f75ddf56fdd571a2a14b4d1a9e8ed846a9
|
|
Daniel Wagner |
7d82e3 |
References: bsc#1201958
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
Recently driver has implemented a new doorbell mechanism via bsg. The new
|
|
Daniel Wagner |
7d82e3 |
doorbell tells driver the exact buffer size application has where driver
|
|
Daniel Wagner |
7d82e3 |
can fill it up with events. The old doorbell guestimated application buffer
|
|
Daniel Wagner |
7d82e3 |
size is 256.
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
Remove duplicate functionality, the application has moved on to the new
|
|
Daniel Wagner |
7d82e3 |
doorbell interface.
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
Link: https://lore.kernel.org/r/20220607044627.19563-9-njavali@marvell.com
|
|
Daniel Wagner |
7d82e3 |
Signed-off-by: Quinn Tran <qutran@marvell.com>
|
|
Daniel Wagner |
7d82e3 |
Signed-off-by: Nilesh Javali <njavali@marvell.com>
|
|
Daniel Wagner |
7d82e3 |
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
|
Daniel Wagner |
7d82e3 |
Acked-by: Daniel Wagner <dwagner@suse.de>
|
|
Daniel Wagner |
7d82e3 |
---
|
|
Daniel Wagner |
7d82e3 |
drivers/scsi/qla2xxx/qla_attr.c | 2 -
|
|
Daniel Wagner |
7d82e3 |
drivers/scsi/qla2xxx/qla_edif.c | 78 ----------------------------------------
|
|
Daniel Wagner |
7d82e3 |
drivers/scsi/qla2xxx/qla_gbl.h | 1
|
|
Daniel Wagner |
7d82e3 |
3 files changed, 81 deletions(-)
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
--- a/drivers/scsi/qla2xxx/qla_attr.c
|
|
Daniel Wagner |
7d82e3 |
+++ b/drivers/scsi/qla2xxx/qla_attr.c
|
|
Daniel Wagner |
7d82e3 |
@@ -2477,7 +2477,6 @@ static DEVICE_ATTR(port_speed, 0644, qla
|
|
Daniel Wagner |
7d82e3 |
qla2x00_port_speed_store);
|
|
Daniel Wagner |
7d82e3 |
static DEVICE_ATTR(port_no, 0444, qla2x00_port_no_show, NULL);
|
|
Daniel Wagner |
7d82e3 |
static DEVICE_ATTR(fw_attr, 0444, qla2x00_fw_attr_show, NULL);
|
|
Daniel Wagner |
7d82e3 |
-static DEVICE_ATTR_RO(edif_doorbell);
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
struct device_attribute *qla2x00_host_attrs[] = {
|
|
Daniel Wagner |
7d82e3 |
@@ -2523,7 +2522,6 @@ struct device_attribute *qla2x00_host_at
|
|
Daniel Wagner |
7d82e3 |
&dev_attr_port_no,
|
|
Daniel Wagner |
7d82e3 |
&dev_attr_fw_attr,
|
|
Daniel Wagner |
7d82e3 |
&dev_attr_dport_diagnostics,
|
|
Daniel Wagner |
7d82e3 |
- &dev_attr_edif_doorbell,
|
|
Daniel Wagner |
7d82e3 |
&dev_attr_mpi_pause,
|
|
Daniel Wagner |
7d82e3 |
NULL, /* reserve for qlini_mode */
|
|
Daniel Wagner |
7d82e3 |
NULL, /* reserve for ql2xiniexchg */
|
|
Daniel Wagner |
7d82e3 |
--- a/drivers/scsi/qla2xxx/qla_edif.c
|
|
Daniel Wagner |
7d82e3 |
+++ b/drivers/scsi/qla2xxx/qla_edif.c
|
|
Daniel Wagner |
7d82e3 |
@@ -2265,84 +2265,6 @@ qla_edif_timer(scsi_qla_host_t *vha)
|
|
Daniel Wagner |
7d82e3 |
qla_edif_dbell_bsg_done(vha);
|
|
Daniel Wagner |
7d82e3 |
}
|
|
Daniel Wagner |
7d82e3 |
|
|
Daniel Wagner |
7d82e3 |
-/*
|
|
Daniel Wagner |
7d82e3 |
- * app uses separate thread to read this. It'll wait until the doorbell
|
|
Daniel Wagner |
7d82e3 |
- * is rung by the driver or the max wait time has expired
|
|
Daniel Wagner |
7d82e3 |
- */
|
|
Daniel Wagner |
7d82e3 |
-ssize_t
|
|
Daniel Wagner |
7d82e3 |
-edif_doorbell_show(struct device *dev, struct device_attribute *attr,
|
|
Daniel Wagner |
7d82e3 |
- char *buf)
|
|
Daniel Wagner |
7d82e3 |
-{
|
|
Daniel Wagner |
7d82e3 |
- scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
|
|
Daniel Wagner |
7d82e3 |
- struct edb_node *dbnode = NULL;
|
|
Daniel Wagner |
7d82e3 |
- struct edif_app_dbell *ap = (struct edif_app_dbell *)buf;
|
|
Daniel Wagner |
7d82e3 |
- uint32_t dat_siz, buf_size, sz;
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- /* TODO: app currently hardcoded to 256. Will transition to bsg */
|
|
Daniel Wagner |
7d82e3 |
- sz = 256;
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- /* stop new threads from waiting if we're not init'd */
|
|
Daniel Wagner |
7d82e3 |
- if (DBELL_INACTIVE(vha)) {
|
|
Daniel Wagner |
7d82e3 |
- ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x09122,
|
|
Daniel Wagner |
7d82e3 |
- "%s error - edif db not enabled\n", __func__);
|
|
Daniel Wagner |
7d82e3 |
- return 0;
|
|
Daniel Wagner |
7d82e3 |
- }
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- if (!vha->hw->flags.edif_enabled) {
|
|
Daniel Wagner |
7d82e3 |
- /* edif not enabled */
|
|
Daniel Wagner |
7d82e3 |
- ql_dbg(ql_dbg_edif + ql_dbg_verbose, vha, 0x09122,
|
|
Daniel Wagner |
7d82e3 |
- "%s error - edif not enabled\n", __func__);
|
|
Daniel Wagner |
7d82e3 |
- return -1;
|
|
Daniel Wagner |
7d82e3 |
- }
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- buf_size = 0;
|
|
Daniel Wagner |
7d82e3 |
- while ((sz - buf_size) >= sizeof(struct edb_node)) {
|
|
Daniel Wagner |
7d82e3 |
- /* remove the next item from the doorbell list */
|
|
Daniel Wagner |
7d82e3 |
- dat_siz = 0;
|
|
Daniel Wagner |
7d82e3 |
- dbnode = qla_edb_getnext(vha);
|
|
Daniel Wagner |
7d82e3 |
- if (dbnode) {
|
|
Daniel Wagner |
7d82e3 |
- ap->event_code = dbnode->ntype;
|
|
Daniel Wagner |
7d82e3 |
- switch (dbnode->ntype) {
|
|
Daniel Wagner |
7d82e3 |
- case VND_CMD_AUTH_STATE_SESSION_SHUTDOWN:
|
|
Daniel Wagner |
7d82e3 |
- case VND_CMD_AUTH_STATE_NEEDED:
|
|
Daniel Wagner |
7d82e3 |
- ap->port_id = dbnode->u.plogi_did;
|
|
Daniel Wagner |
7d82e3 |
- dat_siz += sizeof(ap->port_id);
|
|
Daniel Wagner |
7d82e3 |
- break;
|
|
Daniel Wagner |
7d82e3 |
- case VND_CMD_AUTH_STATE_ELS_RCVD:
|
|
Daniel Wagner |
7d82e3 |
- ap->port_id = dbnode->u.els_sid;
|
|
Daniel Wagner |
7d82e3 |
- dat_siz += sizeof(ap->port_id);
|
|
Daniel Wagner |
7d82e3 |
- break;
|
|
Daniel Wagner |
7d82e3 |
- case VND_CMD_AUTH_STATE_SAUPDATE_COMPL:
|
|
Daniel Wagner |
7d82e3 |
- ap->port_id = dbnode->u.sa_aen.port_id;
|
|
Daniel Wagner |
7d82e3 |
- memcpy(ap->event_data, &dbnode->u,
|
|
Daniel Wagner |
7d82e3 |
- sizeof(struct edif_sa_update_aen));
|
|
Daniel Wagner |
7d82e3 |
- dat_siz += sizeof(struct edif_sa_update_aen);
|
|
Daniel Wagner |
7d82e3 |
- break;
|
|
Daniel Wagner |
7d82e3 |
- default:
|
|
Daniel Wagner |
7d82e3 |
- /* unknown node type, rtn unknown ntype */
|
|
Daniel Wagner |
7d82e3 |
- ap->event_code = VND_CMD_AUTH_STATE_UNDEF;
|
|
Daniel Wagner |
7d82e3 |
- memcpy(ap->event_data, &dbnode->ntype, 4);
|
|
Daniel Wagner |
7d82e3 |
- dat_siz += 4;
|
|
Daniel Wagner |
7d82e3 |
- break;
|
|
Daniel Wagner |
7d82e3 |
- }
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- ql_dbg(ql_dbg_edif, vha, 0x09102,
|
|
Daniel Wagner |
7d82e3 |
- "%s Doorbell consumed : type=%d %p\n",
|
|
Daniel Wagner |
7d82e3 |
- __func__, dbnode->ntype, dbnode);
|
|
Daniel Wagner |
7d82e3 |
- /* we're done with the db node, so free it up */
|
|
Daniel Wagner |
7d82e3 |
- kfree(dbnode);
|
|
Daniel Wagner |
7d82e3 |
- } else {
|
|
Daniel Wagner |
7d82e3 |
- break;
|
|
Daniel Wagner |
7d82e3 |
- }
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
- ap->event_data_size = dat_siz;
|
|
Daniel Wagner |
7d82e3 |
- /* 8bytes = ap->event_code + ap->event_data_size */
|
|
Daniel Wagner |
7d82e3 |
- buf_size += dat_siz + 8;
|
|
Daniel Wagner |
7d82e3 |
- ap = (struct edif_app_dbell *)(buf + buf_size);
|
|
Daniel Wagner |
7d82e3 |
- }
|
|
Daniel Wagner |
7d82e3 |
- return buf_size;
|
|
Daniel Wagner |
7d82e3 |
-}
|
|
Daniel Wagner |
7d82e3 |
-
|
|
Daniel Wagner |
7d82e3 |
static void qla_noop_sp_done(srb_t *sp, int res)
|
|
Daniel Wagner |
7d82e3 |
{
|
|
Daniel Wagner |
7d82e3 |
sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
|
|
Daniel Wagner |
7d82e3 |
--- a/drivers/scsi/qla2xxx/qla_gbl.h
|
|
Daniel Wagner |
7d82e3 |
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
|
|
Daniel Wagner |
7d82e3 |
@@ -994,7 +994,6 @@ fc_port_t *qla2x00_find_fcport_by_pid(sc
|
|
Daniel Wagner |
7d82e3 |
void qla_edb_eventcreate(scsi_qla_host_t *vha, uint32_t dbtype, uint32_t data, uint32_t data2,
|
|
Daniel Wagner |
7d82e3 |
fc_port_t *fcport);
|
|
Daniel Wagner |
7d82e3 |
void qla_edb_stop(scsi_qla_host_t *vha);
|
|
Daniel Wagner |
7d82e3 |
-ssize_t edif_doorbell_show(struct device *dev, struct device_attribute *attr, char *buf);
|
|
Daniel Wagner |
7d82e3 |
int32_t qla_edif_app_mgmt(struct bsg_job *bsg_job);
|
|
Daniel Wagner |
7d82e3 |
void qla_enode_init(scsi_qla_host_t *vha);
|
|
Daniel Wagner |
7d82e3 |
void qla_enode_stop(scsi_qla_host_t *vha);
|