diff mbox

[06/15] qla2xxx: Add fw_started flags to qpair

Message ID 20170607214333.23110-7-himanshu.madhani@cavium.com (mailing list archive)
State New, archived
Headers show

Commit Message

Madhani, Himanshu June 7, 2017, 9:43 p.m. UTC
From: Quinn Tran <quinn.tran@cavium.com>

Add fw_started flag to qpair to reduce access to
qla_hw_data structure by each qpair.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
---
 drivers/scsi/qla2xxx/qla_def.h    | 21 +++++++++++++++++++++
 drivers/scsi/qla2xxx/qla_init.c   |  4 ++--
 drivers/scsi/qla2xxx/qla_isr.c    |  4 ++--
 drivers/scsi/qla2xxx/qla_target.c |  6 ++----
 4 files changed, 27 insertions(+), 8 deletions(-)

Comments

kernel test robot June 8, 2017, 8:42 p.m. UTC | #1
Hi Quinn,

[auto build test ERROR on scsi/for-next]
[also build test ERROR on next-20170608]
[cannot apply to v4.12-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Himanshu-Madhani/qla2xxx-Add-Target-Multiqueue-support/20170608-063551
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: x86_64-acpi-redef (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: the linux-review/Himanshu-Madhani/qla2xxx-Add-Target-Multiqueue-support/20170608-063551 HEAD 71026a5288a1cc5580ca466af592e9c9fd157c78 builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>):

   drivers/scsi/qla2xxx/qla_target.c: In function 'qlt_xmit_response':
>> drivers/scsi/qla2xxx/qla_target.c:3088:53: error: 'struct qla_qpair' has no member named 'chip_reset'
     if (!qpair->fw_started || cmd->reset_count != qpair->chip_reset) {
                                                        ^~
>> drivers/scsi/qla2xxx/qla_target.c:3098:22: error: 'ha' undeclared (first use in this function)
       cmd->reset_count, ha->chip_reset);
                         ^~
   drivers/scsi/qla2xxx/qla_target.c:3098:22: note: each undeclared identifier is reported only once for each function it appears in
   drivers/scsi/qla2xxx/qla_target.c: In function 'qlt_rdy_to_xfer':
   drivers/scsi/qla2xxx/qla_target.c:3224:54: error: 'struct qla_qpair' has no member named 'chip_reset'
     if (!qpair->fw_started || (cmd->reset_count != qpair->chip_reset) ||
                                                         ^~
   drivers/scsi/qla2xxx/qla_target.c:3235:22: error: 'ha' undeclared (first use in this function)
       cmd->reset_count, ha->chip_reset);
                         ^~

vim +3088 drivers/scsi/qla2xxx/qla_target.c

  3082	
  3083		if (xmit_type == QLA_TGT_XMIT_STATUS)
  3084			vha->tgt_counters.core_qla_snd_status++;
  3085		else
  3086			vha->tgt_counters.core_qla_que_buf++;
  3087	
> 3088		if (!qpair->fw_started || cmd->reset_count != qpair->chip_reset) {
  3089			/*
  3090			 * Either the port is not online or this request was from
  3091			 * previous life, just abort the processing.
  3092			 */
  3093			cmd->state = QLA_TGT_STATE_PROCESSED;
  3094			qlt_abort_cmd_on_host_reset(cmd->vha, cmd);
  3095			ql_dbg(ql_dbg_async, vha, 0xe101,
  3096				"RESET-RSP online/active/old-count/new-count = %d/%d/%d/%d.\n",
  3097				vha->flags.online, qla2x00_reset_active(vha),
> 3098				cmd->reset_count, ha->chip_reset);
  3099			spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
  3100			return 0;
  3101		}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 18b37c864250..0dec148a4580 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -3262,6 +3262,7 @@  struct qla_qpair {
 	/* move vha->flags.difdix_supported here */
 	uint32_t difdix_supported:1;
 	uint32_t delete_in_progress:1;
+	uint32_t fw_started:1;
 
 	uint16_t id;			/* qp number used with FW */
 	uint16_t vp_idx;		/* vport ID */
@@ -4183,6 +4184,26 @@  struct qla2_sgx {
 	srb_t			*sp;
 };
 
+#define QLA_FW_STARTED(_ha) {			\
+	int i;					\
+	_ha->flags.fw_started = 1;		\
+	_ha->base_qpair->fw_started = 1;	\
+	for (i = 0; i < _ha->max_qpairs; i++) {	\
+	if (_ha->queue_pair_map[i])	\
+	_ha->queue_pair_map[i]->fw_started = 1;	\
+	}					\
+}
+
+#define QLA_FW_STOPPED(_ha) {			\
+	int i;					\
+	_ha->flags.fw_started = 0;		\
+	_ha->base_qpair->fw_started = 0;	\
+	for (i = 0; i < _ha->max_qpairs; i++) {	\
+	if (_ha->queue_pair_map[i])	\
+	_ha->queue_pair_map[i]->fw_started = 0;	\
+	}					\
+}
+
 /*
  * Macros to help code, maintain, etc.
  */
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index dcc306121a3d..e6a1f9ca0e95 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -3207,7 +3207,7 @@  qla2x00_init_rings(scsi_qla_host_t *vha)
 	} else {
 		ql_dbg(ql_dbg_init, vha, 0x00d3,
 		    "Init Firmware -- success.\n");
-		ha->flags.fw_started = 1;
+		QLA_FW_STARTED(ha);
 	}
 
 	return (rval);
