Resending the patch. Addressed the review comments from Tomas Henzl.

Round down the max sge to power of two. 

Earlier max sge limit is 70 SGE, which will allow block layer to send 280K IO 
frame.
It is optimal to provide max IO size aligned to the smallest possible stripe 
size.
E.a 
Consider that we have configured RAID Volumes which does not allow Fast Path 
across the stripe.
Raid volume with stripe size = 256K, will have peformance hit if we get io 
frame of size 280K.
Driver will not send IO frame large than stripe size to the Fast Path.
Also, FW will convert 280K frame into 256K + 24K. This is an additional 
overhead. 

Signed-off-by: Sumit Saxena <[email protected]>
Signed-off-by: Kashyap Desai <[email protected]>
Reviewed-by: Tomas Henzl <[email protected]>
---
 drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c 
b/drivers/scsi/megaraid/megaraid_sas_fusion.c
index ed24a84..d35ac34 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -1001,8 +1001,8 @@ megasas_init_adapter_fusion(struct megasas_instance 
*instance)
        fusion->max_sge_in_chain =
                MEGASAS_MAX_SZ_CHAIN_FRAME / sizeof(union MPI2_SGE_IO_UNION);
 
-       instance->max_num_sge = fusion->max_sge_in_main_msg +
-               fusion->max_sge_in_chain - 2;
+       instance->max_num_sge = rounddown_pow_of_two(
+               fusion->max_sge_in_main_msg + fusion->max_sge_in_chain - 2);
 
        /* Used for pass thru MFI frame (DCMD) */
        fusion->chain_offset_mfi_pthru =
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to