/* This function always returns 0. Command return status is saved in the 'scp' result field.  */
static int advansys_queuecommand(struct scsi_cmnd *scp, void(*done)(struct scsi_cmnd *))
/* This function always returns 0. Command return status is saved in the 'scp' result field.  */
static int advansys_queuecommand(struct scsi_cmnd *scp, void(*done)(struct scsi_cmnd *))
{
	struct Scsi_Host *shost = scp->device->host;
	int asc_res, result = 0;
	ASC_STATS(shost, queuecommand);
	scp->scsi_done = done;
	asc_res = asc_execute_scsi_cmnd(scp);
	switch (asc_res) {
	case ASC_NOERROR:
		break;
	case ASC_BUSY:
		result = SCSI_MLQUEUE_HOST_BUSY;
		break;
	case ASC_ERROR:
	default:
		asc_scsi_done(scp);
		break;
	}
	return result;
}