]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: megaraid_sas: Refactor MEGASAS_IS_LOGICAL macro using sdev
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Fri, 10 Feb 2017 08:59:05 +0000 (00:59 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 1 Jun 2017 21:06:00 +0000 (14:06 -0700)
Orabug: 26096381

Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 3cabd16256584581af2cc3d2cedabcfcf15021ad)
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Signed-off-by: Kirtikar Kashyap <kirtikar.kashyap@oracle.com>
Reviewed-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/scsi/megaraid/megaraid_sas.h
drivers/scsi/megaraid/megaraid_sas_base.c
drivers/scsi/megaraid/megaraid_sas_fusion.c

index f994ac84520c860cf039a3104627e7dac11f3104..5c13ba070f0060787314fca6cbc33f49544a511f 100644 (file)
@@ -2302,8 +2302,8 @@ struct megasas_instance_template {
                            struct megasas_cmd *cmd);
 };
 
-#define MEGASAS_IS_LOGICAL(scp)                                                \
-       ((scp->device->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)
+#define MEGASAS_IS_LOGICAL(sdev)                                       \
+       ((sdev->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)
 
 #define MEGASAS_DEV_INDEX(scp)                                         \
        (((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) +   \
index 2a3aac0d53f5636ffafa4c98839bc2140a7e1645..27f066959e2cdec0a9d09c5e2803c9706251ea01 100644 (file)
@@ -1281,7 +1281,7 @@ megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp,
        u16 flags = 0;
        struct megasas_pthru_frame *pthru;
 
-       is_logical = MEGASAS_IS_LOGICAL(scp);
+       is_logical = MEGASAS_IS_LOGICAL(scp->device);
        device_id = MEGASAS_DEV_INDEX(scp);
        pthru = (struct megasas_pthru_frame *)cmd->frame;
 
@@ -1521,11 +1521,11 @@ inline int megasas_cmd_type(struct scsi_cmnd *cmd)
        case WRITE_6:
        case READ_16:
        case WRITE_16:
-               ret = (MEGASAS_IS_LOGICAL(cmd)) ?
+               ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
                        READ_WRITE_LDIO : READ_WRITE_SYSPDIO;
                break;
        default:
-               ret = (MEGASAS_IS_LOGICAL(cmd)) ?
+               ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
                        NON_READ_WRITE_LDIO : NON_READ_WRITE_SYSPDIO;
        }
        return ret;
@@ -1701,15 +1701,16 @@ megasas_queue_command(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
 
        scmd->result = 0;
 
-       if (MEGASAS_IS_LOGICAL(scmd) &&
+       if (MEGASAS_IS_LOGICAL(scmd->device) &&
            (scmd->device->id >= instance->fw_supported_vd_count ||
                scmd->device->lun)) {
                scmd->result = DID_BAD_TARGET << 16;
                goto out_done;
        }
 
-       if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) && MEGASAS_IS_LOGICAL(scmd) &&
-               (!instance->fw_sync_cache_support)) {
+       if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) &&
+           MEGASAS_IS_LOGICAL(scmd->device) &&
+           (!instance->fw_sync_cache_support)) {
                scmd->result = DID_OK << 16;
                goto out_done;
        }
@@ -1760,7 +1761,7 @@ void megasas_update_sdev_properties(struct scsi_device *sdev)
        if (!fusion)
                return;
 
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
+       if (!MEGASAS_IS_LOGICAL(sdev) &&
                instance->use_seqnum_jbod_fp) {
                pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                        sdev->id;
@@ -1828,8 +1829,7 @@ static int megasas_slave_configure(struct scsi_device *sdev)
 
        instance = megasas_lookup_instance(sdev->host->host_no);
        if (instance->pd_list_not_supported) {
-               if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
-                       sdev->type == TYPE_DISK) {
+               if (!MEGASAS_IS_LOGICAL(sdev) && sdev->type == TYPE_DISK) {
                        pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
                                sdev->id;
                        if (instance->pd_list[pd_index].driveState !=
@@ -1856,7 +1856,7 @@ static int megasas_slave_alloc(struct scsi_device *sdev)
        struct MR_PRIV_DEVICE *mr_device_priv_data;
 
        instance = megasas_lookup_instance(sdev->host->host_no);
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS) {
+       if (!MEGASAS_IS_LOGICAL(sdev)) {
                /*
                 * Open the OS scan to the SYSTEM PD
                 */
index d8dfb239a0948081b83fc54783ef4780d1e2f4ac..ac23e89bf077b15d69d1a45eda9275117f7638ca 100644 (file)
@@ -3581,13 +3581,13 @@ static u16 megasas_get_tm_devhandle(struct scsi_device *sdev)
        instance = (struct megasas_instance *)sdev->host->hostdata;
        fusion = instance->ctrl_context;
 
-       if (sdev->channel < MEGASAS_MAX_PD_CHANNELS) {
+       if (!MEGASAS_IS_LOGICAL(sdev)) {
                if (instance->use_seqnum_jbod_fp) {
-                               pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
-                                               sdev->id;
-                               pd_sync = (void *)fusion->pd_seq_sync
-                                               [(instance->pd_seq_map_id - 1) & 1];
-                               devhandle = pd_sync->seq[pd_index].devHandle;
+                       pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL)
+                                   + sdev->id;
+                       pd_sync = (void *)fusion->pd_seq_sync
+                                       [(instance->pd_seq_map_id - 1) & 1];
+                       devhandle = pd_sync->seq[pd_index].devHandle;
                } else
                        sdev_printk(KERN_ERR, sdev, "Firmware expose tmCapable"
                                " without JBOD MAP support from %s %d\n", __func__, __LINE__);