@@ -6841,7 +6841,7 @@  qla2x00_try_to_stop_firmware(scsi_qla_host_t *vha)
 		ret = qla2x00_stop_firmware(vha);
 	}
 
-	ha->flags.fw_started = 0;
+	QLA_FW_STOPPED(ha);
 	ha->flags.fw_init_done = 0;
 }
 
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 3c9f9aa7f2c2..7ebd92ee94c3 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -710,7 +710,7 @@  qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb)
 
 		ha->isp_ops->fw_dump(vha, 1);
 		ha->flags.fw_init_done = 0;
-		ha->flags.fw_started = 0;
+		QLA_FW_STOPPED(ha);
 
 		if (IS_FWI2_CAPABLE(ha)) {
 			if (mb[1] == 0 && mb[2] == 0) {
@@ -2759,7 +2759,7 @@  void qla24xx_process_response_queue(struct scsi_qla_host *vha,
 	struct sts_entry_24xx *pkt;
 	struct qla_hw_data *ha = vha->hw;
 
-	if (!ha->flags.fw_started)
+	if (!rsp->qpair->fw_started)
 		return;
 
 	if (rsp->qpair->cpuid != smp_processor_id())
diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
index cbe6ff9f663e..8e855093740c 100644
--- a/drivers/scsi/qla2xxx/qla_target.c
+++ b/drivers/scsi/qla2xxx/qla_target.c
@@ -3047,7 +3047,6 @@  int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
 	uint8_t scsi_status)
 {
 	struct scsi_qla_host *vha = cmd->vha;
-	struct qla_hw_data *ha = vha->hw;
 	struct qla_qpair *qpair = cmd->qpair;
 	struct ctio7_to_24xx *pkt;
 	struct qla_tgt_prm prm;
@@ -3086,7 +3085,7 @@  int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
 	else
 		vha->tgt_counters.core_qla_que_buf++;
 
-	if (!ha->flags.fw_started || cmd->reset_count != ha->chip_reset) {
+	if (!qpair->fw_started || cmd->reset_count != qpair->chip_reset) {
 		/*
 		 * Either the port is not online or this request was from
 		 * previous life, just abort the processing.
@@ -3206,7 +3205,6 @@  int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd)
 {
 	struct ctio7_to_24xx *pkt;
 	struct scsi_qla_host *vha = cmd->vha;
-	struct qla_hw_data *ha = vha->hw;
 	struct qla_tgt *tgt = cmd->tgt;
 	struct qla_tgt_prm prm;
 	unsigned long flags = 0;
@@ -3223,7 +3221,7 @@  int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd)
 	if (qlt_pci_map_calc_cnt(&prm) != 0)
 		return -EAGAIN;
 
-	if (!ha->flags.fw_started || (cmd->reset_count != ha->chip_reset) ||
+	if (!qpair->fw_started || (cmd->reset_count != qpair->chip_reset) ||
 	    (cmd->sess && cmd->sess->deleted)) {
 		/*
 		 * Either the port is not online or this request was from