]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
megaraid_sas: IO throttling support
authorSumit Saxena <sumit.saxena@avagotech.com>
Thu, 28 Jan 2016 15:34:31 +0000 (21:04 +0530)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 16 Mar 2016 13:37:24 +0000 (06:37 -0700)
Orabug: 22620626

This patch will add capability in driver to tell firmware that it can
throttle IOs in case controller's queue depth is downgraded post OFU
(online firmware upgrade). This feature will ensure firmware can be
downgraded from higher queue depth to lower queue depth without needing
system reboot. Added throttling code in IO path of driver, in case OS
tries to send more IOs than post OFU firmware's queue depth.

Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com>
Signed-off-by: Kashyap Desai <kashyap.desai@avagotech.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 52b62ac7c66e1a11eb8b3e3b0212847749af3b2d)
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas.h
drivers/scsi/megaraid/megaraid_sas_fusion.c

index 2a2f49134491ebcb754b99c3e7bbc9a4b5418801..c8d25a739d38b5f05c18c540487edaff15f6d852 100644 (file)
@@ -1537,7 +1537,8 @@ union megasas_sgl_frame {
 typedef union _MFI_CAPABILITIES {
        struct {
 #if   defined(__BIG_ENDIAN_BITFIELD)
-               u32     reserved:21;
+               u32     reserved:20;
+               u32     support_qd_throttling:1;
                u32     support_fp_rlbypass:1;
                u32     support_vfid_in_ioframe:1;
                u32     support_ext_io_size:1;
@@ -1561,7 +1562,8 @@ typedef union _MFI_CAPABILITIES {
                u32     support_ext_io_size:1;
                u32     support_vfid_in_ioframe:1;
                u32     support_fp_rlbypass:1;
-               u32     reserved:21;
+               u32     support_qd_throttling:1;
+               u32     reserved:20;
 #endif
        } mfi_capabilities;
        __le32          reg;
index 9af95a784af7701a7612b437cccfc8074ab7855c..ed601d23d809818914bd39937c2ebb66c7f51624 100644 (file)
@@ -803,6 +803,7 @@ megasas_ioc_init_fusion(struct megasas_instance *instance)
        if (!dual_qdepth_disable)
                drv_ops->mfi_capabilities.support_ext_queue_depth = 1;
 
+       drv_ops->mfi_capabilities.support_qd_throttling = 1;
        /* Convert capability to LE32 */
        cpu_to_le32s((u32 *)&init_frame->driver_operations.mfi_capabilities);