cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

smc_diag.h (2850B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2#ifndef _UAPI_SMC_DIAG_H_
      3#define _UAPI_SMC_DIAG_H_
      4
      5#include <linux/types.h>
      6#include <linux/inet_diag.h>
      7#include <rdma/ib_user_verbs.h>
      8
      9/* Request structure */
     10struct smc_diag_req {
     11	__u8	diag_family;
     12	__u8	pad[2];
     13	__u8	diag_ext;		/* Query extended information */
     14	struct inet_diag_sockid	id;
     15};
     16
     17/* Base info structure. It contains socket identity (addrs/ports/cookie) based
     18 * on the internal clcsock, and more SMC-related socket data
     19 */
     20struct smc_diag_msg {
     21	__u8		diag_family;
     22	__u8		diag_state;
     23	union {
     24		__u8	diag_mode;
     25		__u8	diag_fallback; /* the old name of the field */
     26	};
     27	__u8		diag_shutdown;
     28	struct inet_diag_sockid id;
     29
     30	__u32		diag_uid;
     31	__aligned_u64	diag_inode;
     32};
     33
     34/* Mode of a connection */
     35enum {
     36	SMC_DIAG_MODE_SMCR,
     37	SMC_DIAG_MODE_FALLBACK_TCP,
     38	SMC_DIAG_MODE_SMCD,
     39};
     40
     41/* Extensions */
     42
     43enum {
     44	SMC_DIAG_NONE,
     45	SMC_DIAG_CONNINFO,
     46	SMC_DIAG_LGRINFO,
     47	SMC_DIAG_SHUTDOWN,
     48	SMC_DIAG_DMBINFO,
     49	SMC_DIAG_FALLBACK,
     50	__SMC_DIAG_MAX,
     51};
     52
     53#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1)
     54
     55/* SMC_DIAG_CONNINFO */
     56
     57struct smc_diag_cursor {
     58	__u16	reserved;
     59	__u16	wrap;
     60	__u32	count;
     61};
     62
     63struct smc_diag_conninfo {
     64	__u32			token;		/* unique connection id */
     65	__u32			sndbuf_size;	/* size of send buffer */
     66	__u32			rmbe_size;	/* size of RMB element */
     67	__u32			peer_rmbe_size;	/* size of peer RMB element */
     68	/* local RMB element cursors */
     69	struct smc_diag_cursor	rx_prod;	/* received producer cursor */
     70	struct smc_diag_cursor	rx_cons;	/* received consumer cursor */
     71	/* peer RMB element cursors */
     72	struct smc_diag_cursor	tx_prod;	/* sent producer cursor */
     73	struct smc_diag_cursor	tx_cons;	/* sent consumer cursor */
     74	__u8			rx_prod_flags;	/* received producer flags */
     75	__u8			rx_conn_state_flags; /* recvd connection flags*/
     76	__u8			tx_prod_flags;	/* sent producer flags */
     77	__u8			tx_conn_state_flags; /* sent connection flags*/
     78	/* send buffer cursors */
     79	struct smc_diag_cursor	tx_prep;	/* prepared to be sent cursor */
     80	struct smc_diag_cursor	tx_sent;	/* sent cursor */
     81	struct smc_diag_cursor	tx_fin;		/* confirmed sent cursor */
     82};
     83
     84/* SMC_DIAG_LINKINFO */
     85
     86struct smc_diag_linkinfo {
     87	__u8 link_id;			/* link identifier */
     88	__u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
     89	__u8 ibport;			/* RDMA device port number */
     90	__u8 gid[40];			/* local GID */
     91	__u8 peer_gid[40];		/* peer GID */
     92};
     93
     94struct smc_diag_lgrinfo {
     95	struct smc_diag_linkinfo	lnk[1];
     96	__u8				role;
     97};
     98
     99struct smc_diag_fallback {
    100	__u32 reason;
    101	__u32 peer_diagnosis;
    102};
    103
    104struct smcd_diag_dmbinfo {		/* SMC-D Socket internals */
    105	__u32		linkid;		/* Link identifier */
    106	__aligned_u64	peer_gid;	/* Peer GID */
    107	__aligned_u64	my_gid;		/* My GID */
    108	__aligned_u64	token;		/* Token of DMB */
    109	__aligned_u64	peer_token;	/* Token of remote DMBE */
    110};
    111
    112#endif /* _UAPI_SMC_DIAG_H_ */