Commit 3cabd162 authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen
Browse files

scsi: megaraid_sas: Refactor MEGASAS_IS_LOGICAL macro using sdev

parent 45b8a35e
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -2301,8 +2301,8 @@ struct megasas_instance_template {
			    struct megasas_cmd *cmd);
			    struct megasas_cmd *cmd);
};
};


#define MEGASAS_IS_LOGICAL(scp)						\
#define MEGASAS_IS_LOGICAL(sdev)					\
	((scp->device->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)
	((sdev->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)


#define MEGASAS_DEV_INDEX(scp)						\
#define MEGASAS_DEV_INDEX(scp)						\
	(((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) +	\
	(((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) +	\
+10 −10
Original line number Original line Diff line number Diff line
@@ -1279,7 +1279,7 @@ megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp,
	u16 flags = 0;
	u16 flags = 0;
	struct megasas_pthru_frame *pthru;
	struct megasas_pthru_frame *pthru;


	is_logical = MEGASAS_IS_LOGICAL(scp);
	is_logical = MEGASAS_IS_LOGICAL(scp->device);
	device_id = MEGASAS_DEV_INDEX(scp);
	device_id = MEGASAS_DEV_INDEX(scp);
	pthru = (struct megasas_pthru_frame *)cmd->frame;
	pthru = (struct megasas_pthru_frame *)cmd->frame;


@@ -1519,11 +1519,11 @@ inline int megasas_cmd_type(struct scsi_cmnd *cmd)
	case WRITE_6:
	case WRITE_6:
	case READ_16:
	case READ_16:
	case WRITE_16:
	case WRITE_16:
		ret = (MEGASAS_IS_LOGICAL(cmd)) ?
		ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
			READ_WRITE_LDIO : READ_WRITE_SYSPDIO;
			READ_WRITE_LDIO : READ_WRITE_SYSPDIO;
		break;
		break;
	default:
	default:
		ret = (MEGASAS_IS_LOGICAL(cmd)) ?
		ret = (MEGASAS_IS_LOGICAL(cmd->device)) ?
			NON_READ_WRITE_LDIO : NON_READ_WRITE_SYSPDIO;
			NON_READ_WRITE_LDIO : NON_READ_WRITE_SYSPDIO;
	}
	}
	return ret;
	return ret;
@@ -1699,14 +1699,15 @@ megasas_queue_command(struct Scsi_Host *shost, struct scsi_cmnd *scmd)


	scmd->result = 0;
	scmd->result = 0;


	if (MEGASAS_IS_LOGICAL(scmd) &&
	if (MEGASAS_IS_LOGICAL(scmd->device) &&
	    (scmd->device->id >= instance->fw_supported_vd_count ||
	    (scmd->device->id >= instance->fw_supported_vd_count ||
		scmd->device->lun)) {
		scmd->device->lun)) {
		scmd->result = DID_BAD_TARGET << 16;
		scmd->result = DID_BAD_TARGET << 16;
		goto out_done;
		goto out_done;
	}
	}


	if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) && MEGASAS_IS_LOGICAL(scmd) &&
	if ((scmd->cmnd[0] == SYNCHRONIZE_CACHE) &&
	    MEGASAS_IS_LOGICAL(scmd->device) &&
	    (!instance->fw_sync_cache_support)) {
	    (!instance->fw_sync_cache_support)) {
		scmd->result = DID_OK << 16;
		scmd->result = DID_OK << 16;
		goto out_done;
		goto out_done;
@@ -1758,7 +1759,7 @@ void megasas_update_sdev_properties(struct scsi_device *sdev)
	if (!fusion)
	if (!fusion)
		return;
		return;


	if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
	if (!MEGASAS_IS_LOGICAL(sdev) &&
		instance->use_seqnum_jbod_fp) {
		instance->use_seqnum_jbod_fp) {
		pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
		pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
			sdev->id;
			sdev->id;
@@ -1826,8 +1827,7 @@ static int megasas_slave_configure(struct scsi_device *sdev)


	instance = megasas_lookup_instance(sdev->host->host_no);
	instance = megasas_lookup_instance(sdev->host->host_no);
	if (instance->pd_list_not_supported) {
	if (instance->pd_list_not_supported) {
		if (sdev->channel < MEGASAS_MAX_PD_CHANNELS &&
		if (!MEGASAS_IS_LOGICAL(sdev) && sdev->type == TYPE_DISK) {
			sdev->type == TYPE_DISK) {
			pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
			pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
				sdev->id;
				sdev->id;
			if (instance->pd_list[pd_index].driveState !=
			if (instance->pd_list[pd_index].driveState !=
@@ -1854,7 +1854,7 @@ static int megasas_slave_alloc(struct scsi_device *sdev)
	struct MR_PRIV_DEVICE *mr_device_priv_data;
	struct MR_PRIV_DEVICE *mr_device_priv_data;


	instance = megasas_lookup_instance(sdev->host->host_no);
	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
		 * Open the OS scan to the SYSTEM PD
		 */
		 */
+6 −6
Original line number Original line Diff line number Diff line
@@ -3581,10 +3581,10 @@ static u16 megasas_get_tm_devhandle(struct scsi_device *sdev)
	instance = (struct megasas_instance *)sdev->host->hostdata;
	instance = (struct megasas_instance *)sdev->host->hostdata;
	fusion = instance->ctrl_context;
	fusion = instance->ctrl_context;


	if (sdev->channel < MEGASAS_MAX_PD_CHANNELS) {
	if (!MEGASAS_IS_LOGICAL(sdev)) {
		if (instance->use_seqnum_jbod_fp) {
		if (instance->use_seqnum_jbod_fp) {
				pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) +
			pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL)
						sdev->id;
				    + sdev->id;
			pd_sync = (void *)fusion->pd_seq_sync
			pd_sync = (void *)fusion->pd_seq_sync
					[(instance->pd_seq_map_id - 1) & 1];
					[(instance->pd_seq_map_id - 1) & 1];
			devhandle = pd_sync->seq[pd_index].devHandle;
			devhandle = pd_sync->seq[pd_index].devHandle;