Provided by: smp-utils_0.99-1_amd64 bug

NAME

       smp_discover - invoke DISCOVER SMP function

SYNOPSIS

       smp_discover  [--adn] [--brief] [--cap] [--dsn] [--help] [--hex] [--ignore] [--interface=PARAMS] [--list]
       [--multiple] [--my] [--num=NUM] [--phy=ID] [--raw] [--sa=SAS_ADDR]  [--summary]  [--verbose]  [--version]
       [--zero] SMP_DEVICE[,N]

DESCRIPTION

       Sends  one  or  more SAS Serial Management Protocol (SMP) DISCOVER function requests to an SMP target and
       decodes or outputs the responses. The SMP target is  identified  by  the  SMP_DEVICE  and  the  SAS_ADDR.
       Depending  on  the  interface,  the  SAS_ADDR may be deduced from the SMP_DEVICE.  The mpt interface uses
       SMP_DEVICE to identify a HBA (an SMP initiator) and needs the additional ,N to differentiate between HBAs
       if there are multiple present.

       If the --phy=ID option is not given then --summary is assumed. When --summary is given or  assumed,  this
       utility  shows  the  disposition of each active expander phy in table form. One row is shown for each phy
       and is described in the SINGLE LINE PER PHY FORMAT section below. For this purpose disabled expander phys
       and those with errors are considered "active" and can be suppressed from the output by adding the --brief
       option.

       Rather than supply options and SMP_DEVICE[,N] on every invocation some can be  supplied  via  environment
       variables. See the section on ENVIRONMENT VARIABLES below.

