Driver Entry Points tranreset(9E)
NAME
tranreset - reset a SCSI bus or target
SYNOPSIS
#include
int prefixtranreset(struct scsiaddress *ap, int level);
INTERFACE LEVEL
Solaris architecture specific (Solaris DI).
PARAMETERS
ap Pointer to the scsiaddress(9S) structure.
level The level of reset required.
DESCRIPTION
The tranreset() vector in the scsihbatran(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 scsireset(9F).
tranreset() 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:
RESETAL Reset the SCSI bus.
RESETARGET Reset the target specified by ap.
RESETLUN Reset the logical unit specified by ap.
tranreset should set the pktreason field of all outstand-
ing packets in the transport layer associated with each tar-
get or logical unit that was successfully reset to CMDRESET
and the pktstatistics field must be OR'ed with either
STATBUSRESET (if the SCSI bus was reset) or STATDEVRESET
(if the target or logical unit was reset).
SunOS 5.11 Last change: 17 Aug 2005 1
Driver Entry Points tranreset(9E)
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 pktreason set to
CMDRESET and pktstatistics OR'ed with STATABORTED.
Support for RESETLUN is optional but strongly encouraged
for new and updated HBA drivers. If an HBA driver provides
RESETLUN support, it must also create the lun-reset capa-
bility with a value of zero for each target device instance
represented by a valid ap. The HBA is also required to pro-
vide the means to return the current value of the lun-reset
capability in its trangetcap(9E) routine, as well as the
means to change the value of the lunreset capability in its
trangetcap(9E) routine.
RETURN VALUES
tranreset() should return:
1 on success.
0 on failure.
CONTEXT
The tranreset() function can be called from user or inter-
rupt context. This requirement comes from scsireset().
SEE ALSO
attach(9E), ddidmabufsetup(9F), scsihbaattach(9F),
scsireset(9F), scsiaddress(9S), scsihbatran(9S)
Writing Device Drivers
NOTES
If pktreason already indicates that an earlier error had
occurred for a particular pkt, tranreset() should not
overwrite pktreason with CMDRESET.
SunOS 5.11 Last change: 17 Aug 2005 2
|