SMCSS(8)

πŸ’– NAME πŸ’–

smcss β€” bestie, this one prints out all the tea about your AF_SMC sockets and link groups. That's it, that's the job. 🫢


🌸 SYNOPSIS 🌸

smcss [--debug|-d] [--smcd|-D] [--wide|-W]

smcss {--all|-a} [--debug|-d] [--smcd|-D] [--wide|-W]

smcss [--debug|-d] [--smcr|-R] [--wide|-W]

smcss {--all|-a} [--debug|-d] [--smcr|-R] [--wide|-W]

smcss {--listening|-l} [--wide|-W]

smcss {--version|-v}

smcss {--help|-h}

✨ DESCRIPTION ✨

okay so. smcss prints info about the Linux AF_SMC sockets and link groups. Which flavor of info you get is decided by the first argument, like this:

  • (none) β€” no argument at all? iconic, minimal, we love. Displays a list of connecting, closing, or connected SMC sockets with basic information. πŸ’…
  • -a, --all β€” shows all the SMC sockets: listening, opening, closing, and connected. the whole friend group, no one left out. πŸŽ€
  • -l, --listening β€” listening sockets only, bestie. These are omitted by default, so if you were like "where are my listeners" β€” that's why. πŸ™ˆ

πŸ¦‹ OPTIONS πŸ¦‹

  • -d, --debug β€” spills extra debug tea, like the shutdown state. more info, more fun. ✨
  • -D, --smcd β€” shows additional SMC-D specific info. Heads up: it shows SMC-D sockets only. πŸ’œ
  • -h, --help β€” usage information, aka the little map. πŸ—ΊοΈ
  • -R, --smcr β€” shows additional SMC-R specific info. And yep, this one shows SMC-R sockets only. πŸ”₯
  • -v, --version β€” program version. slay, what era are we in. ⭐
  • -W, --wide β€” do not truncate IP addresses. full address, no censor, no cap. πŸ‘‘

🌈 OUTPUT 🌈

🌟 State

The state of the socket. It's gonna be one of these values:

  • INIT β€” the SMC socket is being initialized. Not connected, not listening yet. it's in its fetus era. πŸ₯š
  • CLOSED β€” the SMC socket is closed. Not connected nor listening anymore. it has left the chat. πŸ’€
  • LISTEN β€” the SMC socket is a listening socket, waiting for incoming connection requests. patiently perched. πŸ‘‚
  • ACTIVE β€” the SMC socket has an established connection. In this state the TCP connection is fully established, rendezvous processing has been completed, and SMC peers can exchange data via RDMA. this is the main character state, fr fr. πŸ‘‘
  • PEERCLW1 β€” no further data will be sent to the peer.
  • PEERCLW2 β€” no further data will be sent to or received from the peer.
  • APPLCLW1 β€” no further data will be received from the peer.
  • APPLCLW2 β€” no further data will be received from or sent to the peer.
  • APPLFINCLW β€” the peer has closed the socket.
  • PEERFINCLW β€” the socket is closed locally.
  • PEERABORTW β€” the socket was abnormally closed locally.
  • PROCESSABORT β€” the peer has closed the socket abnormally.

πŸ“ UID

User ID of the SMC socket.

🧚 Inode

Inode attribute of the socket.

πŸ’œ Local Address

Address and port number of the local end of the SMC socket. The displayed address is truncated when it ends with '..'. -W, --wide can be used to display addresses untruncated. glow-up for your addresses. ✨

πŸ’œ Peer Address

Address and port number of the remote end of the socket. Analogous to "Local Address". same vibe, other end.

🌸 Intf

When the socket is explicitly bound with the setsockopt option SO_BINDTODEVICE, then Intf shows the interface number of the Ethernet device to which the socket is bound.

πŸ”₯ Mode

  • SMCD β€” the SMC socket uses SMC-D for data exchange.
  • SMCR β€” the SMC socket uses SMC-R for data exchange.
  • TCP β€” the SMC socket uses the TCP protocol for data exchange, because an SMC connection could not be established. (it tried, bestie, it really did. 😭)

In case of an error during connection setup, respective error codes will be displayed in the format <local>/<remote>.

