Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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