goto out_unlock;
case UFSHCD_STATE_ERROR:
set_host_byte(cmd, DID_ERROR);
+ scsi_dma_map(cmd);
cmd->scsi_done(cmd);
goto out_unlock;
default:
}
}
+static void ufshcd_done(struct request *rq)
+{
+ struct scsi_cmnd *cmd = rq->special;
+ scsi_dma_unmap(cmd);
+ scsi_softirq_done(rq);
+}
+
/**
* ufshcd_slave_alloc - handle initial SCSI device configurations
* @sdev: pointer to SCSI device
ufshcd_get_lu_power_on_wp_status(hba, sdev);
+ blk_queue_softirq_done(sdev->request_queue, ufshcd_done);
+
return 0;
}
if (cmd) {
ufshcd_add_command_trace(hba, index, "complete");
result = ufshcd_transfer_rsp_status(hba, lrbp);
- scsi_dma_unmap(cmd);
cmd->result = result;
if (reason)
set_host_byte(cmd, reason);
u32 *mib_val, u8 peer);
extern int ufshcd_config_pwr_mode(struct ufs_hba *hba,
struct ufs_pa_layer_attr *desired_pwr_mode);
+extern void scsi_softirq_done(struct request *rq);
/* UIC command interfaces for DME primitives */
#define DME_LOCAL 0