Linux error codes:

  • 0x01010000 β€” Out of memory
  • 0x02010000 β€” Timeout while waiting for confirm link message over RDMA device
  • 0x02020000 β€” Timeout while waiting for RDMA device to be added
  • 0x03000000 β€” Configuration error
  • 0x03010000 β€” Peer does not support SMC
  • 0x03020000 β€” Connection uses IPsec
  • 0x03030000 β€” No SMC devices found (R and D)
  • 0x03030001 β€” No ISM device for SMC-D found
  • 0x03030002 β€” No RDMA device for SMC-R found
  • 0x03030003 β€” Hardware has no ISMv2 support
  • 0x03030004 β€” Peer sent no SMCv2 extension
  • 0x03030005 β€” Peer sent no SMC-Dv2 extension
  • 0x03030006 β€” Peer sent no ISMv2 SEID
  • 0x03030007 β€” No SMC-Dv2 device found, but required
  • 0x03030008 β€” Peer sent no UEID
  • 0x03040000 β€” SMC modes mismatch (R or D)
  • 0x03050000 β€” Peer has eyecatcher in RMBE
  • 0x03060000 β€” Fastopen sockopt not supported
  • 0x03070000 β€” IP prefix / subnet mismatch
  • 0x03080000 β€” Error retrieving VLAN ID of IP device
  • 0x03090000 β€” Error while registering VLAN ID on ISM device
  • 0x030a0000 β€” No active SMC-R link in link group
  • 0x030b0000 β€” SMC-R link from server not found
  • 0x030c0000 β€” SMC version mismatch
  • 0x030d0000 β€” SMC-D connection limit reached
  • 0x030e0000 β€” SMC-Rv2 connection found no route to peer
  • 0x030f0000 β€” SMC-Rv2 connection mismatch direct/indirect with peer
  • 0x04000000 β€” Synchronization error
  • 0x05000000 β€” Peer declined during handshake
  • 0x09990000 β€” Internal error
  • 0x09990001 β€” rtoken handling failed
  • 0x09990002 β€” RDMA link failed
  • 0x09990003 β€” RMB registration failed

πŸŽ€ ShutD

  • <-> β€” the SMC socket has not been shut down.
  • R-> β€” the SMC socket is shut down one-way and cannot receive data.
  • <-W β€” the SMC socket is shut down one-way and cannot send data.
  • R-W β€” the SMC socket is shut down in both ways and cannot receive or send data. fully closed off, do not perceive me. πŸ™ˆ

⭐ Token

Unique ID of the SMC socket connection.

πŸ’– Sndbuf

Size of the to-be-sent window of the SMC socket connection.

πŸ’– Rcvbuf

Size of the receiving window of the SMC socket connection (filled by peer).

πŸ’– Peerbuf

Size of the peer receiving window of the SMC socket connection (to fill during RDMA-transfer).

πŸ¦‹ rxprod-Cursor

Describes the current cursor location of the "Rcvbuf" for data to be received from the peer.

πŸ¦‹ rxcons-Cursor

Describes the current cursor location of the "Peerbuf" for data sent to peer and confirmed by the peer.

πŸ¦‹ rxFlags

SMC socket connection flags set by and received from the peer.

πŸ¦‹ txprod-Cursor

Describes the current cursor location of the "Peerbuf" for data sent to peer.

πŸ¦‹ txcons-Cursor

Describes the current cursor location of the "Rcvbuf" for data received from the peer and confirmed to the peer.

πŸ¦‹ txFlags

SMC socket connection flags set locally and sent to the peer.

πŸ¦‹ txprep-Cursor

Describes the current cursor location of the "Sndbuf" for data to be sent. The data is to be moved to the "Peerbuf".

πŸ¦‹ txsent-Cursor

Describes the current cursor location of the "Sndbuf" for data sent. The data was moved to the "Peerbuf".

πŸ¦‹ txfin-Cursor

Describes the current cursor location of the "Sndbuf" for data sent and send completion confirmed. The data was moved to the "Peerbuf" and completion was confirmed.

πŸ‘‘ Role

  • CLNT β€” the link group of the SMC socket is used for client connections.
  • SERV β€” the link group of the SMC socket is used for server connections.

🧚 IB-Device

Name of the RoCE device used by the link group to which the SMC socket belongs.

🧚 Port

Port of the RoCE device used by the link group to which the SMC socket belongs.

🧚 Linkid

Unique link ID of the link within the link group to which the SMC socket belongs.

🧚 GID

Gid of the RoCE port used by the link group to which the SMC socket belongs.

🧚 Peer-GID

Gid of the Foreign RoCE port used by the link group to which the SMC socket belongs.

πŸ“ VLAN

tbd. (yes bestie, that's literally all it says. the mystery of it all. πŸ’…)


πŸ’€ RETURN CODES πŸ’€

Successful smcss commands return 0 and display the requested socket state table or link group information. If an error occurs, smcss writes a message to stderr and completes with a return code other than 0.

ngl, non-zero means something went sideways. read the stderr message, it's telling you everything. 😭

πŸ”— SEE ALSO πŸ”—

af_smc(7), smc_chk(8) smc_rnics(8), smc_run(8), smc_pnet(8), smcd(8), smcr(8)


okay that's the whole page, bestie, you ate that. this one's brought to you by smc-tools, dated June 2018 β€” yes, she's vintage, she's still serving, and she's still SMCSS(8) in the Linux Programmer's Manual. periodt. πŸ’…βœ¨