From: mark@[REDACTED] (Mark Salyzyn)
Date: Thu, 15 Jan 1998 08:50:15 -0500
gdb@dbsystems.COM (G. David Butler) writes:
> How do I abort a command?
place the same physical address of the CCB into the
mailbox registers ([base+2]=MSb -> [base+5]=Lsb) as
you would do when sending the command.
Place 0x03 (Abort immediate command) into [base+6] and
send the EATA immediate command (0xFA) into [base+7].
The command will cause the eventual acknowledgement interrupt
indicating the completion status (recognizing that it may be a
Host adapter ABORT, a SCSI bus ABORT, or completed successfully).
> If a driver needs to time out on a command and reclaim the
> memory, how do I tell the DPT that not only am I not interested
> in command anymore, but if it returns with the address of
> a ccb the driver has reused, bad things will happen.
The DPT controller will *always* return a matching interrupt for
all commands issued. Not waiting for that matching interrupt
would be `vary bad'. Some operating systems have SCSI midlevel
code that understands sending an abort, some just send a SCSI
Bus Reset and wait for all the commands to return, indicating that they
were terminated by a SCSI Bus reset. This 1:1 matching of the
commands to interrupts is quaranteed, no lost commands!
> If there is a way to abort the command to the adapter,
> how long does it wait for the queued command to come back
> from the target? What happens if that is not long enough?
> Or does the adapter tell the target to abort the queued
The adapter, for DASD devices, will retry the command every
10 seconds automagically. For all other devices, it waits
patiently (unless a SCSI Bus reset, device reset, or an
abort message is created).
> Is there a current technical reference manual?
Yes. A simple NDA will fill your disk with lots of
WORD documents! If interested, contact Tom Childers
to make arrangements.
Sincerely -- Mark Salyzyn