summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Madhani <himanshu.madhani@cavium.com>2018-06-03 22:09:53 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-03 11:18:47 +0200
commit5f14b032657bf516b7016f68b3271f61d28f4d35 (patch)
treeef1d93e298d831f515904561413284f220af6e27
parented7221a6e4ba2cb997bbfc5352a34cf2009a5f53 (diff)
downloadlinux-5f14b032657bf516b7016f68b3271f61d28f4d35.tar.gz
linux-5f14b032657bf516b7016f68b3271f61d28f4d35.tar.bz2
linux-5f14b032657bf516b7016f68b3271f61d28f4d35.zip
scsi: qla2xxx: Fix setting lower transfer speed if GPSC fails
commit 413c2f33489b134e3cc65d9c3ff7861e8fdfe899 upstream. This patch prevents driver from setting lower default speed of 1 GB/sec, if the switch does not support Get Port Speed Capabilities (GPSC) command. Setting this default speed results into much lower write performance for large sequential WRITE. This patch modifies driver to check for gpsc_supported flags and prevents driver from issuing MBC_SET_PORT_PARAM (001Ah) to set default speed of 1 GB/sec. If driver does not send this mailbox command, firmware assumes maximum supported link speed and will operate at the max speed. Cc: stable@vger.kernel.org Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com> Reported-by: Eda Zhou <ezhou@redhat.com> Reviewed-by: Ewan D. Milne <emilne@redhat.com> Tested-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index b2bd6029ff65..99bdccf92136 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -3212,7 +3212,8 @@ qla2x00_iidma_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
return;
if (fcport->fp_speed == PORT_SPEED_UNKNOWN ||
- fcport->fp_speed > ha->link_data_rate)
+ fcport->fp_speed > ha->link_data_rate ||
+ !ha->flags.gpsc_supported)
return;
rval = qla2x00_set_idma_speed(vha, fcport->loop_id, fcport->fp_speed,