net/smc/smc_llc.c
Source file repositories/reference/linux-study-clean/net/smc/smc_llc.c
File Facts
- System
- Linux kernel
- Corpus path
net/smc/smc_llc.c- Extension
.c- Size
- 67088 bytes
- Lines
- 2377
- Domain
- Networking Core
- Bucket
- Sockets, Protocols, Packet Path, And Network Policy
- Inferred role
- Networking Core: implementation source
- Status
- source implementation candidate
Why This File Exists
Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
net/tcp.hrdma/ib_verbs.hsmc.hsmc_core.hsmc_clc.hsmc_llc.hsmc_pnet.h
Detected Declarations
struct smc_llc_hdrstruct smc_llc_msg_confirm_linkstruct smc_llc_msg_add_linkstruct smc_llc_msg_add_link_cont_rtstruct smc_llc_msg_add_link_v2_extstruct smc_llc_msg_req_add_link_v2struct smc_llc_msg_add_link_contstruct smc_llc_msg_del_linkstruct smc_llc_msg_test_linkstruct smc_rmb_rtokenstruct smc_llc_msg_confirm_rkeystruct smc_llc_msg_delete_rkeystruct smc_llc_msg_delete_rkey_v2struct smc_llc_qentrystruct smc_llc_tx_pendfunction smc_llc_flow_qentry_delfunction smc_llc_flow_qentry_setfunction smc_llc_flow_parallelfunction smc_llc_flow_startfunction smc_llc_flow_initiatefunction smc_llc_flow_stopfunction smc_llc_tx_handlerfunction smc_llc_add_pending_send_v2function smc_llc_init_msg_hdrfunction smc_llc_send_confirm_linkfunction smc_llc_send_confirm_rkeyfunction smc_llc_send_delete_rkeyfunction smc_llc_fill_ext_v2function smc_llc_send_add_linkfunction smc_llc_send_delete_linkfunction smc_llc_send_test_linkfunction smc_llc_send_messagefunction smc_llc_send_message_waitfunction smc_llc_alloc_alt_linkfunction smc_llc_add_link_contfunction smc_llc_cli_rkey_exchangefunction smc_llc_cli_add_link_rejectfunction smc_llc_cli_conf_linkfunction smc_llc_save_add_link_rkeysfunction smc_llc_save_add_link_infofunction smc_llc_cli_add_linkfunction smc_llc_send_request_add_linkfunction smc_llc_cli_add_link_invitefunction smc_llc_is_empty_llc_messagefunction smc_llc_is_local_add_linkfunction smc_llc_process_cli_add_linkfunction smc_llc_active_link_countfunction smc_llc_delete_asym_link
Annotated Snippet
struct smc_llc_hdr {
struct smc_wr_rx_hdr common;
union {
struct {
u8 length; /* 44 */
#if defined(__BIG_ENDIAN_BITFIELD)
u8 reserved:4,
add_link_rej_rsn:4;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
u8 add_link_rej_rsn:4,
reserved:4;
#endif
};
u16 length_v2; /* 44 - 8192*/
};
u8 flags;
} __packed; /* format defined in
* IBM Shared Memory Communications Version 2
* (https://www.ibm.com/support/pages/node/6326337)
*/
#define SMC_LLC_FLAG_NO_RMBE_EYEC 0x03
struct smc_llc_msg_confirm_link { /* type 0x01 */
struct smc_llc_hdr hd;
u8 sender_mac[ETH_ALEN];
u8 sender_gid[SMC_GID_SIZE];
u8 sender_qp_num[3];
u8 link_num;
u8 link_uid[SMC_LGR_ID_SIZE];
u8 max_links;
u8 max_conns;
u8 reserved[8];
};
#define SMC_LLC_FLAG_ADD_LNK_REJ 0x40
#define SMC_LLC_REJ_RSN_NO_ALT_PATH 1
struct smc_llc_msg_add_link { /* type 0x02 */
struct smc_llc_hdr hd;
u8 sender_mac[ETH_ALEN];
u8 reserved2[2];
u8 sender_gid[SMC_GID_SIZE];
u8 sender_qp_num[3];
u8 link_num;
#if defined(__BIG_ENDIAN_BITFIELD)
u8 reserved3 : 4,
qp_mtu : 4;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
u8 qp_mtu : 4,
reserved3 : 4;
#endif
u8 initial_psn[3];
u8 reserved[8];
};
struct smc_llc_msg_add_link_cont_rt {
__be32 rmb_key;
__be32 rmb_key_new;
__be64 rmb_vaddr_new;
};
struct smc_llc_msg_add_link_v2_ext {
#if defined(__BIG_ENDIAN_BITFIELD)
u8 v2_direct : 1,
reserved : 7;
#elif defined(__LITTLE_ENDIAN_BITFIELD)
u8 reserved : 7,
v2_direct : 1;
#endif
u8 reserved2;
u8 client_target_gid[SMC_GID_SIZE];
u8 reserved3[8];
u16 num_rkeys;
struct smc_llc_msg_add_link_cont_rt rt[];
} __packed; /* format defined in
* IBM Shared Memory Communications Version 2
* (https://www.ibm.com/support/pages/node/6326337)
*/
struct smc_llc_msg_req_add_link_v2 {
struct smc_llc_hdr hd;
u8 reserved[20];
u8 gid_cnt;
u8 reserved2[3];
u8 gid[][SMC_GID_SIZE];
};
#define SMC_LLC_RKEYS_PER_CONT_MSG 2
Annotation
- Immediate include surface: `net/tcp.h`, `rdma/ib_verbs.h`, `smc.h`, `smc_core.h`, `smc_clc.h`, `smc_llc.h`, `smc_pnet.h`.
- Detected declarations: `struct smc_llc_hdr`, `struct smc_llc_msg_confirm_link`, `struct smc_llc_msg_add_link`, `struct smc_llc_msg_add_link_cont_rt`, `struct smc_llc_msg_add_link_v2_ext`, `struct smc_llc_msg_req_add_link_v2`, `struct smc_llc_msg_add_link_cont`, `struct smc_llc_msg_del_link`, `struct smc_llc_msg_test_link`, `struct smc_rmb_rtoken`.
- Atlas domain: Networking Core / Sockets, Protocols, Packet Path, And Network Policy.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.