TRAN_RESET(9E) Driver Entry Points TRAN_RESET(9E)
NAME
tran_reset - reset a SCSI bus or target
SYNOPSIS
#include <sys/scsi/scsi.h>
int prefixtran_reset(
struct scsi_address *ap,
int level);
INTERFACE LEVEL
illumos architecture specific (illumos DDI).
PARAMETERS
ap Pointer to the
scsi_address(9S) structure.
level The level of reset required.
DESCRIPTION
The
tran_reset() vector in the
scsi_hba_tran(9S) structure must be
initialized during the
HBA driver's
attach(9E) to point to an
HBA entry point to be called when a target driver calls
scsi_reset(9F).
tran_reset() must reset either the
SCSI bus, a
SCSI target device, or
a
SCSI logical unit as specified by
level.
level must be one of the following:
RESET_ALL Reset the
SCSI bus.
RESET_TARGET Reset the target specified by
ap.
RESET_LUN Reset the logical unit specified by
ap.
tran_reset should set the
pkt_reason field of all outstanding packets
in the transport layer associated with each target or logical unit
that was successfully reset to
CMD_RESET and the
pkt_statistics field
must be
OR'ed with either
STAT_BUS_RESET (if the SCSI bus was reset)
or
STAT_DEV_RESET (if the target or logical unit was reset).
The
HBA driver should use a
SCSI Bus Device Reset Message to reset a
target device. The HBA driver should use a SCSI Logical Unit Reset
Message to reset a logical unit.
Packets that are in the transport layer but not yet active on the bus
should be returned with
pkt_reason set to
CMD_RESET and
pkt_statistics OR'ed with
STAT_ABORTED.
Support for
RESET_LUN is optional but strongly encouraged for new and
updated HBA drivers. If an HBA driver provides
RESET_LUN support, it
must also create the
lun-reset capability with a value of zero for
each target device instance represented by a valid
ap. The HBA is
also required to provide the means to return the current value of the
lun-reset capability in its
tran_getcap(9E) routine, as well as the
means to change the value of the
lun_reset capability in its
tran_getcap(9E) routine.
RETURN VALUES
tran_reset() should return:
1 on success.
0 on failure.
CONTEXT
The
tran_reset() function can be called from user or interrupt
context. This requirement comes from
scsi_reset().
SEE ALSO
attach(9E),
ddi_dma_buf_setup(9F),
scsi_hba_attach(9F),
scsi_reset(9F),
scsi_address(9S),
scsi_hba_tran(9S) Writing Device DriversNOTES
If
pkt_reason already indicates that an earlier error had occurred
for a particular
pkt,
tran_reset() should not overwrite
pkt_reason with
CMD_RESET.
August 17, 2005 TRAN_RESET(9E)