smp_zoned_broadcast [--broadcast=BT] [--expected=EX] [--fszg=FS] [--help] [--hex] [--interface=PARAMS] [--raw] [--sa=SAS_ADDR] [--szg=ZGL] [--verbose] [--version] SMP_DEVICE[,N]
Sends a SAS Serial Management Protocol (SMP) ZONED BROADCAST function request to an SMP target. The SMP target is identified by the SMP_DEVICE and the --sa=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.
This function requires zoning to be enabled. To send a Broadcast (Change) in the absence of zoning, the least intrusive way seems to be to use a PHY CONTROL request to send a link reset to an expander phy. Broadcast (Change) should cause a management application client behind an SMP initiator port (e.g. a SAS HBA) to start a discover process.
Mandatory arguments to long options are mandatory for short options as well.
- -b, --broadcast=BT
BT is the broadcast type, an integer in the range 0 (default) to 15. Broadcast (Change) corresponds to 0 and will cause SMP initiators that receive it to do their discover process. Other known broadcast types are listed in the Notes section. BT may be decimal (default) or hexadecimal prefixed by '0x' (or '0X') or with a 'h' (or 'H') suffix.
- -E, --expected=EX
set the 'expected expander change count' field in the SMP request. The value EX is from 0 to 65535 inclusive with 0 being the default value. When EX is greater than zero then if the value doesn't match the expander change count of the SMP target (i.e. the expander) when the request arrives then the target ignores the request and sets a function result of "invalid expander change count" in the response. In SPL-1 this field is marked as "restricted (for expected expander change count)".
- -F, --fszg=FS
where FS is the name of a file which contains one or more source zone groups to send a broadcast to. The zone groups can be given in decimal (default) or hexadecimal prefixed by '0x' (or '0X') or with a 'h' (or 'H') suffix. A zone group is a number in the range 0 to 255. Each zone group can be separated by space, tab, comma or newline. Empty lines and those starting with "#" are ignored.
- -h, --help
output the usage message then exit.
- -H, --hex
output the response (less the CRC field) in hexadecimal.
- -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.
- -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. The mpt interface needs this option and it will typically be an expander's SAS address. 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, --szg=ZGL
one or more source zone groups for broadcast can appear as a comma separated list ZGL. The may be decimal (default) or hexadecimal prefixed by '0x' (or '0X') or with a 'h' (or 'H') suffix. A zone group is a number in the range 0 to 255. Either this option or --fszg=FS (but not both) should be given.
- -v, --verbose
increase the verbosity of the output. Can be used multiple times.
- -V, --version
print the version string and then exit.
The following is a list of broadcast types:
0 Broadcast (Change)
1 Broadcast (Reserved change 0)
2 Broadcast (Reserved change 1)
3 Broadcast (SES)
4 Broadcast (Expander)
5 Broadcast (Asynchronous event)
6 Broadcast (Reserved 3)
7 Broadcast (Reserved 4)
8 Broadcast (Zone activate)
The remaining zone types (9 to 15) may be issued by the ZONED BROADCAST function.
The SMP ZONED BROADCAST function was introduced in SAS-2 .
Written by Douglas Gilbert.
Report bugs to <dgilbert at interlog dot com>.
Copyright © 2011 Douglas Gilbert
This software is distributed under a FreeBSD license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
smp_utils, smp_zone_lock, smp_zone_unlock, smp_ena_dis_zoning(smp_utils)