scsi: mpi3mr: Refresh sdev queue depth after controller reset
authorChandrakanth patil <chandrakanth.patil@broadcom.com>
Sun, 26 Nov 2023 05:31:31 +0000 (11:01 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:45 +0000 (15:35 -0800)
commit e5aab848dfdf7996d20ece4d28d2733c732c5e5a upstream.

After a controller reset, the firmware may modify the device queue depth.
Therefore, update the device queue depth accordingly.

Cc: <stable@vger.kernel.org> # v5.15+
Co-developed-by: Sathya Prakash <sathya.prakash@broadcom.com>
Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
Signed-off-by: Chandrakanth patil <chandrakanth.patil@broadcom.com>
Link: https://lore.kernel.org/r/20231126053134.10133-2-chandrakanth.patil@broadcom.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/mpi3mr/mpi3mr_os.c

index 89ba015..4b88a13 100644 (file)
@@ -1070,8 +1070,14 @@ void mpi3mr_rfresh_tgtdevs(struct mpi3mr_ioc *mrioc)
        tgtdev = NULL;
        list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
                if ((tgtdev->dev_handle != MPI3MR_INVALID_DEV_HANDLE) &&
-                   !tgtdev->is_hidden && !tgtdev->host_exposed)
-                       mpi3mr_report_tgtdev_to_host(mrioc, tgtdev->perst_id);
+                   !tgtdev->is_hidden) {
+                       if (!tgtdev->host_exposed)
+                               mpi3mr_report_tgtdev_to_host(mrioc,
+                                                            tgtdev->perst_id);
+                       else if (tgtdev->starget)
+                               starget_for_each_device(tgtdev->starget,
+                                                       (void *)tgtdev, mpi3mr_update_sdev);
+       }
        }
 }