Commit e8585452 authored by John Garry's avatar John Garry Committed by Martin K. Petersen
Browse files

scsi: libsas: Add sas_clear_task_set()

parent 69b80a0e
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -690,7 +690,6 @@ static int hisi_sas_init_device(struct domain_device *device)
{
	int rc = TMF_RESP_FUNC_COMPLETE;
	struct scsi_lun lun;
	struct sas_tmf_task tmf_task;
	int retry = HISI_SAS_DISK_RECOVER_CNT;
	struct hisi_hba *hisi_hba = dev_to_hisi_hba(device);
	struct device *dev = hisi_hba->dev;
@@ -700,10 +699,8 @@ static int hisi_sas_init_device(struct domain_device *device)
	case SAS_END_DEVICE:
		int_to_scsilun(0, &lun);

		tmf_task.tmf = TMF_CLEAR_TASK_SET;
		while (retry-- > 0) {
			rc = hisi_sas_debug_issue_ssp_tmf(device, lun.scsi_lun,
							  &tmf_task);
			rc = sas_clear_task_set(device, lun.scsi_lun);
			if (rc == TMF_RESP_FUNC_COMPLETE) {
				hisi_sas_release_task(hisi_hba, device);
				break;
+10 −0
Original line number Diff line number Diff line
@@ -1053,6 +1053,16 @@ int sas_abort_task_set(struct domain_device *dev, u8 *lun)
}
EXPORT_SYMBOL_GPL(sas_abort_task_set);

int sas_clear_task_set(struct domain_device *dev, u8 *lun)
{
	struct sas_tmf_task tmf_task = {
		.tmf = TMF_CLEAR_TASK_SET,
	};

	return sas_execute_ssp_tmf(dev, lun, &tmf_task);
}
EXPORT_SYMBOL_GPL(sas_clear_task_set);

/*
 * Tell an upper layer that it needs to initiate an abort for a given task.
 * This should only ever be called by an LLDD.
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ static struct sas_domain_function_template mvs_transport_ops = {

	.lldd_abort_task	= mvs_abort_task,
	.lldd_abort_task_set    = sas_abort_task_set,
	.lldd_clear_task_set    = mvs_clear_task_set,
	.lldd_clear_task_set    = sas_clear_task_set,
	.lldd_I_T_nexus_reset	= mvs_I_T_nexus_reset,
	.lldd_lu_reset 		= mvs_lu_reset,
	.lldd_query_task	= mvs_query_task,
+0 −11
Original line number Diff line number Diff line
@@ -1536,17 +1536,6 @@ int mvs_abort_task(struct sas_task *task)
	return rc;
}

int mvs_clear_task_set(struct domain_device *dev, u8 *lun)
{
	int rc = TMF_RESP_FUNC_FAILED;
	struct sas_tmf_task tmf_task;

	tmf_task.tmf = TMF_CLEAR_TASK_SET;
	rc = mvs_debug_issue_ssp_tmf(dev, lun, &tmf_task);

	return rc;
}

static int mvs_sata_done(struct mvs_info *mvi, struct sas_task *task,
			u32 slot_idx, int err)
{
+0 −1
Original line number Diff line number Diff line
@@ -440,7 +440,6 @@ void mvs_scan_start(struct Scsi_Host *shost);
int mvs_scan_finished(struct Scsi_Host *shost, unsigned long time);
int mvs_queue_command(struct sas_task *task, gfp_t gfp_flags);
int mvs_abort_task(struct sas_task *task);
int mvs_clear_task_set(struct domain_device *dev, u8 * lun);
void mvs_port_formed(struct asd_sas_phy *sas_phy);
void mvs_port_deformed(struct asd_sas_phy *sas_phy);
int mvs_dev_found(struct domain_device *dev);
Loading