From 21090cbe95189d4ce6135fc8fec2f416b3eb227f Mon Sep 17 00:00:00 2001 From: Madhuranath Iyengar Date: Tue, 21 Dec 2010 16:00:18 -0800 Subject: [SCSI] qla2xxx: Update FCP priority information to firmware before sending IOs The FCP priority info was not being updated properly in certain situations. Here are the changes that needs to be done to take care of this issue: 1. No need to check fcport->state for FCS_UNCONFIGURED in qla24xx_update_fcport_fcp_prio(), since an invalid loop id check is already performed which is sufficient. 2. Add the missing qla24xx_update_fcport_fcp_prio() function call within qla2x00_update_fcport() function, so that the priority info is updated on every port addition or change. 3. Perform proper adapter types checking. 4. Other changes, associated with DEBUG/printk's and parameter passing. Signed-off-by: Saurav Kashyap Signed-off-by: Andrew Vasquez Signed-off-by: Giridhar Malavali Signed-off-by: Madhuranath Iyengar Signed-off-by: James Bottomley --- drivers/scsi/qla2xxx/qla_init.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'drivers/scsi/qla2xxx/qla_init.c') diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index e9b800e7255..c8ca25a8f2c 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -2928,6 +2928,7 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); qla2x00_iidma_fcport(vha, fcport); + qla24xx_update_fcport_fcp_prio(vha, fcport); qla2x00_reg_remote_port(vha, fcport); atomic_set(&fcport->state, FCS_ONLINE); } @@ -5473,7 +5474,7 @@ qla81xx_update_fw_options(scsi_qla_host_t *vha) * the tag (priority) value is returned. * * Input: - * ha = adapter block po + * vha = scsi host structure pointer. * fcport = port structure pointer. * * Return: @@ -5567,7 +5568,7 @@ qla24xx_get_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) * Activates fcp priority for the logged in fc port * * Input: - * ha = adapter block pointer. + * vha = scsi host structure pointer. * fcp = port structure pointer. * * Return: @@ -5577,25 +5578,24 @@ qla24xx_get_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) * Kernel context. */ int -qla24xx_update_fcport_fcp_prio(scsi_qla_host_t *ha, fc_port_t *fcport) +qla24xx_update_fcport_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) { int ret; uint8_t priority; uint16_t mb[5]; - if (atomic_read(&fcport->state) == FCS_UNCONFIGURED || - fcport->port_type != FCT_TARGET || - fcport->loop_id == FC_NO_LOOP_ID) + if (fcport->port_type != FCT_TARGET || + fcport->loop_id == FC_NO_LOOP_ID) return QLA_FUNCTION_FAILED; - priority = qla24xx_get_fcp_prio(ha, fcport); - ret = qla24xx_set_fcp_prio(ha, fcport->loop_id, priority, mb); + priority = qla24xx_get_fcp_prio(vha, fcport); + ret = qla24xx_set_fcp_prio(vha, fcport->loop_id, priority, mb); if (ret == QLA_SUCCESS) fcport->fcp_prio = priority; else DEBUG2(printk(KERN_WARNING "scsi(%ld): Unable to activate fcp priority, " - " ret=0x%x\n", ha->host_no, ret)); + " ret=0x%x\n", vha->host_no, ret)); return ret; } -- cgit v1.2.3-70-g09d2