scsi: smartpqi: Enhance WWID logging logic
authorVenkatesh Emparala <Venkatesh.Emparala@microchip.com>
Wed, 23 Apr 2025 18:32:27 +0000 (13:32 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 29 Apr 2025 01:43:26 +0000 (21:43 -0400)
Log the extended WWID for NVMe devices and for devices that have the
firmware feature bit "PQI_FIRMWARE_FEATURE_RPL_EXTENDED_FORMAT_4_5"
enabled.

Log 8-bytes otherwise.

Reviewed-by: Scott Teel <scott.teel@microchip.com>
Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com>
Signed-off-by: Venkatesh Emparala <Venkatesh.Emparala@microchip.com>
Signed-off-by: Don Brace <don.brace@microchip.com>
Link: https://lore.kernel.org/r/20250423183229.538572-4-don.brace@microchip.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/smartpqi/smartpqi_init.c

index 3cb8619e9ce9f49b2ce7008150be0f6fb848785c..efc042071ec097c6d65d56bf99df15a1152c3510 100644 (file)
@@ -2011,18 +2011,31 @@ static void pqi_dev_info(struct pqi_ctrl_info *ctrl_info,
                        PQI_DEV_INFO_BUFFER_LENGTH - count,
                        "-:-");
 
-       if (pqi_is_logical_device(device))
+       if (pqi_is_logical_device(device)) {
                count += scnprintf(buffer + count,
                        PQI_DEV_INFO_BUFFER_LENGTH - count,
                        " %08x%08x",
                        *((u32 *)&device->scsi3addr),
                        *((u32 *)&device->scsi3addr[4]));
-       else
+       } else if (ctrl_info->rpl_extended_format_4_5_supported) {
+               if (device->device_type == SA_DEVICE_TYPE_NVME)
+                       count += scnprintf(buffer + count,
+                                       PQI_DEV_INFO_BUFFER_LENGTH - count,
+                                       " %016llx%016llx",
+                                       get_unaligned_be64(&device->wwid[0]),
+                                       get_unaligned_be64(&device->wwid[8]));
+               else
+                       count += scnprintf(buffer + count,
+                                       PQI_DEV_INFO_BUFFER_LENGTH - count,
+                                       " %016llx",
+                                       get_unaligned_be64(&device->wwid[0]));
+       } else {
                count += scnprintf(buffer + count,
                        PQI_DEV_INFO_BUFFER_LENGTH - count,
-                       " %016llx%016llx",
-                       get_unaligned_be64(&device->wwid[0]),
-                       get_unaligned_be64(&device->wwid[8]));
+                       " %016llx",
+                       get_unaligned_be64(&device->wwid[0]));
+       }
+
 
        count += scnprintf(buffer + count, PQI_DEV_INFO_BUFFER_LENGTH - count,
                " %s %.8s %.16s ",