@@ -5829,6 +5829,36 @@ megasas_alloc_irq_vectors(struct megasas_instance *instance)
megasas_set_high_iops_queue_affinity_hint(instance);
}
+static void megasas_set_max_sectors(struct megasas_instance *instance)
+{
+ if (instance->fw_support_ieee)
+ instance->max_sectors_per_req = MEGASAS_MAX_SECTORS_IEEE;
+
+ /*
+ * Check if the module parameter value for max_sectors can be used
+ */
+ if (max_sectors && max_sectors < instance->max_sectors_per_req)
+ instance->max_sectors_per_req = max_sectors;
+ else {
+ if (max_sectors) {
+ if (((instance->pdev->device ==
+ PCI_DEVICE_ID_LSI_SAS1078GEN2) ||
+ (instance->pdev->device ==
+ PCI_DEVICE_ID_LSI_SAS0079GEN2)) &&
+ (max_sectors <= MEGASAS_MAX_SECTORS)) {
+ instance->max_sectors_per_req = max_sectors;
+ } else {
+ dev_info(&instance->pdev->dev,
+ "max_sectors should be > 0 and <= %d"
+ "(or < 1MB for GEN2 controller)\n",
+ instance->max_sectors_per_req);
+ }
+ }
+ }
+
+ instance->host->max_sectors = instance->max_sectors_per_req;
+}
+
/**
* megasas_init_fw - Initializes the FW
* @instance: Adapter soft state
@@ -6737,31 +6767,8 @@ static int megasas_io_attach(struct megasas_instance *instance)
host->can_queue = instance->max_scsi_cmds;
host->sg_tablesize = instance->max_num_sge;
- if (instance->fw_support_ieee)
- instance->max_sectors_per_req = MEGASAS_MAX_SECTORS_IEEE;
-
- /*
- * Check if the module parameter value for max_sectors can be used
- */
- if (max_sectors && max_sectors < instance->max_sectors_per_req)
- instance->max_sectors_per_req = max_sectors;
- else {
- if (max_sectors) {
- if (((instance->pdev->device ==
- PCI_DEVICE_ID_LSI_SAS1078GEN2) ||
- (instance->pdev->device ==
- PCI_DEVICE_ID_LSI_SAS0079GEN2)) &&
- (max_sectors <= MEGASAS_MAX_SECTORS)) {
- instance->max_sectors_per_req = max_sectors;
- } else {
- dev_info(&instance->pdev->dev, "max_sectors should be > 0"
- "and <= %d (or < 1MB for GEN2 controller)\n",
- instance->max_sectors_per_req);
- }
- }
- }
+ megasas_set_max_sectors(instance);
- host->max_sectors = instance->max_sectors_per_req;
host->cmd_per_lun = MEGASAS_DEFAULT_CMD_PER_LUN;
host->max_channel = MEGASAS_MAX_CHANNELS - 1;
host->max_id = MEGASAS_MAX_DEV_PER_CHANNEL;
Separate out the calculations for setting max_sectors into a separate function. Signed-off-by: Hannes Reinecke <hare@suse.de> --- drivers/scsi/megaraid/megaraid_sas_base.c | 55 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 24 deletions(-)