SMP_CONF_ROUTE_INFO(8)

โœจ SMP_CONF_ROUTE_INFO(8) โœจ

okay so bestie, welcome to the smp_utils corner of the manual, section 8, and today's main character is smp_conf_route_info ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

smp_conf_route_info โ€” bestie, this one goes and pokes the CONFIGURE ROUTE INFORMATION SMP function. that's the whole job. that's the vibe. ๐Ÿซถ


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

smp_conf_route_info [--disable] [--expected=EX] [--help] [--hex]
[--index=IN] [--interface=PARAMS] [--phy=ID] [--raw]
[--routed=R_SAS_ADDR] [--sa=SAS_ADDR] [--verbose] [--version]
SMP_DEVICE[,N]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

So what are we even doing here? We're sending a SAS Serial Management Protocol (SMP) CONFIGURE ROUTE INFORMATION function request to an SMP target. โœจ

Who is the SMP target, you ask? It's identified by the SMP_DEVICE and the --sa=SAS_ADDR. Depending on which interface you're rolling with, the SAS_ADDR might just be deduced straight out of the SMP_DEVICE โ€” no extra effort, slay. ๐Ÿ’…

The mpt interface is a little needier though: it uses SMP_DEVICE to identify a HBA (an SMP initiator, basically the one doing the initiating, main character energy) and it needs that extra ,N on the end to tell apart multiple HBAs if more than one is hanging around. no cap. ๐Ÿ™ˆ


Now, plot twist, there are two expander route table types:

  • phy-based
  • expander-based

The expander-based route table showed up in SAS-2 and it straight-up supersedes the phy-based route tables (iconic behaviour, honestly ๐Ÿ‘‘). But the CONFIGURE ROUTE INFORMATION function? That one is associated with a phy-based route table. And if you wanna report phy-based route table entries, there's a whole separate REPORT ROUTE INFORMATION function for that. iykyk. ๐ŸŒˆ

Also, lowkey important: every phy in a SAS expander that has an associated routing attribute of "table" gets its own router table. And the number of rows (aka entries) in each router table is given by the "expander route indexes" field in the response of the REPORT GENERAL function. ๐Ÿ“‹


๐Ÿ’– OPTIONS ๐Ÿ’–

real talk: mandatory arguments to long options are mandatory for short options as well. so don't try to skip them, bestie. ๐Ÿ˜ญ
  • -d, --disable โ€” sets the "disable expander route entry" flag in a row of the router table associated with --phy=ID of the given SMP target (like, say, an expander). Within that router table, the row getting disabled is the one identified by the expander route index you hand over in --index=IN. bye bye route entry ๐Ÿ‘‹
  • -E, --expected=EX โ€” sets the 'expected expander change count' field in the SMP request. EX runs from 0 to 65535 inclusive, and 0 is the default. Here's the drama: when EX is greater than zero, if the value doesn't match the expander change count of the SMP target (aka the expander) at the moment the request arrives, then the target ignores the request entirely and sets a function result of "invalid expander change count" in the response. ๐Ÿ’€
  • -h, --help โ€” prints the usage message, then exits. the classic.
  • -H, --hex โ€” spits out the response (minus the CRC field) in hexadecimal. ๐Ÿ”ข
  • -i, --index=IN โ€” the expander route index. IN is a value between 0 and 65535, default is 0. More precisely though? The max index value is (expander_route_indexes - 1). math is math ๐Ÿงฎ
  • -I, --interface=PARAMS โ€” interface specific parameters. and yes, "interface" here means the path through the operating system to the SMP initiator. go read the smp_utils man page for more on that. ๐Ÿ›ฃ๏ธ
  • -p, --phy=ID โ€” the phy identifier. ID is a value between 0 and 254, default is 0.
  • -r, --raw โ€” sends the response (minus the CRC field) to stdout in binary. and all the error messages? those go to stderr. keeping them separated, as one does. ๐Ÿ“
  • -R, --routed=R_SAS_ADDR โ€” specifies the SAS address to be placed in a row (the row given by --index=IN) of the router table associated with --phy=ID. Default value is 0. Heads up: R_SAS_ADDR is in decimal, but most SAS addresses are given in hexadecimal โ€” so to give a number in hex, either prefix it with '0x' or stick a trailing 'h' on it. your choice, both eat. ๐Ÿ’…
  • -s, --sa=SAS_ADDR โ€” specifies the SAS address of the SMP target device. typically that's an expander. this option may not even be needed if the SMP_DEVICE already has the target's SAS address inside it. same decimal/hex situation as above: SAS_ADDR is in decimal but most SAS addresses are shown in hexadecimal, so prefix with '0x' or slap a trailing 'h' on it. ๐ŸŽ€
  • -v, --verbose โ€” increases the verbosity of the output. and bestie, you can use it multiple times. stack it. โœจ
  • -V, --version โ€” prints the version string, then exits.

๐ŸŒŸ CONFORMING TO ๐ŸŒŸ

The SMP CONFIGURE ROUTE INFORMATION function was introduced in SAS-1. And the "Expander change count" field? That got added later, in SAS-2. glow up ๐Ÿ’ซ


๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

Written by Douglas Gilbert. (the legend himself ๐Ÿซถ)


๐Ÿ˜ญ REPORTING BUGS ๐Ÿ˜ญ

Report bugs to <dgilbert at interlog dot com>. don't be shy, they wanna know.


Copyright ยฉ 2006-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. (yes it's giving all caps legal energy, that's on purpose ๐Ÿ’€)


๐Ÿงš SEE ALSO ๐Ÿงš

  • smp_utils
  • smp_rep_general
  • smp_rep_route_info(smp_utils)

and that's the whole page, bestie!! this lil cutie comes to you as part of smp_utils-0.96, dated May 2011, and it lives its life as SMP_CONF_ROUTE_INFO(8). periodt. ๐Ÿ’…โœจ๐ŸŽ€