OPTIONS

       Mandatory arguments to long options are mandatory for short options as well.

       -A, --adn
              causes  the  "attached  device name" field to be output when the --multiple or --summary option is
              also given. See the section below on SINGLE LINE PER PHY FORMAT. Note the "attached  device  name"
              field was added is SAS-2.

       -b, --brief
              reduce  the decoded response output. If used twice will exit if there is no attached device (after
              outputting that). When used with --multiple, unattached phys are  not  listed;  when  used  twice,
              trims attached phys output.

       -c, --cap
              decode and print phy capabilities bits fields (see SNW-3 in draft). Each expander phy has three of
              these  fields:  programmed, current and attached.  By default these fields are only printed out in
              hex, or not at all if the --brief option is given or  implied.  Of  the  three  the  attached  phy
              capability  field  is  probably  the  most interesting. If the --verbose option is given, then the
              various "G" identifiers are expanded (e.g. instead of "G4:" it prints "G4 (12 Gbps):").

       -h, --help
              output the usage message then exit.

       -D, --dsn
              outputs the device slot number at the end of each summary line. In summary mode one line is output
              per expander phy. It is output in the form "dsn=<val>" where <val> is decimal in the range from  0
              to  254  inclusive.   It  is  not  output if it is not available or has the value 255. An expander
              typically contains a SES device which yields device slot numbers in its Additional Element  Status
              diagnostic page.

       -H, --hex
              output the response (less the CRC field) in hexadecimal.

       -i, --ignore
              sets  the  Ignore  Zone Group bit in the SMP Discover request. Expander phys hidden by zoning will
              appear as "phy vacant" unless this option is given.

       -I, --interface=PARAMS
              interface specific parameters. In this case "interface" refers to the path through  the  operating
              system to the SMP initiator. See the smp_utils man page for more information.

       -l, --list
              list attributes in "name=value" form, one entry per line.

       -m, --multiple
              loops over multiple phys within SMP target (typically an expander) and does a DISCOVER request and
              outputs  a one line summary. Phy 0 is queried first, then phy 1, continuing until an error occurs.
              The starting phy and the number of phys "discovered" can be controlled by --phy=ID and  --num=NUM.
              If  --brief  is  given then there is no output for phys that indicate there is no attached device.
              When this option is used twice then multi-line output is produced for each phy.  See  the  section
              below on SINGLE LINE PER PHY FORMAT.

       -M, --my
              outputs  my  (this  expander's)  SAS  address in hex (prefixed by "0x"). This is obtained from the
              DISCOVER response of phy id 0 (unless --phy=ID is given). The expander's SAS address is  typically
              available  even  if a phy is not connected, "vacant" or disabled. This option overrides most other
              options (e.g. overrides --multiple and --summary options).

       -n, --num=NUM
              number of phys to fetch, starting at --phy=ID when the --multiple option  is  given.  The  default
              value  is  0 which is interpreted as "the rest" (i.e. until a "phy does not exist" function result
              is received). This option is ignored in the absence of the --multiple option.

       -p, --phy=ID
              phy identifier. ID is a value between 0 and 254. If this option is not given  then  the  --summary
              option is assumed.

       -r, --raw
              send the response (less the CRC field) to stdout in binary. All error messages are sent to stderr.

       -s, --sa=SAS_ADDR
              specifies the SAS address of the SMP target device. Typically this is an expander. This option may
              not be needed if the SMP_DEVICE has the target's SAS address within it. The SAS_ADDR is in decimal
              but  most SAS addresses are shown in hexadecimal. To give a number in hexadecimal either prefix it
              with '0x' or put a trailing 'h' on it.

       -S, --summary
              output a multi line summary, with one line per active phy. Checks all phys (or less  is  --num=NUM
              is  given),  starting  at  phy  0  (unless  --phy=ID is given). Equivalent to '--multiple --brief'
              ('-mb').  See the section below on SINGLE LINE PER PHY FORMAT. If the --phy=ID is not  given  then
              this option is assumed.

       -v, --verbose
              increase the verbosity of the output. Can be used multiple times

       -V, --version
              print the version string and then exit.

       -z, --zero
              zero the Allocated Response Length field in the request. This option also zeros the Request Length
              field  in  the request. This is required for strict SAS-1.1 compliance. However this option should
              not be given in SAS-2 and later; if it is given an abridged response may result.

SINGLE LINE PER PHY FORMAT

       The --summary option causes SMP DISCOVER responses to be compressed to a header followed by one line  per
       phy.  To  save  space SAS addresses are shown in hex without a '0x' prefix or 'h' suffix. The header line
       gives the SAS address of the SMP target itself and assumes it is an expander.

       Each line starts with "  phy  <n>:" where <n> is the phy identifier (and they are origin zero).  That  is
       followed  by the routing attribute represented by a single letter which is either "D" for direct routing,
       "S" for subtractive routing, "T" or "U". Both "T" and "U" imply table routing, the difference is that  if
       REPORT  GENERAL  indicates "table to table supported" then "U" is output to indicate that phy can be part
       of an enclosure universal port; otherwise "T" is used. Next comes the negotiated physical link rate which
       is either "disabled", "reset problem" or "spinup hold". Other  states  are  mapped  to  "attached".  This
       includes enabled phys with nothing connected which appear as "attached:[0000000000000000:00]".

       Information  shown  between  the  brackets  is  for the attached device.  Phys that are connected display
       something like: "attached:[5000c50000520a2a:01 " where the first number is the attached SAS  address  (in
       hex)  and the second number is the attached device's phy identifier. If the attached device type is other
       than a SAS or SATA device then one of these abbreviations is output: "exp"  (for  expander),  "fex"  (for
       fanout  expander)  or "res" (for unknown attached device type). If a phy is flagged as "virtual" then the
       letter "V" appears next. Next are the protocols supported by the  attached  device  which  are  shown  as
       "i(<list>)"  for  initiator  protocols  and/or "t(<list>)" for target protocols. The <list> is made up of
       "PORT_SEL", "SSP", "STP", "SMP" and "SATA" with "+" used as a separator. For example a SAS  host  adapter
       will  most  likely  appear  as:  "i(SSP+STP+SMP)". This completes the information about the attached phy,
       hence the closing right bracket.

       If appropriate, the negotiated physical link rate is shown in gigabits per second. Here is an example  of
       a  line  for  expander  phy identifier 11 connected to a SATA target (or SATA "device" to use the t13.org
       term):

         phy  11:T:attached:[500605b000000afb:00  t(SATA)]  1.5 Gbps

       If the expander has zoning enabled (i.e. REPORT GENERAL response bit for 'zoning enabled' is set)  and  a
       phy's zone group is other than zg 1 then the phy's zone group is shown (e.g. "ZG:2").

       If the --adn option is given then after the attached SAS address and the attached device's phy identifier
       are  output  an  extra field is inserted containing the "attached device name" field. For a SAS disk this
       should be its target device name (in NAA-5 format) and for a SATA disk its  WWN  (if  provided,  also  in
       NAA-5  format).  Also when the --adn option is given the phy speed and zone group are not output in order
       to keep the line length reasonable.

       If the --dsn option is given and device slot number information is available for the  current  phy,  then
       "dsn=<num>"  is  appended to the line.  Device slot numbers range from 0 to 254 with 255 meaning there is
       no corresponding slot so it is not listed.

ENVIRONMENT VARIABLES

       If SMP_DEVICE[,N] is not given then the SMP_UTILS_DEVICE environment variable is checked and  if  present
       its contents are used instead.

       If  the  SAS  address  (of  the  SMP target) is not given and it is required (i.e.  it is not implicit in
       SMP_DEVICE[,N]) then the SMP_UTILS_SAS_ADDR environment variable is checked and if present  its  contents
       are  used  as  the  SAS  address.  SAS  addresses are usually given in hex indicated by a leading '0x' or
       trailing 'h'.

       A device slot number (dsn) is important for establishing the relationship between an expander phy  and  a
       SES  array  element.  Newer  expanders  (e.g.  SAS-3)  support  dsn_s in the DISCOVER (and DISCOVER LIST)
       functions. These can be shown, if available, with the --dsn option to smp_discover and  smp_discover_list
       utilities..  To  ease typing that option often, the SMP_UTILS_DSN environment variableriable, if present,
       has the same effect.

NOTES

       In SAS-2 and later both the DISCOVER and  DISCOVER  LIST  functions  are  available.  The  DISCOVER  LIST
       function  should  be  favoured  for  several  reasons:  its  response  can hold up to 40 descriptors each
       describing the state of one expander phy. The vast majority of expander chips on the  market  support  36
       phys  or  less so one DISCOVER LIST response will summarize the states of all its phys. With the DISCOVER
       function only one expander phy's state is returned in its response. Other advantages of the DISCOVER LIST
       function are its "phy filter" and "descriptor type" function request fields.

EXAMPLES

       See "Examples" section in http://sg.danny.cz/sg/smp_utils.html

CONFORMING TO

       The SMP DISCOVER function was introduced in SAS-1, with small additions in SAS-1.1 . There were  a  large
       number  of additions in SAS-2 . After SAS-2 the protocol sections of SAS were split into another document
       series known as the SAS Protocol Layer (SPL) and it was standardized as SPL ANSI  INCITS  476-2011.  Next
       came  SPL-2 which was standardized as SPL-2 ANSI INCITS 505-2013.  Then came SPL-3 which was standardized
       as SPL-3 ANSI INCITS 492-2015. SPL-4 is near standardization and its most  recent  draft  is  spl4r13.pdf
       while SPL-5 work has started and its most recent draft is spl5r03.pdf.

AUTHORS

       Written by Douglas Gilbert.

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

       Copyright © 2006-2018 Douglas Gilbert
       This  software is distributed under a FreeBSD license. There is NO warranty; not even for MERCHANTABILITY
       or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO

       smp_utils, smp_discover_list, smp_phy_control

smp_utils-0.99                                    February 2018                                  SMP_DISCOVER(8)