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.h (8493B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2/*
      3 *  Shared Memory Communications over RDMA (SMC-R) and RoCE
      4 *
      5 *  Definitions for generic netlink based configuration of an SMC-R PNET table
      6 *
      7 *  Copyright IBM Corp. 2016
      8 *
      9 *  Author(s):  Thomas Richter <tmricht@linux.vnet.ibm.com>
     10 */
     11
     12#ifndef _UAPI_LINUX_SMC_H_
     13#define _UAPI_LINUX_SMC_H_
     14
     15/* Netlink SMC_PNETID attributes */
     16enum {
     17	SMC_PNETID_UNSPEC,
     18	SMC_PNETID_NAME,
     19	SMC_PNETID_ETHNAME,
     20	SMC_PNETID_IBNAME,
     21	SMC_PNETID_IBPORT,
     22	__SMC_PNETID_MAX,
     23	SMC_PNETID_MAX = __SMC_PNETID_MAX - 1
     24};
     25
     26enum {				/* SMC PNET Table commands */
     27	SMC_PNETID_GET = 1,
     28	SMC_PNETID_ADD,
     29	SMC_PNETID_DEL,
     30	SMC_PNETID_FLUSH
     31};
     32
     33#define SMCR_GENL_FAMILY_NAME		"SMC_PNETID"
     34#define SMCR_GENL_FAMILY_VERSION	1
     35
     36/* gennetlink interface to access non-socket information from SMC module */
     37#define SMC_GENL_FAMILY_NAME		"SMC_GEN_NETLINK"
     38#define SMC_GENL_FAMILY_VERSION		1
     39
     40#define SMC_PCI_ID_STR_LEN		16 /* Max length of pci id string */
     41#define SMC_MAX_HOSTNAME_LEN		32 /* Max length of the hostname */
     42#define SMC_MAX_UEID			4  /* Max number of user EIDs */
     43#define SMC_MAX_EID_LEN			32 /* Max length of an EID */
     44
     45/* SMC_GENL_FAMILY commands */
     46enum {
     47	SMC_NETLINK_GET_SYS_INFO = 1,
     48	SMC_NETLINK_GET_LGR_SMCR,
     49	SMC_NETLINK_GET_LINK_SMCR,
     50	SMC_NETLINK_GET_LGR_SMCD,
     51	SMC_NETLINK_GET_DEV_SMCD,
     52	SMC_NETLINK_GET_DEV_SMCR,
     53	SMC_NETLINK_GET_STATS,
     54	SMC_NETLINK_GET_FBACK_STATS,
     55	SMC_NETLINK_DUMP_UEID,
     56	SMC_NETLINK_ADD_UEID,
     57	SMC_NETLINK_REMOVE_UEID,
     58	SMC_NETLINK_FLUSH_UEID,
     59	SMC_NETLINK_DUMP_SEID,
     60	SMC_NETLINK_ENABLE_SEID,
     61	SMC_NETLINK_DISABLE_SEID,
     62	SMC_NETLINK_DUMP_HS_LIMITATION,
     63	SMC_NETLINK_ENABLE_HS_LIMITATION,
     64	SMC_NETLINK_DISABLE_HS_LIMITATION,
     65};
     66
     67/* SMC_GENL_FAMILY top level attributes */
     68enum {
     69	SMC_GEN_UNSPEC,
     70	SMC_GEN_SYS_INFO,		/* nest */
     71	SMC_GEN_LGR_SMCR,		/* nest */
     72	SMC_GEN_LINK_SMCR,		/* nest */
     73	SMC_GEN_LGR_SMCD,		/* nest */
     74	SMC_GEN_DEV_SMCD,		/* nest */
     75	SMC_GEN_DEV_SMCR,		/* nest */
     76	SMC_GEN_STATS,			/* nest */
     77	SMC_GEN_FBACK_STATS,		/* nest */
     78	__SMC_GEN_MAX,
     79	SMC_GEN_MAX = __SMC_GEN_MAX - 1
     80};
     81
     82/* SMC_GEN_SYS_INFO attributes */
     83enum {
     84	SMC_NLA_SYS_UNSPEC,
     85	SMC_NLA_SYS_VER,		/* u8 */
     86	SMC_NLA_SYS_REL,		/* u8 */
     87	SMC_NLA_SYS_IS_ISM_V2,		/* u8 */
     88	SMC_NLA_SYS_LOCAL_HOST,		/* string */
     89	SMC_NLA_SYS_SEID,		/* string */
     90	SMC_NLA_SYS_IS_SMCR_V2,		/* u8 */
     91	__SMC_NLA_SYS_MAX,
     92	SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1
     93};
     94
     95/* SMC_NLA_LGR_D_V2_COMMON and SMC_NLA_LGR_R_V2_COMMON nested attributes */
     96enum {
     97	SMC_NLA_LGR_V2_VER,		/* u8 */
     98	SMC_NLA_LGR_V2_REL,		/* u8 */
     99	SMC_NLA_LGR_V2_OS,		/* u8 */
    100	SMC_NLA_LGR_V2_NEG_EID,		/* string */
    101	SMC_NLA_LGR_V2_PEER_HOST,	/* string */
    102	__SMC_NLA_LGR_V2_MAX,
    103	SMC_NLA_LGR_V2_MAX = __SMC_NLA_LGR_V2_MAX - 1
    104};
    105
    106/* SMC_NLA_LGR_R_V2 nested attributes */
    107enum {
    108	SMC_NLA_LGR_R_V2_UNSPEC,
    109	SMC_NLA_LGR_R_V2_DIRECT,	/* u8 */
    110	__SMC_NLA_LGR_R_V2_MAX,
    111	SMC_NLA_LGR_R_V2_MAX = __SMC_NLA_LGR_R_V2_MAX - 1
    112};
    113
    114/* SMC_GEN_LGR_SMCR attributes */
    115enum {
    116	SMC_NLA_LGR_R_UNSPEC,
    117	SMC_NLA_LGR_R_ID,		/* u32 */
    118	SMC_NLA_LGR_R_ROLE,		/* u8 */
    119	SMC_NLA_LGR_R_TYPE,		/* u8 */
    120	SMC_NLA_LGR_R_PNETID,		/* string */
    121	SMC_NLA_LGR_R_VLAN_ID,		/* u8 */
    122	SMC_NLA_LGR_R_CONNS_NUM,	/* u32 */
    123	SMC_NLA_LGR_R_V2_COMMON,	/* nest */
    124	SMC_NLA_LGR_R_V2,		/* nest */
    125	SMC_NLA_LGR_R_NET_COOKIE,	/* u64 */
    126	SMC_NLA_LGR_R_PAD,		/* flag */
    127	__SMC_NLA_LGR_R_MAX,
    128	SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
    129};
    130
    131/* SMC_GEN_LINK_SMCR attributes */
    132enum {
    133	SMC_NLA_LINK_UNSPEC,
    134	SMC_NLA_LINK_ID,		/* u8 */
    135	SMC_NLA_LINK_IB_DEV,		/* string */
    136	SMC_NLA_LINK_IB_PORT,		/* u8 */
    137	SMC_NLA_LINK_GID,		/* string */
    138	SMC_NLA_LINK_PEER_GID,		/* string */
    139	SMC_NLA_LINK_CONN_CNT,		/* u32 */
    140	SMC_NLA_LINK_NET_DEV,		/* u32 */
    141	SMC_NLA_LINK_UID,		/* u32 */
    142	SMC_NLA_LINK_PEER_UID,		/* u32 */
    143	SMC_NLA_LINK_STATE,		/* u32 */
    144	__SMC_NLA_LINK_MAX,
    145	SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1
    146};
    147
    148/* SMC_GEN_LGR_SMCD attributes */
    149enum {
    150	SMC_NLA_LGR_D_UNSPEC,
    151	SMC_NLA_LGR_D_ID,		/* u32 */
    152	SMC_NLA_LGR_D_GID,		/* u64 */
    153	SMC_NLA_LGR_D_PEER_GID,		/* u64 */
    154	SMC_NLA_LGR_D_VLAN_ID,		/* u8 */
    155	SMC_NLA_LGR_D_CONNS_NUM,	/* u32 */
    156	SMC_NLA_LGR_D_PNETID,		/* string */
    157	SMC_NLA_LGR_D_CHID,		/* u16 */
    158	SMC_NLA_LGR_D_PAD,		/* flag */
    159	SMC_NLA_LGR_D_V2_COMMON,	/* nest */
    160	__SMC_NLA_LGR_D_MAX,
    161	SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1
    162};
    163
    164/* SMC_NLA_DEV_PORT nested attributes */
    165enum {
    166	SMC_NLA_DEV_PORT_UNSPEC,
    167	SMC_NLA_DEV_PORT_PNET_USR,	/* u8 */
    168	SMC_NLA_DEV_PORT_PNETID,	/* string */
    169	SMC_NLA_DEV_PORT_NETDEV,	/* u32 */
    170	SMC_NLA_DEV_PORT_STATE,		/* u8 */
    171	SMC_NLA_DEV_PORT_VALID,		/* u8 */
    172	SMC_NLA_DEV_PORT_LNK_CNT,	/* u32 */
    173	__SMC_NLA_DEV_PORT_MAX,
    174	SMC_NLA_DEV_PORT_MAX = __SMC_NLA_DEV_PORT_MAX - 1
    175};
    176
    177/* SMC_GEN_DEV_SMCD and SMC_GEN_DEV_SMCR attributes */
    178enum {
    179	SMC_NLA_DEV_UNSPEC,
    180	SMC_NLA_DEV_USE_CNT,		/* u32 */
    181	SMC_NLA_DEV_IS_CRIT,		/* u8 */
    182	SMC_NLA_DEV_PCI_FID,		/* u32 */
    183	SMC_NLA_DEV_PCI_CHID,		/* u16 */
    184	SMC_NLA_DEV_PCI_VENDOR,		/* u16 */
    185	SMC_NLA_DEV_PCI_DEVICE,		/* u16 */
    186	SMC_NLA_DEV_PCI_ID,		/* string */
    187	SMC_NLA_DEV_PORT,		/* nest */
    188	SMC_NLA_DEV_PORT2,		/* nest */
    189	SMC_NLA_DEV_IB_NAME,		/* string */
    190	__SMC_NLA_DEV_MAX,
    191	SMC_NLA_DEV_MAX = __SMC_NLA_DEV_MAX - 1
    192};
    193
    194/* SMC_NLA_STATS_T_TX(RX)_RMB_SIZE nested attributes */
    195/* SMC_NLA_STATS_TX(RX)PLOAD_SIZE nested attributes */
    196enum {
    197	SMC_NLA_STATS_PLOAD_PAD,
    198	SMC_NLA_STATS_PLOAD_8K,		/* u64 */
    199	SMC_NLA_STATS_PLOAD_16K,	/* u64 */
    200	SMC_NLA_STATS_PLOAD_32K,	/* u64 */
    201	SMC_NLA_STATS_PLOAD_64K,	/* u64 */
    202	SMC_NLA_STATS_PLOAD_128K,	/* u64 */
    203	SMC_NLA_STATS_PLOAD_256K,	/* u64 */
    204	SMC_NLA_STATS_PLOAD_512K,	/* u64 */
    205	SMC_NLA_STATS_PLOAD_1024K,	/* u64 */
    206	SMC_NLA_STATS_PLOAD_G_1024K,	/* u64 */
    207	__SMC_NLA_STATS_PLOAD_MAX,
    208	SMC_NLA_STATS_PLOAD_MAX = __SMC_NLA_STATS_PLOAD_MAX - 1
    209};
    210
    211/* SMC_NLA_STATS_T_TX(RX)_RMB_STATS nested attributes */
    212enum {
    213	SMC_NLA_STATS_RMB_PAD,
    214	SMC_NLA_STATS_RMB_SIZE_SM_PEER_CNT,	/* u64 */
    215	SMC_NLA_STATS_RMB_SIZE_SM_CNT,		/* u64 */
    216	SMC_NLA_STATS_RMB_FULL_PEER_CNT,	/* u64 */
    217	SMC_NLA_STATS_RMB_FULL_CNT,		/* u64 */
    218	SMC_NLA_STATS_RMB_REUSE_CNT,		/* u64 */
    219	SMC_NLA_STATS_RMB_ALLOC_CNT,		/* u64 */
    220	SMC_NLA_STATS_RMB_DGRADE_CNT,		/* u64 */
    221	__SMC_NLA_STATS_RMB_MAX,
    222	SMC_NLA_STATS_RMB_MAX = __SMC_NLA_STATS_RMB_MAX - 1
    223};
    224
    225/* SMC_NLA_STATS_SMCD_TECH and _SMCR_TECH nested attributes */
    226enum {
    227	SMC_NLA_STATS_T_PAD,
    228	SMC_NLA_STATS_T_TX_RMB_SIZE,	/* nest */
    229	SMC_NLA_STATS_T_RX_RMB_SIZE,	/* nest */
    230	SMC_NLA_STATS_T_TXPLOAD_SIZE,	/* nest */
    231	SMC_NLA_STATS_T_RXPLOAD_SIZE,	/* nest */
    232	SMC_NLA_STATS_T_TX_RMB_STATS,	/* nest */
    233	SMC_NLA_STATS_T_RX_RMB_STATS,	/* nest */
    234	SMC_NLA_STATS_T_CLNT_V1_SUCC,	/* u64 */
    235	SMC_NLA_STATS_T_CLNT_V2_SUCC,	/* u64 */
    236	SMC_NLA_STATS_T_SRV_V1_SUCC,	/* u64 */
    237	SMC_NLA_STATS_T_SRV_V2_SUCC,	/* u64 */
    238	SMC_NLA_STATS_T_SENDPAGE_CNT,	/* u64 */
    239	SMC_NLA_STATS_T_SPLICE_CNT,	/* u64 */
    240	SMC_NLA_STATS_T_CORK_CNT,	/* u64 */
    241	SMC_NLA_STATS_T_NDLY_CNT,	/* u64 */
    242	SMC_NLA_STATS_T_URG_DATA_CNT,	/* u64 */
    243	SMC_NLA_STATS_T_RX_BYTES,	/* u64 */
    244	SMC_NLA_STATS_T_TX_BYTES,	/* u64 */
    245	SMC_NLA_STATS_T_RX_CNT,		/* u64 */
    246	SMC_NLA_STATS_T_TX_CNT,		/* u64 */
    247	__SMC_NLA_STATS_T_MAX,
    248	SMC_NLA_STATS_T_MAX = __SMC_NLA_STATS_T_MAX - 1
    249};
    250
    251/* SMC_GEN_STATS attributes */
    252enum {
    253	SMC_NLA_STATS_PAD,
    254	SMC_NLA_STATS_SMCD_TECH,	/* nest */
    255	SMC_NLA_STATS_SMCR_TECH,	/* nest */
    256	SMC_NLA_STATS_CLNT_HS_ERR_CNT,	/* u64 */
    257	SMC_NLA_STATS_SRV_HS_ERR_CNT,	/* u64 */
    258	__SMC_NLA_STATS_MAX,
    259	SMC_NLA_STATS_MAX = __SMC_NLA_STATS_MAX - 1
    260};
    261
    262/* SMC_GEN_FBACK_STATS attributes */
    263enum {
    264	SMC_NLA_FBACK_STATS_PAD,
    265	SMC_NLA_FBACK_STATS_TYPE,	/* u8 */
    266	SMC_NLA_FBACK_STATS_SRV_CNT,	/* u64 */
    267	SMC_NLA_FBACK_STATS_CLNT_CNT,	/* u64 */
    268	SMC_NLA_FBACK_STATS_RSN_CODE,	/* u32 */
    269	SMC_NLA_FBACK_STATS_RSN_CNT,	/* u16 */
    270	__SMC_NLA_FBACK_STATS_MAX,
    271	SMC_NLA_FBACK_STATS_MAX = __SMC_NLA_FBACK_STATS_MAX - 1
    272};
    273
    274/* SMC_NETLINK_UEID attributes */
    275enum {
    276	SMC_NLA_EID_TABLE_UNSPEC,
    277	SMC_NLA_EID_TABLE_ENTRY,	/* string */
    278	__SMC_NLA_EID_TABLE_MAX,
    279	SMC_NLA_EID_TABLE_MAX = __SMC_NLA_EID_TABLE_MAX - 1
    280};
    281
    282/* SMC_NETLINK_SEID attributes */
    283enum {
    284	SMC_NLA_SEID_UNSPEC,
    285	SMC_NLA_SEID_ENTRY,	/* string */
    286	SMC_NLA_SEID_ENABLED,	/* u8 */
    287	__SMC_NLA_SEID_TABLE_MAX,
    288	SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
    289};
    290
    291/* SMC_NETLINK_HS_LIMITATION attributes */
    292enum {
    293	SMC_NLA_HS_LIMITATION_UNSPEC,
    294	SMC_NLA_HS_LIMITATION_ENABLED,	/* u8 */
    295	__SMC_NLA_HS_LIMITATION_MAX,
    296	SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
    297};
    298
    299/* SMC socket options */
    300#define SMC_LIMIT_HS 1	/* constraint on smc handshake */
    301
    302#endif /* _UAPI_LINUX_SMC_H */