All of lore.kernel.org
 help / color / mirror / Atom feed
From: Himanshu Madhani <himanshu.madhani@cavium.com>
To: martin.petersen@oracle.com, nab@linux-iscsi.org
Cc: himanshu.madhani@cavium.com, linux-scsi@vger.kernel.org,
	target-devel@vger.kernel.org
Subject: [PATCH v2 08/15] qla2xxx: use shadow register for ISP27XX
Date: Tue, 13 Jun 2017 20:47:23 -0700	[thread overview]
Message-ID: <20170614034730.15428-9-himanshu.madhani@cavium.com> (raw)
In-Reply-To: <20170614034730.15428-1-himanshu.madhani@cavium.com>

From: Quinn Tran <quinn.tran@cavium.com>

For ISP27XX, use shadow register to read FW provided
REQQ's consumer index.  The shadow register is dma'ed
by firmware.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
---
 drivers/scsi/qla2xxx/qla_def.h    | 1 +
 drivers/scsi/qla2xxx/qla_init.c   | 1 +
 drivers/scsi/qla2xxx/qla_os.c     | 1 +
 drivers/scsi/qla2xxx/qla_target.c | 3 ++-
 4 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index dfa001357110..b3ba32773db4 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -3266,6 +3266,7 @@ struct qla_qpair {
 	uint32_t fw_started:1;
 	uint32_t enable_class_2:1;
 	uint32_t enable_explicit_conf:1;
+	uint32_t use_shadow_reg:1;
 
 	uint16_t id;			/* qp number used with FW */
 	uint16_t vp_idx;		/* vport ID */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 360abede3f6b..f586f4f7dc57 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -7614,6 +7614,7 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos,
 		qpair->vha = vha;
 		qpair->qp_lock_ptr = &qpair->qp_lock;
 		spin_lock_init(&qpair->qp_lock);
+		qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0;
 
 		/* Assign available que pair id */
 		mutex_lock(&ha->mq_lock);
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 44be2c8237fd..1d66954b7e5a 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -384,6 +384,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req,
 	ha->base_qpair->rsp = rsp;
 	ha->base_qpair->vha = vha;
 	ha->base_qpair->qp_lock_ptr = &ha->hardware_lock;
+	ha->base_qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0;
 	/* init qpair to this cpu. Will adjust at run time. */
 	ha->base_qpair->msix = &ha->msix_entries[QLA_MSIX_RSP_Q];
 	INIT_LIST_HEAD(&ha->base_qpair->hints_list);
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index 66bb4825339f..1d6cc24c0640 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -2288,7 +2288,8 @@ static int qlt_check_reserve_free_req(struct qla_qpair *qpair,
 	struct req_que *req = qpair->req;
 
 	if (req->cnt < (req_cnt + 2)) {
-		cnt = (uint16_t)RD_REG_DWORD(req->req_q_out);
+		cnt = (uint16_t)(qpair->use_shadow_reg ? *req->out_ptr :
+		    RD_REG_DWORD_RELAXED(req->req_q_out));
 
 		if  (req->ring_index < cnt)
 			req->cnt = cnt - req->ring_index;
-- 
2.12.0

  parent reply	other threads:[~2017-06-14  3:48 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-14  3:47 [PATCH v2 00/15] qla2xxx: Add Target Multiqueue support Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 01/15] qla2xxx: Combine Active command arrays Himanshu Madhani
2017-07-11 23:43   ` Bart Van Assche
2017-07-12  0:39     ` Nicholas A. Bellinger
2017-07-12  4:41       ` Madhani, Himanshu
2017-06-14  3:47 ` [PATCH v2 02/15] qla2xxx: Preparation for Target MQ Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 03/15] qla2xxx: Enable Target Multi Queue Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 04/15] qla2xxx: Fix mailbox failure while deleting Queue pairs Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 05/15] qla2xxx: Add debug knob for user control workload Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 06/15] qla2xxx: Add fw_started flags to qpair Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 07/15] qla2xxx: move fields from qla_hw_data to qla_qpair Himanshu Madhani
2017-06-14  3:47 ` Himanshu Madhani [this message]
2017-06-14  3:47 ` [PATCH v2 09/15] qla2xxx: Add function call to qpair for door bell Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 10/15] qla2xxx: Add debug logging routine for qpair Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 11/15] qla2xxx: Remove unused tgt_enable_64bit_addr flag Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 12/15] qla2xxx: Remove datasegs_per_cmd and datasegs_per_cont field Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 13/15] qla2xxx: Move target stat counters from vha to qpair Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 14/15] qla2xxx: Include Exchange offload/Extended Login into FW dump Himanshu Madhani
2017-06-14  3:47 ` [PATCH v2 15/15] qla2xxx: Update driver version to 9.01.00.00-k Himanshu Madhani
2017-07-08  1:48 ` [PATCH v2 00/15] qla2xxx: Add Target Multiqueue support Nicholas A. Bellinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170614034730.15428-9-himanshu.madhani@cavium.com \
    --to=himanshu.madhani@cavium.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=nab@linux-iscsi.org \
    --cc=target-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.