scsi: aacraid: Added macros to help loop through known buses and targets
authorRaghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Wed, 27 Dec 2017 04:34:41 +0000 (20:34 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Jan 2018 04:26:43 +0000 (23:26 -0500)
Added macros to loop through the MAX SUPPORTED Buses and Targets. This
will make the code a bit easier to read.

Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/commsup.c

index 17c6cdd5280604af8e8b73dd6710b12388025223..a8fe1e1272c18e6aaa3cf33ce36cb7392d877390 100644 (file)
@@ -117,9 +117,13 @@ enum {
 /* Thor: 5 phys. buses: #0: empty, 1-4: 256 targets each */
 #define AAC_MAX_BUSES                  5
 #define AAC_MAX_TARGETS                256
+#define AAC_BUS_TARGET_LOOP            (AAC_MAX_BUSES * AAC_MAX_TARGETS)
 #define AAC_MAX_NATIVE_SIZE            2048
 #define FW_ERROR_BUFFER_SIZE           512
 
+#define get_bus_number(x)      (x/AAC_MAX_TARGETS)
+#define get_target_number(x)   (x%AAC_MAX_TARGETS)
+
 /* Thor AIF events */
 #define SA_AIF_HOTPLUG                 (1<<1)
 #define SA_AIF_HARDWARE                (1<<2)
index ed79159db752b318b15e69fa8e0523c663839b21..8966371ec1033e15f0cc4ac62300371ecbd225a0 100644 (file)
@@ -1890,31 +1890,31 @@ static int aac_is_safw_target_valid(struct aac_dev *dev, int bus, int target)
 
 static void aac_resolve_luns(struct aac_dev *dev)
 {
+       int i;
        int bus, target, channel;
        struct scsi_device *sdev;
 
-       for (bus = 0; bus < AAC_MAX_BUSES; bus++) {
-               for (target = 0; target < AAC_MAX_TARGETS; target++) {
+       for (i = 0; i < AAC_BUS_TARGET_LOOP; i++) {
 
-                       if (bus == CONTAINER_CHANNEL)
-                               channel = CONTAINER_CHANNEL;
-                       else
-                               channel = aac_phys_to_logical(bus);
+               bus = get_bus_number(i);
+               target = get_target_number(i);
 
-                       sdev = scsi_device_lookup(dev->scsi_host_ptr, channel,
-                                       target, 0);
+               if (bus == CONTAINER_CHANNEL)
+                       channel = CONTAINER_CHANNEL;
+               else
+                       channel = aac_phys_to_logical(bus);
 
-                       if (!sdev && aac_is_safw_target_valid(dev, bus, target))
-                               scsi_add_device(dev->scsi_host_ptr, channel,
-                                               target, 0);
-                       else if (sdev && aac_is_safw_target_valid(dev,
-                                                               bus, target))
-                               scsi_remove_device(sdev);
+               sdev = scsi_device_lookup(dev->scsi_host_ptr, channel,
+                               target, 0);
 
-                       if (sdev)
-                               scsi_device_put(sdev);
+               if (!sdev && aac_is_safw_target_valid(dev, bus, target))
+                       scsi_add_device(dev->scsi_host_ptr, channel,
+                                       target, 0);
+               else if (sdev && aac_is_safw_target_valid(dev, bus, target))
+                       scsi_remove_device(sdev);
 
-               }
+               if (sdev)
+                       scsi_device_put(sdev);
        }
 }