#ifndef STRACE_LINUX_SMC_DIAG_H #define STRACE_LINUX_SMC_DIAG_H #include /* Request structure */ struct smc_diag_req { uint8_t diag_family; uint8_t pad[2]; uint8_t diag_ext; /* Query extended information */ struct inet_diag_sockid id; }; struct smc_diag_msg { uint8_t diag_family; uint8_t diag_state; uint8_t diag_fallback; uint8_t diag_shutdown; struct inet_diag_sockid id; uint32_t diag_uid; uint64_t diag_inode; }; /* Extensions */ enum { SMC_DIAG_NONE, SMC_DIAG_CONNINFO, SMC_DIAG_LGRINFO, SMC_DIAG_SHUTDOWN, }; /* SMC_DIAG_CONNINFO */ struct smc_diag_cursor { uint16_t reserved; uint16_t wrap; uint32_t count; }; struct smc_diag_conninfo { uint32_t token; uint32_t sndbuf_size; uint32_t rmbe_size; uint32_t peer_rmbe_size; struct smc_diag_cursor rx_prod; struct smc_diag_cursor rx_cons; struct smc_diag_cursor tx_prod; struct smc_diag_cursor tx_cons; uint8_t rx_prod_flags; uint8_t rx_conn_state_flags; uint8_t tx_prod_flags; uint8_t tx_conn_state_flags; struct smc_diag_cursor tx_prep; struct smc_diag_cursor tx_sent; struct smc_diag_cursor tx_fin; }; /* SMC_DIAG_LINKINFO */ struct smc_diag_linkinfo { uint8_t link_id; uint8_t ibname[64]; /* IB_DEVICE_NAME_MAX */ uint8_t ibport; uint8_t gid[40]; uint8_t peer_gid[40]; }; struct smc_diag_lgrinfo { struct smc_diag_linkinfo lnk[1]; uint8_t role; }; #endif /* !STRACE_LINUX_SMC_DIAG_H */