xref: /titanic_50/usr/src/man/man9e/tran_getcap.9e (revision 2a52a1627973d84afe3af6de87c1fe00ac3d087e)
te
Copyright (c) 1995, Sun Microsystems, Inc. All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
TRAN_GETCAP 9E "Aug 30, 1995"
NAME
tran_getcap, tran_setcap - get/set SCSI transport capability
SYNOPSIS

#include <sys/scsi/scsi.h>



int prefixtran_getcap(struct scsi_address *ap, char *cap, int whom);

int prefixtran_setcap(struct scsi_address *ap, char *cap, int value,
 int whom);
INTERFACE LEVEL

Solaris architecture specific (Solaris DDI).

PARAMETERS
ap

Pointer to the scsi_address(9S) structure.

cap

Pointer to the string capability identifier.

value

Defines the new state of the capability.

whom

Specifies whether all targets or only the specified target is affected.

DESCRIPTION

The tran_getcap() and tran_setcap() vectors in the scsi_hba_tran(9S) structure must be initialized during the HBA driver's attach(9E) to point to HBA entry points to be called when a target driver calls scsi_ifgetcap(9F) and scsi_ifsetcap(9F).

tran_getcap() is called to get the current value of a capability specific to features provided by the HBA hardware or driver. The name of the capability cap is the NULL terminated capability string.

If whom is non-zero, the request is for the current value of the capability defined for the target specified by the scsi_address(9S) structure pointed to by ap; if whom is 0, all targets are affected; else, the target specified by the scsi_address structure pointed to by ap is affected.

tran_setcap() is called to set the value of the capability cap to the value of value. If whom is non-zero, the capability should be set for the target specified by the scsi_address(9S) structure pointed to by ap; if whom is 0, all targets are affected; else, the target specified by the scsi_address structure pointed to by ap is affected. It is recommended that HBA drivers do not support setting capabilities for all targets, that is, whom is 0.

A device may support only a subset of the defined capabilities.

Refer to scsi_ifgetcap(9F) for the list of defined capabilities.

HBA drivers should use scsi_hba_lookup_capstr(9F) to match cap against the canonical capability strings.

RETURN VALUES

tran_setcap() must return 1 if the capability was successfully set to the new value, 0 if the HBA driver does not support changing the capability, and -1 if the capability was not defined.

tran_getcap() must return the current value of a capability or -1 if the capability was not defined.

SEE ALSO

attach(9E), scsi_hba_attach(9F), scsi_hba_lookup_capstr(9F), scsi_ifgetcap(9F), scsi_address(9S), scsi_hba_tran(9S)

Writing Device Drivers