scsi_ifsetcap(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

scsi_ifsetcap(9f)

scsi_ifgetcap(9F)              Kernel Functions              scsi_ifgetcap(9F)

NAME
       scsi_ifgetcap, scsi_ifsetcap - get/set SCSI transport capability

SYNOPSIS
       #include <sys/scsi/scsi.h>

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


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

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

PARAMETERS
       ap       Pointer to the scsi_address structure.


       cap      Pointer to the string capability identifier.


       value    Defines the new state of the capability.


       whom     Specifies the class of a capability.


DESCRIPTION
       The scsi_ifsetcap() function is used by target drivers to set the capa‐
       bilities  of  the  host adapter driver. The cap pointer is a name-value
       pair identified by a null-terminated character string and  the  integer
       value  of the cap. The current value of the capability can be retrieved
       with the scsi_ifgetcap() function.


       The argument whom is used to specify the class of the cap argument. The
       whom argument value 0, is deprecated. Supported values for whom are  as
       follows:


       SCSI_IFCAP_WHOM_TARGET        Target end device characteristics associ‐
                                     ated with the HBA operation. The scsi_ad‐
                                     dress  structure pointed to by the ap ar‐
                                     gument identifies the  target.  Capabili‐
                                     ties  of  this  type  of  result  involve
                                     tran_getcap() and tran_setcap()  function
                                     calls.  For  more  information,  see  the
                                     tran_getcap(9E) man page.


       SCSI_IFCAP_WHOM_TARGET_DRV    Target driver supported  characteristics.
                                     The  scsi_address structure pointed to by
                                     the ap argument  identifies  the  target.
                                     Capabilities  of  this type are stored in
                                     SCSA  framework,  and  do   not   involve
                                     tran_getcap()  or  tran_setcap() function
                                     calls.  For  more  information,  see  the
                                     tran_getcap(9E) man page.



       Note -




         The  SCSI_IFCAP_WHOM_TARGET and SCSI_IFCAP_WHOM_TARGET_DRV interfaces
         are currently private. Therefore, information related to  these  will
         not appear in man(1) output.




       The  driver  should  confirm  that  scsi_ifsetcap() and scsi_ifsetcap()
       functions are called with a cap that points to a  capability  which  is
       supported by the device.


       The following capabilities have been defined:

       dma-max                 Maximum  dma transfer size that is supported by
                               the host adapter.


       dma-max-arch            Maximum dma transfer size that is supported  by
                               system.  Takes  the host adapter and system ar‐
                               chitecture into account.  This  is  useful  for
                               target  drivers  which  do  not support partial
                               DMAs on systems which do not have an IOMMU.  In
                               this  case,  the DMA can also be limited by the
                               host  adapters   "scatter/gather"   list   con‐
                               straints.

                               The  "dma-max-arch"  capability can not be set.
                               It is implemented with this  command  and  does
                               not rely on a tran_getcap(9E) response from the
                               HBA.


       msg-out                 Message out capability that is supported by the
                               host adapter: 0 disables, 1 enables.


       disconnect              Disconnect  capability that is supported by the
                               host adapter: 0 disables, 1 enables.


       synchronous             Synchronous data transfer  capability  that  is
                               supported  by  the  host adapter: 0 disables, 1
                               enables.


       wide-xfer               Wide transfer capability that is  supported  by
                               the host adapter: 0 disables, 1 enables.


       parity                  Parity checking capability that is supported by
                               host adapter: 0 disables, 1 enables.


       initiator-id            Host bus address that is returned.


       untagged-qing           Host  adapter capability that supports internal
                               queueing of commands without tagged queueing: 0
                               disables, 1 enables.


       tagged-qing             Host adapter capability that supports  queuing:
                               0 disables, 1 enables.


       auto-rqsense            Host  adapter capability that supports auto re‐
                               quest sense on check conditions: 0 disables,  1
                               enables.


       sector-size             Capability  that is set by the target driver to
                               inform the HBA of the granularity, in bytes, of
                               the DMA breakup. The HBA  DMA  limit  structure
                               is  set  to reflect the byte total of this set‐
                               ting.     See     ddi_dma_lim_sparc(9S)      or
                               ddi_dma_lim_x86(9S).  The sector-size should be
                               set to the size of the  physical  disk  sector.
                               The capability defaults to 512 bytes.


       total-sectors           Capability  that is set by the target driver to
                               inform the HBA of the total number  of  sectors
                               on  the device returned by the SCSI  get capac‐
                               ity command. This capability must be set before
                               the target driver "gets" the geometry  capabil‐
                               ity.


       geometry                Capability  that  returns the HBA geometry of a
                               target disk. The target driver sets the  total-
                               sectors  capability before "getting" the geome‐
                               try capability. The geometry is returned  as  a
                               32-bit  value.  The upper 16 bits represent the
                               number of heads per cylinder. The lower 16 bits
                               represent the number of sectors per track.  The
                               geometry capability cannot be "set".

                               If  geometry is not relevant or appropriate for
                               the target disk, scsi_ifgetcap() can return  -1
                               to  indicate  that the geometry is not defined.
                               For example, if the HBA BIOS  supports  Logical
                               Block   Addressing   for   the   target   disk,
                               scsi_ifgetcap() returns  -1.  Attempts  to  re‐
                               trieve  the  "virtual geometry" from the target
                               driver, such as the DKIOCG_VIRTGEOM ioctl, will
                               fail. See dkio(4I) for more  information  about
                               DKIOCG_VIRTGEOM.


       reset-notification      Host adapter capability that supports bus reset
                               notification:   0   disables,  1  enables.  See
                               scsi_reset_notify(9F).


       linked-cmds             Host adapter capability  that  supports  linked
                               commands: 0 disables, 1 enables.


       qfull-retries           Capability that enables or disables QUEUE  FULL
                               handling.  If  0, the HBA will not retry a com‐
                               mand when a QUEUE  FULL status is returned.  If
                               the value is greater than 0, the HBA driver re‐
                               tries  the  command a specified number of times
                               at an interval determined by  the  qfull-retry-
                               interval. The range for qfull-retries is 0-255.


       qfull-retry-interval    Capability that sets the retry interval in mil‐
                               liseconds  (ms)  for  commands completed with a
                               QUEUE  FULL status. The range for  qfull-retry-
                               intervals is 0-1000  ms.


       lun-reset               Capability that is created with a value of zero
                               by  HBA drivers that support the RESET_LUN flag
                               in the tran_reset(9E) function. If  it  exists,
                               the  lun-reset  value can be set to 1 by target
                               drivers to allow the use of LOGICAL UNIT  RESET
                               on  a  specific  target  instance. If lun-reset
                               does not exist or has a value of zero, scsi_re‐
                               set(9F) is prevented from passing the RESET_LUN
                               flag to tran_reset() function of the  HBA  dri‐
                               ver.  If lun-reset exists and has a value of 1,
                               the tran_reset() function of the HBA driver can
                               be called with the RESET_LUN flag.


       interconnect-type       Capability held in  the  tran_interconnect_type
                               element  of struct scsi_hba_tran that indicates
                               the HBA transport interconnect type . The inte‐
                               ger value  of  the  interconnect  type  of  the
                               transport  is  defined in the services.h header
                               file.


       max-cdb-length          Host adapter capability  of  the  maximum  sup‐
                               ported  CDB  (Command Descriptor Block) length.
                               The target driver asks for  the  capability  at
                               attach time. If the HBA driver supports the ca‐
                               pability,  the maximum length of the CDB is re‐
                               turned in bytes. The target driver can then use
                               that value to determine which CDB is  used  for
                               the HBA.

                               If the HBA driver does not support the max-cdb-
                               length  capability,  the  default  value of the
                               target driver is used for  the  CDB  determina‐
                               tion.


       tran-layer-retries      Transport  Layer retries is support by the host
                               adapter: 0 disables, 1 enables.


       cmd-dev-resume          Target driver's capability to  re-run  the  I/O
                               which  is  in queue when the HBA device is back
                               online.


       cmd-path-busy           Target driver's capability to support the error
                               recovery when host  adapter  is  busy  handling
                               I/O.


       Note -




         The  cmd-dev-resume  and  cmd-path-busy interfaces are currently pri‐
         vate. Therefore, information related to  these  will  not  appear  in
         man(1) output.



RETURN VALUES
       The scsi_ifsetcap() function returns:

       1        If the capability was successfully set to the new value.


       0        If the capability is not variable.


       −1       If  the  capability was not defined, or setting the capability
                to a new value failed.



       The scsi_ifgetcap() function returns the current value of a capability,
       or:

       −1       If the capability was not defined.


EXAMPLES
       Example 1 Using scsi_ifgetcap()


         if (scsi_ifgetcap(&sd->sd_address, "auto-rqsense", 1) == 1) {
            un->un_arq_enabled = 1;
         } else {
            un->un_arq_enabled =
                ((scsi_ifsetcap(&sd->sd_address, "auto-rqsense", 1, 1) == 1) ?
                      1 : 0);
         }

         if (scsi_ifsetcap(&devp->sd_address, "tagged-qing", 1, 1) == 1) {
                un->un_dp->options |= SD_QUEUEING;
                un->un_throttle = MAX_THROTTLE;
         } else if (scsi_ifgetcap(&devp->sd_address, "untagged-qing", 0) == 1) {
                un->un_dp->options |= SD_QUEUEING;
                un->un_throttle = 3;
         } else {
                un->un_dp->options &= ~SD_QUEUEING;
                un->un_throttle = 1;
         }


CONTEXT
       These functions can be called from user, interrupt, or kernel context.

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted


SEE ALSO
       tran_reset(9E),  scsi_hba_lookup_capstr(9F),  scsi_reset(9F),  scsi_re‐
       set_notify(9F),  ddi_dma_lim_sparc(9S),  ddi_dma_lim_x86(9S),  scsi_ad‐
       dress(9S), scsi_arq_status(9S)


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4               28 Dec 2015                scsi_ifgetcap(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3