The SANA-II extended IORequest structure (struct IOSana2Req) includes both
the ios2_Error and ios2_WireError fields. Driver users must always check
IOSana2Reqs on return for an error in ios2_Error. ios2_Error will be zero
if no error occurred, otherwise it will contain a value from
<exec/errors.h> or <devices/sana2.h>. If there was an error, there may be
more specific information in ios2_WireError. Drivers are required to fill
in the WireError if there is an applicable error code.
Error codes are #defined in the "defined errors" sections of the file
<devices/sana2.h>:
IOSana2Req S2io_Error field (S2ERR_xxx):
S2ERR_NO_RESOURCES - Insufficient resources available.
S2ERR_BAD_ARGUMENT - Noticeably bad argument.
S2ERR_BAD_STATE - Command inappropriate for current state.
S2ERR_BAD_ADDRESS - Noticeably bad address.
S2ERR_MTU_EXCEEDED - Write data too large.
S2ERR_NOT_SUPPORTED - Command is not supported by this driver. This
is similar to IOERR_NOCMD as defined in
<exec/errors.h> but S2ERR_NOT_SUPPORTED
indicates that the requested command is a
valid SANA-II command and that the driver
does not support it because the hardware is
incapable of supporting it (e.g.,
S2_MULTICAST). Note that IOERR_NOCMD is still
valid for reasons other than a lack of
hardware support (i.e., commands which are
no-ops in a SANA-II driver).
S2ERR_SOFTWARE - Software error of some kind.
S2ERR_OUTOFSERVICE - When a hardware device is taken off-line, any
pending requests are returned with this error.
See also the standard errors in <exec/errors.h>.
IOSana2Req S2io_WireError field (S2WERR_xxx):
S2WERR_NOT_CONFIGURED - Command requires unit to be configured.
S2WERR_UNIT_ONLINE - Command requires that the unit be off-line.
S2WERR_UNIT_OFFLINE - Command requires that the unit be on-line.
S2WERR_ALREADY_TRACKED - Protocol is already being tracked.
S2WERR_NOT_TRACKED - Protocol is not being tracked.
S2WERR_BUFF_ERROR - Buffer management function returned an error.
S2WERR_SRC_ADDRESS - Problem with the source address field.
S2WERR_DST_ADDRESS - Problem with destination address field.
S2WERR_BAD_BROADCAST - Problem with an attempt to broadcast.
S2WERR_BAD_MULTICAST - Problem with an attempt to multicast.
S2WERR_MULTICAST_FULL - Multicast address list full.
S2WERR_BAD_EVENT - Event specified is unknown.
S2WERR_BAD_STATDATA - The S2IO_StatData pointer or the data it
points to failed a sanity check.
S2WERR_IS_CONFIGURED - Attempt to reconfigure the unit.
S2WERR_NULL_POINTER - A NULL pointer was detected in one of the
arguments. S2ERR_BAD_ARGUMENT should always
be the S2ERR.