/* queuecommand method. Entered with the host adapter lock held and interrupts disabled.  */
static int sym53c8xx_queue_command(struct scsi_cmnd *cmd, void(*done)(struct scsi_cmnd *))
/* queuecommand method. Entered with the host adapter lock held and interrupts disabled.  */
static int sym53c8xx_queue_command(struct scsi_cmnd *cmd, void(*done)(struct scsi_cmnd *))
{
	struct sym_hcb *np = SYM_SOFTC_PTR(cmd);
	struct sym_ucmd *ucp = SYM_UCMD_PTR(cmd);
	int sts = 0;
	cmd->scsi_done = done;
	memset(ucp, 0, sizeof(*ucp));
	if (np->s.settle_time_valid && cmd->request->timeout) {
		unsigned long tlimit = jiffies + cmd->request->timeout;
		tlimit -= SYM_CONF_TIMER_INTERVAL*2;
		if (time_after(np->s.settle_time, tlimit)) {
			np->s.settle_time = tlimit;
		}
	}
	if (np->s.settle_time_valid)
		return SCSI_MLQUEUE_HOST_BUSY;
	sts = sym_queue_command(np, cmd);
	if (sts)
		return SCSI_MLQUEUE_HOST_BUSY;
	return 0;
}