SMP_ZONED_BROADCAST(8)

✨ SMP_ZONED_BROADCAST(8) β€” the smp_zoned_broadcast glow-up ✨

ok so bestie, you found your way to smp_zoned_broadcast in the smp_utils manual (section 8, we're in sysadmin territory πŸ’…), and I'm gonna walk you through it like we're texting at 1am. sit down, hydrate, let's go 🫢


🌸 NAME 🌸

smp_zoned_broadcast β€” invoke ZONED BROADCAST SMP function. that's it, that's the whole vibe. it literally does one thing and it serves πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

smp_zoned_broadcast [--broadcast=BT] [--expected=EX] [--fszg=FS]
[--help] [--hex] [--interface=PARAMS] [--raw] [--sa=SAS_ADDR]
[--szg=ZGL] [--verbose] [--version] SMP_DEVICE[,N]

like, look at her. a whole lineup of options. main character energy fr fr πŸ‘‘


πŸ’– DESCRIPTION πŸ’–

so what's actually happening here? this little icon sends a SAS Serial Management Protocol (SMP) ZONED BROADCAST function request off to an SMP target. and who is that target, you ask? it's identified by the SMP_DEVICE and the --sa=SAS_ADDR, okay?

depending on the interface, the SAS_ADDR may just be deduced from the SMP_DEVICE β€” no extra work needed, slay. but the mpt interface is a lil different: it uses SMP_DEVICE to identify a HBA (that's an SMP initiator, iykyk) and it needs that extra ,N to tell apart HBAs if there's more than one hanging around. multiple HBAs? not me having to differentiate πŸ’€

heads up: this function requires zoning to be enabled. no zoning, no vibes.

and if you're sitting there like "but bestie, how do I send a Broadcast (Change) when there's no zoning at all?" β€” the least intrusive way seems to be to use a PHY CONTROL request to send a link reset to an expander phy. that's the move 🌈

and why do we even care? because Broadcast (Change) should cause a management application client behind an SMP initiator port (think: a SAS HBA) to start a discover process. it's giving "hey girl, wake up, go look around" ⭐


πŸ’… OPTIONS πŸ’…

ok mandatory-arguments-to-long-options-are-mandatory-for-short-options-as-well, that classic line. here's every single one, no skips, no cap:

  • -b, --broadcast=BT β€” BT is the broadcast type, an integer from 0 (the default, bestie) to 15. 0 is Broadcast (Change) and it makes SMP initiators that receive it go do their discover process. the other known broadcast types? they're listed down in NOTES, keep scrolling πŸ“œ. BT can be decimal (that's the default) or hexadecimal, prefixed with '0x' (or '0X') or with a 'h' (or 'H') suffix.
  • -E, --expected=EX β€” sets the 'expected expander change count' field in the SMP request. EX goes from 0 to 65535 inclusive, and 0 is the default value. so when EX is greater than zero, 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. rude, but fair πŸ™ˆ. also 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 containing 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 lines starting with "#", are ignored. cute and tidy ✨
  • -h, --help β€” outputs the usage message then exits. the classic "help me bestie" button 🫢
  • -H, --hex β€” outputs the response (less the CRC field) in hexadecimal.
  • -I, --interface=PARAMS β€” interface specific parameters. in this case "interface" means the path through the operating system to the SMP initiator. for more info, go read the smp_utils man page πŸ’œ
  • -r, --raw β€” sends the response (less the CRC field) to stdout in binary. all error messages go to stderr. keeping the streams separated, we love a clean setup 🌸
  • -s, --sa=SAS_ADDR β€” specifies the SAS address of the SMP target device. the mpt interface needs this option, and it'll typically be an expander's SAS address. 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, appearing as a comma separated list ZGL. they 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. and listen: either this option or --fszg=FS (but not both) should be given. pick a lane, bestie πŸ’…
  • -v, --verbose β€” increases the verbosity of the output. can be used multiple times, so go off, stack them, get all the tea β˜•
  • -V, --version β€” prints the version string and then exits.

πŸŽ€ NOTES πŸŽ€

here's the full list of broadcast types, no gatekeeping:

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)

and the remaining zone types (9 to 15) may be issued by the ZONED BROADCAST function. so there's more where that came from ✨


🌈 CONFORMING TO 🌈

the SMP ZONED BROADCAST function was introduced in SAS-2. periodt. she's been around πŸ’–


πŸ‘‘ AUTHORS πŸ‘‘

written by Douglas Gilbert. the icon who built all of this, we stan 🫢


😭 REPORTING BUGS 😭

found a bug? report bugs to <dgilbert at interlog dot com>. don't be shy, they wanna know fr fr


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. so like, if it breaks, it's not their problem, ngl πŸ™ˆ


⭐ SEE ALSO ⭐

  • smp_utils
  • smp_zone_lock
  • smp_zone_unlock
  • smp_ena_dis_zoning(smp_utils)

go read those next, bestie, the lore runs deep πŸ¦‹


ok that's the whole page!! πŸ’– this was smp_utils-0.96 from June 2011, and yes the version is giving vintage but she still eats. love u, go broadcast something responsibly πŸŽ€βœ¨