summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHimanshu Madhani <hmadhani@marvell.com>2020-02-12 13:44:22 -0800
committerMartin K. Petersen <martin.petersen@oracle.com>2020-02-24 12:34:28 -0500
commit8b01e4db834db611555cc4ec5d8d9550024361af (patch)
treeacb5e32f19c42b4e9a87e35ef57220f366398c89
parent75666f4a8c4103fb120717140c26cdbf6b1bf053 (diff)
downloadlinux-8b01e4db834db611555cc4ec5d8d9550024361af.tar.bz2
scsi: qla2xxx: Show correct port speed capabilities for RDP command
This patch correctly displays port speed capability and current speed for RDP command. Link: https://lore.kernel.org/r/20200212214436.25532-12-hmadhani@marvell.com Signed-off-by: Himanshu Madhani <hmadhani@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c41
1 files changed, 35 insertions, 6 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 3e6f7fac1c8e..f9422f4fe138 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -5764,13 +5764,39 @@ qla25xx_rdp_port_speed_capability(struct qla_hw_data *ha)
if (IS_CNA_CAPABLE(ha))
return RDP_PORT_SPEED_10GB;
- if (IS_QLA27XX(ha)) {
- if (FW_ABILITY_MAX_SPEED(ha) == FW_ABILITY_MAX_SPEED_32G)
- return RDP_PORT_SPEED_32GB|RDP_PORT_SPEED_16GB|
- RDP_PORT_SPEED_8GB;
+ if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
+ unsigned int speeds = 0;
- return RDP_PORT_SPEED_16GB|RDP_PORT_SPEED_8GB|
- RDP_PORT_SPEED_4GB;
+ if (ha->max_supported_speed == 2) {
+ if (ha->min_supported_speed <= 6)
+ speeds |= RDP_PORT_SPEED_64GB;
+ }
+
+ if (ha->max_supported_speed == 2 ||
+ ha->max_supported_speed == 1) {
+ if (ha->min_supported_speed <= 5)
+ speeds |= RDP_PORT_SPEED_32GB;
+ }
+
+ if (ha->max_supported_speed == 2 ||
+ ha->max_supported_speed == 1 ||
+ ha->max_supported_speed == 0) {
+ if (ha->min_supported_speed <= 4)
+ speeds |= RDP_PORT_SPEED_16GB;
+ }
+
+ if (ha->max_supported_speed == 1 ||
+ ha->max_supported_speed == 0) {
+ if (ha->min_supported_speed <= 3)
+ speeds |= RDP_PORT_SPEED_8GB;
+ }
+
+ if (ha->max_supported_speed == 0) {
+ if (ha->min_supported_speed <= 2)
+ speeds |= RDP_PORT_SPEED_4GB;
+ }
+
+ return speeds;
}
if (IS_QLA2031(ha))
@@ -5816,6 +5842,9 @@ qla25xx_rdp_port_speed_currently(struct qla_hw_data *ha)
case PORT_SPEED_32GB:
return RDP_PORT_SPEED_32GB;
+ case PORT_SPEED_64GB:
+ return RDP_PORT_SPEED_64GB;
+
default:
return RDP_PORT_SPEED_UNKNOWN;
}