brintos

brintos / linux-shallow public Read only

0
0
Text · 4.5 KiB · fc16b82 Raw
159 lines · c
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */2/*3 * Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved.4 * Copyright (c) 2004 Infinicon Corporation.  All rights reserved.5 * Copyright (c) 2004 Intel Corporation.  All rights reserved.6 * Copyright (c) 2004 Topspin Corporation.  All rights reserved.7 * Copyright (c) 2004 Voltaire Corporation.  All rights reserved.8 */9 10#ifndef IB_SMI_H11#define IB_SMI_H12 13#include <rdma/ib_mad.h>14 15#define IB_SMP_DATA_SIZE			6416#define IB_SMP_MAX_PATH_HOPS			6417 18struct ib_smp {19	u8	base_version;20	u8	mgmt_class;21	u8	class_version;22	u8	method;23	__be16	status;24	u8	hop_ptr;25	u8	hop_cnt;26	__be64	tid;27	__be16	attr_id;28	__be16	resv;29	__be32	attr_mod;30	__be64	mkey;31	__be16	dr_slid;32	__be16	dr_dlid;33	u8	reserved[28];34	u8	data[IB_SMP_DATA_SIZE];35	u8	initial_path[IB_SMP_MAX_PATH_HOPS];36	u8	return_path[IB_SMP_MAX_PATH_HOPS];37} __packed;38 39#define IB_SMP_DIRECTION			cpu_to_be16(0x8000)40 41/* Subnet management attributes */42#define IB_SMP_ATTR_NOTICE			cpu_to_be16(0x0002)43#define IB_SMP_ATTR_NODE_DESC			cpu_to_be16(0x0010)44#define IB_SMP_ATTR_NODE_INFO			cpu_to_be16(0x0011)45#define IB_SMP_ATTR_SWITCH_INFO			cpu_to_be16(0x0012)46#define IB_SMP_ATTR_GUID_INFO			cpu_to_be16(0x0014)47#define IB_SMP_ATTR_PORT_INFO			cpu_to_be16(0x0015)48#define IB_SMP_ATTR_PKEY_TABLE			cpu_to_be16(0x0016)49#define IB_SMP_ATTR_SL_TO_VL_TABLE		cpu_to_be16(0x0017)50#define IB_SMP_ATTR_VL_ARB_TABLE		cpu_to_be16(0x0018)51#define IB_SMP_ATTR_LINEAR_FORWARD_TABLE	cpu_to_be16(0x0019)52#define IB_SMP_ATTR_RANDOM_FORWARD_TABLE	cpu_to_be16(0x001A)53#define IB_SMP_ATTR_MCAST_FORWARD_TABLE		cpu_to_be16(0x001B)54#define IB_SMP_ATTR_SM_INFO			cpu_to_be16(0x0020)55#define IB_SMP_ATTR_VENDOR_DIAG			cpu_to_be16(0x0030)56#define IB_SMP_ATTR_LED_INFO			cpu_to_be16(0x0031)57#define IB_SMP_ATTR_VENDOR_MASK			cpu_to_be16(0xFF00)58 59struct ib_port_info {60	__be64 mkey;61	__be64 gid_prefix;62	__be16 lid;63	__be16 sm_lid;64	__be32 cap_mask;65	__be16 diag_code;66	__be16 mkey_lease_period;67	u8 local_port_num;68	u8 link_width_enabled;69	u8 link_width_supported;70	u8 link_width_active;71	u8 linkspeed_portstate;			/* 4 bits, 4 bits */72	u8 portphysstate_linkdown;		/* 4 bits, 4 bits */73	u8 mkeyprot_resv_lmc;			/* 2 bits, 3, 3 */74	u8 linkspeedactive_enabled;		/* 4 bits, 4 bits */75	u8 neighbormtu_mastersmsl;		/* 4 bits, 4 bits */76	u8 vlcap_inittype;			/* 4 bits, 4 bits */77	u8 vl_high_limit;78	u8 vl_arb_high_cap;79	u8 vl_arb_low_cap;80	u8 inittypereply_mtucap;		/* 4 bits, 4 bits */81	u8 vlstallcnt_hoqlife;			/* 3 bits, 5 bits */82	u8 operationalvl_pei_peo_fpi_fpo;	/* 4 bits, 1, 1, 1, 1 */83	__be16 mkey_violations;84	__be16 pkey_violations;85	__be16 qkey_violations;86	u8 guid_cap;87	u8 clientrereg_resv_subnetto;		/* 1 bit, 2 bits, 5 */88	u8 resv_resptimevalue;			/* 3 bits, 5 bits */89	u8 localphyerrors_overrunerrors;	/* 4 bits, 4 bits */90	__be16 max_credit_hint;91	u8 resv;92	u8 link_roundtrip_latency[3];93};94 95struct ib_node_info {96	u8 base_version;97	u8 class_version;98	u8 node_type;99	u8 num_ports;100	__be64 sys_guid;101	__be64 node_guid;102	__be64 port_guid;103	__be16 partition_cap;104	__be16 device_id;105	__be32 revision;106	u8 local_port_num;107	u8 vendor_id[3];108} __packed;109 110struct ib_vl_weight_elem {111	u8      vl;     /* IB: VL is low 4 bits, upper 4 bits reserved */112                        /* OPA: VL is low 5 bits, upper 3 bits reserved */113	u8      weight;114};115 116static inline u8117ib_get_smp_direction(struct ib_smp *smp)118{119	return ((smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION);120}121 122/*123 * SM Trap/Notice numbers124 */125#define IB_NOTICE_TRAP_LLI_THRESH	cpu_to_be16(129)126#define IB_NOTICE_TRAP_EBO_THRESH	cpu_to_be16(130)127#define IB_NOTICE_TRAP_FLOW_UPDATE	cpu_to_be16(131)128#define IB_NOTICE_TRAP_CAP_MASK_CHG	cpu_to_be16(144)129#define IB_NOTICE_TRAP_SYS_GUID_CHG	cpu_to_be16(145)130#define IB_NOTICE_TRAP_BAD_MKEY		cpu_to_be16(256)131#define IB_NOTICE_TRAP_BAD_PKEY		cpu_to_be16(257)132#define IB_NOTICE_TRAP_BAD_QKEY		cpu_to_be16(258)133 134/*135 * Other local changes flags (trap 144).136 */137#define IB_NOTICE_TRAP_LSE_CHG		0x04	/* Link Speed Enable changed */138#define IB_NOTICE_TRAP_LWE_CHG		0x02	/* Link Width Enable changed */139#define IB_NOTICE_TRAP_NODE_DESC_CHG	0x01140 141/*142 * M_Key volation flags in dr_trunc_hop (trap 256).143 */144#define IB_NOTICE_TRAP_DR_NOTICE	0x80145#define IB_NOTICE_TRAP_DR_TRUNC		0x40146 147/**148 * ib_init_query_mad - Initialize query MAD.149 * @mad: MAD to initialize.150 */151static inline void ib_init_query_mad(struct ib_smp *mad)152{153	mad->base_version = IB_MGMT_BASE_VERSION;154	mad->mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;155	mad->class_version = 1;156	mad->method = IB_MGMT_METHOD_GET;157}158#endif /* IB_SMI_H */159