SMC_PNET(8)
π SMC_PNET π
okay bestie, grab your iced coffee because we're talking about smc_pnet β the tool that creates, destroys, and changes the SMC PNET table. yes she does all three, she's versatile like that π
β¨ SYNOPSIS β¨
smc_pnet { -a | --add <pnetid> } { -I | --interface <ethernet-interface>
}
smc_pnet { -a | --add <pnetid> } { -D | --ibdevice <infiniband-or-ISM-
device> } [ -P | --ibport <infiniband-port> ]
smc_pnet { -a | --add <pnetid> } { -I | --interface <ethernet-interface>
} { -D | --ibdevice <infiniband-or-ISM-device> } [ -P | --ibport
<infiniband-port> ]
smc_pnet { -s | --show <pnetid> }
smc_pnet { -d | --delete <pnetid> }
smc_pnet { -f | --flush }
smc_pnet { -v | --version }
smc_pnet { -h | --help }
likeβ¦ look at her. so many moods. all valid. π«Ά
πΈ DESCRIPTION πΈ
so the SMC protocol is obsessed with grouping stuff together β specifically standard Ethernet networks and RoCE networks, or ISM devices. those little groups? they're called Physical Networks, aka PNETs. iconic name, no notes.
the mapping between them lives in a table called the pnet table. any Ethernet interface can be paired up with the RDMA-capable network interface card (RNIC) or a DMA-capable ISM device β but only if they belong to the same Converged Ethernet fabric. it's giving "you two need to be in the same friend group."
to configure mapping of a RoCE Adapter port or an ISM device to a standard Ethernet interface, both devices need to have the same PNET ID. that ID can be either hardware-defined or user-defined using the pnet table. and bestie, listen: hardware-defined PNET IDs cannot be overwritten. periodt. don't even try.
here's the cute part (or the annoying part, depending on your day): the Ethernet interface, the RNIC, or the DMA-capable ISM device may not be present while you're creating a pnet table entry. that's fine!! such pnet table entries will be applied once the corresponding interface or device comes online. and when the interface or device gets removed, the entry still remains in the pnet table. she's loyal.
β οΈ the entire pnet table is not persistent across reboots. so don't get too attached. π
and yeah β the smc_pnet command is what configures the pnet table. that's the whole gig.
π OPTIONS π
by default, smc_pnet shows all entries of the pnet table. no args needed, she just gives.
<pnetid>β defines a name for a grouping of Ethernet interface and RNICs or ISM devices. a PNET ID consists of up to 16 alphanumeric uppercase characters without blanks. so like, no spaces, no lowercase, keep it tight. π-a,--addβ creates a new PNET ID definition to the pnet table (if it does not already exist). only one PNET ID can be defined for a certain Ethernet interface, a certain InfiniBand device port, or a certain ISM device. adding more than one PNET ID fails. and remember: hardware defined PNET IDs cannot be overwritten. she said what she said.-s,--showβ shows a certain PNET ID definition in the pnet table. just the one you asked for, main character energy. π-d,--deleteβ deletes an existing PNET ID definition from the pnet table. bye bestie π¦-f,--flushβ removes all PNET ID definitions from the pnet table. scorched earth, but make it cute. π₯-I,--interface <ethernet-interface>β specifies the name of the Ethernet interface to be added for a certain PNET ID definition.-D,--ibdevice <infiniband-or-ISM-device>β specifies the ID of the InfiniBand device or ISM device.-P,--ibport <infiniband-port>β specifies the port number of the InfiniBand device port. valid numbers are 1 or 2. the default value is 1. (so if you're lazy, she got you. ngl.)-v,--versionβ displayssmc_pnetprogram version.-h,--helpβ displays a briefsmc_pnetusage information.
π EXAMPLES π
okay this is the part where it all clicks. let's define PNET ID ABC for the ethernet device names encf500 and bond0, and define PNET ID ABC for the InfiniBand device ID 0001:00:00.0 (port 2) and the ISM device ID 0004:00:00.0:
$ smc_pnet -a ABC -I encf500
$ smc_pnet -a ABC -I bond0
$ smc_pnet -a ABC -D 0001:00:00:00.0 -P 2
$ smc_pnet -a ABC -D 0004:00:00:00.0
show all pnet table entries:
$ smc_pnet
ABC encf500 n/a 255
ABC bond0 n/a 255
ABC n/a 0001:00:00.0 2
ABC n/a 0004:00:00.0 1
look at that table. so organized. so slay. β¨
define PNET ID XYZ for the ethernet interface name vlan0201 and the InfiniBand device ID 0001:00:00.0 (port 1):
$ smc_pnet -a XYZ -I vlan0201 -D 0001:00:00.0 -P 1
show all entries for PNET ID XYZ:
$ smc_pnet -s XYZ
XYZ vlan0201 n/a 255
XYZ n/a 0001:00:00.0 1
delete all pnet table entries with PNET ID named ABC:
$ smc_pnet -d ABC
delete all entries in the pnet table:
$ smc_pnet -f
(that last one is the nuclear option. use with intention, bestie. π)
β RETURN CODES β
successful smc_pnet commands return 0. if an error occurs, smc_pnet writes a message to stderr and completes with a return code other than 0. so like, zero means we ate, anything else means something went sideways. π
π SEE ALSO π
af_smc(7), smc_chk(8) smc_rnics(8), smc_run(8), smcd(8), smcr(8), smcss(8)
go read those too, they're all part of the same friend group iykyk π«Ά
and that's the whole page, babe! this one's from smc-tools, dated January 2017 β a vintage classic that still serves. mwah ππ§ββοΈπΈ
π¦ where this page comes from
- centos-stream 10: smc-tools 1.8.8-1.el10 Β· EPL-1.0
- centos-stream 9: smc-tools 1.8.8-1.el9 Β· EPL-1.0
- centos-stream 9: smc-tools 1.8.8-1.el9 Β· EPL-1.0
- fedora 44: smc-tools 1.8.6-2.fc44 Β· EPL-1.0
- fedora 44: smc-tools 1.8.6-2.fc44 Β· EPL-1.0
- opensuse-leap 16.0: smc-tools 1.8.8-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: smc-tools 1.8.8-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: smc-tools 1.8.8-160000.1.1 Β· EPL-1.0
- opensuse-leap 16.0: smc-tools 1.8.8-160000.1.1 Β· EPL-1.0
- ubuntu resolute: smc-tools 1.8.7-0ubuntu1 Β· EPL-1.0
- ubuntu stonking: smc-tools 1.8.8-0ubuntu1 Β· EPL-1.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms