1d6b92ffaSHans Petter Selasky /* 2d6b92ffaSHans Petter Selasky * Copyright (c) 2004-2014 Mellanox Technologies Ltd. All rights reserved. 3d6b92ffaSHans Petter Selasky * Copyright (c) 2004 Infinicon Corporation. All rights reserved. 4d6b92ffaSHans Petter Selasky * Copyright (c) 2004 Intel Corporation. All rights reserved. 5d6b92ffaSHans Petter Selasky * Copyright (c) 2004 Topspin Corporation. All rights reserved. 6d6b92ffaSHans Petter Selasky * Copyright (c) 2004 Voltaire Corporation. All rights reserved. 7d6b92ffaSHans Petter Selasky * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved. 8d6b92ffaSHans Petter Selasky * 9d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two 10d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 11d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file 12d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the 13d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below: 14d6b92ffaSHans Petter Selasky * 15d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or 16d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following 17d6b92ffaSHans Petter Selasky * conditions are met: 18d6b92ffaSHans Petter Selasky * 19d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above 20d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 21d6b92ffaSHans Petter Selasky * disclaimer. 22d6b92ffaSHans Petter Selasky * 23d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above 24d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 25d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials 26d6b92ffaSHans Petter Selasky * provided with the distribution. 27d6b92ffaSHans Petter Selasky * 28d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 29d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 30d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 31d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 32d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 33d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 34d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 35d6b92ffaSHans Petter Selasky * SOFTWARE. 36d6b92ffaSHans Petter Selasky */ 37d6b92ffaSHans Petter Selasky 38d6b92ffaSHans Petter Selasky #ifndef _UMAD_SM_H 39d6b92ffaSHans Petter Selasky #define _UMAD_SM_H 40d6b92ffaSHans Petter Selasky 41d6b92ffaSHans Petter Selasky #include <infiniband/umad_types.h> 42d6b92ffaSHans Petter Selasky 43d6b92ffaSHans Petter Selasky #ifdef __cplusplus 44d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS extern "C" { 45d6b92ffaSHans Petter Selasky # define END_C_DECLS } 46d6b92ffaSHans Petter Selasky #else /* !__cplusplus */ 47d6b92ffaSHans Petter Selasky # define BEGIN_C_DECLS 48d6b92ffaSHans Petter Selasky # define END_C_DECLS 49d6b92ffaSHans Petter Selasky #endif /* __cplusplus */ 50d6b92ffaSHans Petter Selasky 51d6b92ffaSHans Petter Selasky BEGIN_C_DECLS 52d6b92ffaSHans Petter Selasky 53d6b92ffaSHans Petter Selasky enum { 54d6b92ffaSHans Petter Selasky UMAD_SMP_DIRECTION = 0x8000, 55d6b92ffaSHans Petter Selasky }; 56d6b92ffaSHans Petter Selasky 57d6b92ffaSHans Petter Selasky /* Subnet management attributes */ 58d6b92ffaSHans Petter Selasky enum { 59d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_NODE_DESC = 0x0010, 60d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_NODE_INFO = 0x0011, 61d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_SWITCH_INFO = 0x0012, 62d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_GUID_INFO = 0x0014, 63d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_PORT_INFO = 0x0015, 64d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_PKEY_TABLE = 0x0016, 65d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_SLVL_TABLE = 0x0017, 66d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_VL_ARB_TABLE = 0x0018, 67d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_LINEAR_FT = 0x0019, 68d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_RANDOM_FT = 0x001A, 69d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_MCAST_FT = 0x001B, 70d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_LINK_SPD_WIDTH_TABLE = 0x001C, 71d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_VENDOR_MADS_TABLE = 0x001D, 72d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_HIERARCHY_INFO = 0x001E, 73d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_SM_INFO = 0x0020, 74d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_VENDOR_DIAG = 0x0030, 75d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_LED_INFO = 0x0031, 76d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_CABLE_INFO = 0x0032, 77d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_PORT_INFO_EXT = 0x0033, 78d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_VENDOR_MASK = 0xFF00, 79d6b92ffaSHans Petter Selasky UMAD_SM_ATTR_MLNX_EXT_PORT_INFO = 0xFF90 80d6b92ffaSHans Petter Selasky }; 81d6b92ffaSHans Petter Selasky 82d6b92ffaSHans Petter Selasky enum { 83d6b92ffaSHans Petter Selasky UMAD_SM_GID_IN_SERVICE_TRAP = 64, 84d6b92ffaSHans Petter Selasky UMAD_SM_GID_OUT_OF_SERVICE_TRAP = 65, 85d6b92ffaSHans Petter Selasky UMAD_SM_MGID_CREATED_TRAP = 66, 86d6b92ffaSHans Petter Selasky UMAD_SM_MGID_DESTROYED_TRAP = 67, 87d6b92ffaSHans Petter Selasky UMAD_SM_UNPATH_TRAP = 68, 88d6b92ffaSHans Petter Selasky UMAD_SM_REPATH_TRAP = 69, 89d6b92ffaSHans Petter Selasky UMAD_SM_LINK_STATE_CHANGED_TRAP = 128, 90d6b92ffaSHans Petter Selasky UMAD_SM_LINK_INTEGRITY_THRESHOLD_TRAP = 129, 91d6b92ffaSHans Petter Selasky UMAD_SM_BUFFER_OVERRUN_THRESHOLD_TRAP = 130, 92d6b92ffaSHans Petter Selasky UMAD_SM_WATCHDOG_TIMER_EXPIRED_TRAP = 131, 93d6b92ffaSHans Petter Selasky UMAD_SM_LOCAL_CHANGES_TRAP = 144, 94d6b92ffaSHans Petter Selasky UMAD_SM_SYS_IMG_GUID_CHANGED_TRAP = 145, 95d6b92ffaSHans Petter Selasky UMAD_SM_BAD_MKEY_TRAP = 256, 96d6b92ffaSHans Petter Selasky UMAD_SM_BAD_PKEY_TRAP = 257, 97d6b92ffaSHans Petter Selasky UMAD_SM_BAD_QKEY_TRAP = 258, 98d6b92ffaSHans Petter Selasky UMAD_SM_BAD_SWITCH_PKEY_TRAP = 259 99d6b92ffaSHans Petter Selasky }; 100d6b92ffaSHans Petter Selasky 101d6b92ffaSHans Petter Selasky enum { 102d6b92ffaSHans Petter Selasky UMAD_LEN_SMP_DATA = 64, 103d6b92ffaSHans Petter Selasky UMAD_SMP_MAX_HOPS = 64 104d6b92ffaSHans Petter Selasky }; 105d6b92ffaSHans Petter Selasky 106d6b92ffaSHans Petter Selasky struct umad_smp { 107d6b92ffaSHans Petter Selasky uint8_t base_version; 108d6b92ffaSHans Petter Selasky uint8_t mgmt_class; 109d6b92ffaSHans Petter Selasky uint8_t class_version; 110d6b92ffaSHans Petter Selasky uint8_t method; 111d6b92ffaSHans Petter Selasky __be16 status; 112d6b92ffaSHans Petter Selasky uint8_t hop_ptr; 113d6b92ffaSHans Petter Selasky uint8_t hop_cnt; 114d6b92ffaSHans Petter Selasky __be64 tid; 115d6b92ffaSHans Petter Selasky __be16 attr_id; 116d6b92ffaSHans Petter Selasky __be16 resv; 117d6b92ffaSHans Petter Selasky __be32 attr_mod; 118d6b92ffaSHans Petter Selasky __be64 mkey; 119d6b92ffaSHans Petter Selasky __be16 dr_slid; 120d6b92ffaSHans Petter Selasky __be16 dr_dlid; 121d6b92ffaSHans Petter Selasky uint8_t reserved[28]; 122d6b92ffaSHans Petter Selasky uint8_t data[UMAD_LEN_SMP_DATA]; 123d6b92ffaSHans Petter Selasky uint8_t initial_path[UMAD_SMP_MAX_HOPS]; 124d6b92ffaSHans Petter Selasky uint8_t return_path[UMAD_SMP_MAX_HOPS]; 125d6b92ffaSHans Petter Selasky }; 126d6b92ffaSHans Petter Selasky 127d6b92ffaSHans Petter Selasky END_C_DECLS 128d6b92ffaSHans Petter Selasky #endif /* _UMAD_SM_H */ 129