sc_comp_code(D5sdi)
sc_comp_code --
sc_comp_codes for the scb(D4sdi) and sfb(D4sdi) structures
Description
The supported values for
bits 0-27 of the sc_comp_code
member of the
scb(D4sdi)
and
sfb(D4sdi)
structures are defined as follows:
SDI_ASW-
All seems well.
The job completed without an error.
SDI_CKSTAT-
Check the status byte.
This value is set
when the target controller returns a status other than good.
SDI_HAERR-
A problem occurred between
SDI and the host adapter controller.
Possible causes are I/O bus parity
or a failed host adapter.
SDI_MEMERR-
Memory fault.
SDI_NOALLOC-
The requested block was not allocated
to a target driver by SDI.
If a target driver detects this value,
something will panic the system (using the
cmn_err(D3)
function).
sc_comp_code
is set to this value when
the command block is released from the target driver.
SDI_NOSELE-
SDI timed out trying to select the controller.
SDI_ONEIC-
More than one immediate request has been sent.
SDI_OOS-
The firmware is not operational.
SDI_PROGRES-
The job is not complete
(set by SDI in the
sdi_icmd(D3sdi)
and
sdi_send(D3sdi)
functions).
SDI_QFLUSH-
When the target driver requested a job queue
flush for a device, all jobs in
the queue are returned with this completion code set.
SDI_ABORT-
Command was aborted.
SDI_RESET-
SDI detected a reset on the HBA bus.
All outstanding or jobs queued at the target controller
are returned to the target drivers with this condition code set.
If the job is being controlled by SDI,
but has not been sent out on the bus, the job is not returned.
This code is also returned if a
target driver requests that a target controller be reset.
SDI_CRESET-
SDI detected a reset on this unit.
SDI_V2PERR-
Not able to convert a virtual address
to a physical address.
SDI_SCBERR-
The control block contains an error or an invalid type.
SDI_SFBERR-
There is an error in one of the members in the sfb
structure.
SDI_TIME-
SDI timed out a job
and the job was successfully aborted or completed.
SDI_NOTEQ-
Addressed device not present.
SDI_TIME_NOABORT-
SDI timed out a job but was unable to abort it.
SDI_UNUSED-
The host adapter is not using the control structure.
SDI sets the
sc_comp_code
member
to this value when it allocates a block for a target driver.
The following values are listed in
sdi.h, but are not supported at this time:
SDI_LINKF0-
This linked command completed normally
and the command value bit was zero.
SDI_LINKF1-
This linked command completed normally
and the command value bit was one.
SDI_MISMAT-
A controller attempted to perform an operation that did not
agree with the data supplied in the SCB.
For example, this error can occur
when the controller attempts to transfer data in
and the SCB_READ value is not
set in the
sc_mode
member.
SDI_SBRESC-
The device being accessed was reserved by another HBA.
SDI_SBUSER-
The host adapter encountered a problem on the SCSI bus
and all recovery action failed.
A controller with a faulty bus driver can cause such an error.
SDI_TCERR-
The host adapter detected a protocol error
while performing this request.
Values for
bits 28-31 of the sc_comp_code
member are:
SDI_ERROR-
An error occurred.
SDI_RETRY-
The error is unrelated to this job,
and the job should be retried
(device dependent).
SDI_MESS-
A message describing this event has
been printed on the console and logged.
SDI_SUSPEND-
The host adapter has suspended sending normal commands
to the logical unit
and the target driver is responsible for resuming the queue.
Immediate commands can still be sent with the
sdi_icmd(D3sdi)
function,
but the SCSI device cannot be opened for pass-through.
Usage
The sc_comp_code
member of the
scb(D4sdi)
and
sfb(D4sdi)
structures is tested in the HBA's
intr(D2sdi)
entry point routine after the job has completed.
Test the sc_comp_code
member as follows:
-
Test for SDI_ASW (All Seems Well),
which is set on successful job completion.
If this is set, no further checking is required.
-
Test for SDI_CKSTAT.
If set, check the
sc_status
member
to determine the type of error
that was returned by the target controller.
When an error occurs on an SDI target device,
the error is passed to the controller
and then through the firmware of the host adapter.
SDI acknowledges this interaction
and sets the error code from the target controller
in the sc_status
member of the scb structure
and sets sc_comp_code to SDI_CKSTAT.
-
If SDI_ASW is not set,
test the value in bits 28-31
to determine if SDI_ERROR is set
to indicate that an error occurred.
-
Test the value in bits 0-27,
which indicates the nature of the error,
and the other values in bits 28-31,
which indicates how to process the error.
Version applicability
sdi:
1, 2, 3, 4
Differences between versions
References
scb(D4sdi),
sfb(D4sdi)
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005