|
Packit |
13e616 |
/*
|
|
Packit |
13e616 |
* Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
|
|
Packit |
13e616 |
* Copyright (c) 2002-2015 Mellanox Technologies LTD. All rights reserved.
|
|
Packit |
13e616 |
* Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
|
|
Packit |
13e616 |
* Copyright (c) 2009 HNR Consulting. All rights reserved.
|
|
Packit |
13e616 |
* Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
* This software is available to you under a choice of one of two
|
|
Packit |
13e616 |
* licenses. You may choose to be licensed under the terms of the GNU
|
|
Packit |
13e616 |
* General Public License (GPL) Version 2, available from the file
|
|
Packit |
13e616 |
* COPYING in the main directory of this source tree, or the
|
|
Packit |
13e616 |
* OpenIB.org BSD license below:
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
* Redistribution and use in source and binary forms, with or
|
|
Packit |
13e616 |
* without modification, are permitted provided that the following
|
|
Packit |
13e616 |
* conditions are met:
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
* - Redistributions of source code must retain the above
|
|
Packit |
13e616 |
* copyright notice, this list of conditions and the following
|
|
Packit |
13e616 |
* disclaimer.
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
* - Redistributions in binary form must reproduce the above
|
|
Packit |
13e616 |
* copyright notice, this list of conditions and the following
|
|
Packit |
13e616 |
* disclaimer in the documentation and/or other materials
|
|
Packit |
13e616 |
* provided with the distribution.
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
Packit |
13e616 |
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
Packit |
13e616 |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
Packit |
13e616 |
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
Packit |
13e616 |
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
Packit |
13e616 |
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
Packit |
13e616 |
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
Packit |
13e616 |
* SOFTWARE.
|
|
Packit |
13e616 |
*
|
|
Packit |
13e616 |
*/
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/*
|
|
Packit |
13e616 |
* Abstract:
|
|
Packit |
13e616 |
* Implementation of opensm helper functions.
|
|
Packit |
13e616 |
*/
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#if HAVE_CONFIG_H
|
|
Packit |
13e616 |
# include <config.h>
|
|
Packit |
13e616 |
#endif /* HAVE_CONFIG_H */
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#include <stdlib.h>
|
|
Packit |
13e616 |
#include <stdio.h>
|
|
Packit |
13e616 |
#include <string.h>
|
|
Packit |
13e616 |
#include <arpa/inet.h>
|
|
Packit |
13e616 |
#include <complib/cl_debug.h>
|
|
Packit |
13e616 |
#include <iba/ib_types.h>
|
|
Packit |
13e616 |
#include <opensm/osm_file_ids.h>
|
|
Packit |
13e616 |
#define FILE_ID OSM_FILE_HELPER_C
|
|
Packit |
13e616 |
#include <opensm/osm_helper.h>
|
|
Packit |
13e616 |
#include <opensm/osm_log.h>
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define LINE_LENGTH 256
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define ARR_SIZE(a) (sizeof(a)/sizeof((a)[0]))
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* we use two tables - one for queries and one for responses */
|
|
Packit |
13e616 |
static const char *ib_sa_method_str[] = {
|
|
Packit |
13e616 |
"RESERVED", /* 0 */
|
|
Packit |
13e616 |
"SubnAdmGet", /* 1 */
|
|
Packit |
13e616 |
"SubnAdmSet", /* 2 */
|
|
Packit |
13e616 |
"RESERVED", /* 3 */
|
|
Packit |
13e616 |
"RESERVED", /* 4 */
|
|
Packit |
13e616 |
"RESERVED", /* 5 */
|
|
Packit |
13e616 |
"SubnAdmReport", /* 6 */
|
|
Packit |
13e616 |
"RESERVED", /* 7 */
|
|
Packit |
13e616 |
"RESERVED", /* 8 */
|
|
Packit |
13e616 |
"RESERVED", /* 9 */
|
|
Packit |
13e616 |
"RESERVED", /* A */
|
|
Packit |
13e616 |
"RESERVED", /* B */
|
|
Packit |
13e616 |
"RESERVED", /* C */
|
|
Packit |
13e616 |
"RESERVED", /* D */
|
|
Packit |
13e616 |
"RESERVED", /* E */
|
|
Packit |
13e616 |
"RESERVED", /* F */
|
|
Packit |
13e616 |
"RESERVED", /* 10 */
|
|
Packit |
13e616 |
"RESERVED", /* 11 */
|
|
Packit |
13e616 |
"SubnAdmGetTable", /* 12 */
|
|
Packit |
13e616 |
"SubnAdmGetTraceTable", /* 13 */
|
|
Packit |
13e616 |
"SubnAdmGetMulti", /* 14 */
|
|
Packit |
13e616 |
"SubnAdmDelete", /* 15 */
|
|
Packit |
13e616 |
"UNKNOWN" /* 16 */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define OSM_SA_METHOD_STR_UNKNOWN_VAL (ARR_SIZE(ib_sa_method_str) - 1)
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *ib_sa_resp_method_str[] = {
|
|
Packit |
13e616 |
"RESERVED", /* 80 */
|
|
Packit |
13e616 |
"SubnAdmGetResp", /* 81 */
|
|
Packit |
13e616 |
"RESERVED (SetResp?)", /* 82 */
|
|
Packit |
13e616 |
"RESERVED", /* 83 */
|
|
Packit |
13e616 |
"RESERVED", /* 84 */
|
|
Packit |
13e616 |
"RESERVED", /* 85 */
|
|
Packit |
13e616 |
"SubnAdmReportResp", /* 86 */
|
|
Packit |
13e616 |
"RESERVED", /* 87 */
|
|
Packit |
13e616 |
"RESERVED", /* 88 */
|
|
Packit |
13e616 |
"RESERVED", /* 89 */
|
|
Packit |
13e616 |
"RESERVED", /* 8A */
|
|
Packit |
13e616 |
"RESERVED", /* 8B */
|
|
Packit |
13e616 |
"RESERVED", /* 8C */
|
|
Packit |
13e616 |
"RESERVED", /* 8D */
|
|
Packit |
13e616 |
"RESERVED", /* 8E */
|
|
Packit |
13e616 |
"RESERVED", /* 8F */
|
|
Packit |
13e616 |
"RESERVED", /* 90 */
|
|
Packit |
13e616 |
"RESERVED", /* 91 */
|
|
Packit |
13e616 |
"SubnAdmGetTableResp", /* 92 */
|
|
Packit |
13e616 |
"RESERVED", /* 93 */
|
|
Packit |
13e616 |
"SubnAdmGetMultiResp", /* 94 */
|
|
Packit |
13e616 |
"SubnAdmDeleteResp", /* 95 */
|
|
Packit |
13e616 |
"UNKNOWN"
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *ib_sm_method_str[] = {
|
|
Packit |
13e616 |
"RESERVED0", /* 0 */
|
|
Packit |
13e616 |
"SubnGet", /* 1 */
|
|
Packit |
13e616 |
"SubnSet", /* 2 */
|
|
Packit |
13e616 |
"RESERVED3", /* 3 */
|
|
Packit |
13e616 |
"RESERVED4", /* 4 */
|
|
Packit |
13e616 |
"SubnTrap", /* 5 */
|
|
Packit |
13e616 |
"RESERVED6", /* 6 */
|
|
Packit |
13e616 |
"SubnTrapRepress", /* 7 */
|
|
Packit |
13e616 |
"RESERVED8", /* 8 */
|
|
Packit |
13e616 |
"RESERVED9", /* 9 */
|
|
Packit |
13e616 |
"RESERVEDA", /* A */
|
|
Packit |
13e616 |
"RESERVEDB", /* B */
|
|
Packit |
13e616 |
"RESERVEDC", /* C */
|
|
Packit |
13e616 |
"RESERVEDD", /* D */
|
|
Packit |
13e616 |
"RESERVEDE", /* E */
|
|
Packit |
13e616 |
"RESERVEDF", /* F */
|
|
Packit |
13e616 |
"RESERVED10", /* 10 */
|
|
Packit |
13e616 |
"SubnGetResp", /* 11 */
|
|
Packit |
13e616 |
"RESERVED12", /* 12 */
|
|
Packit |
13e616 |
"RESERVED13", /* 13 */
|
|
Packit |
13e616 |
"RESERVED14", /* 14 */
|
|
Packit |
13e616 |
"RESERVED15", /* 15 */
|
|
Packit |
13e616 |
"RESERVED16", /* 16 */
|
|
Packit |
13e616 |
"RESERVED17", /* 17 */
|
|
Packit |
13e616 |
"RESERVED18", /* 18 */
|
|
Packit |
13e616 |
"RESERVED19", /* 19 */
|
|
Packit |
13e616 |
"RESERVED1A", /* 1A */
|
|
Packit |
13e616 |
"RESERVED1B", /* 1B */
|
|
Packit |
13e616 |
"RESERVED1C", /* 1C */
|
|
Packit |
13e616 |
"RESERVED1D", /* 1D */
|
|
Packit |
13e616 |
"RESERVED1E", /* 1E */
|
|
Packit |
13e616 |
"RESERVED1F", /* 1F */
|
|
Packit |
13e616 |
"UNKNOWN" /* 20 */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define OSM_SM_METHOD_STR_UNKNOWN_VAL (ARR_SIZE(ib_sm_method_str) - 1)
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *ib_sm_attr_str[] = {
|
|
Packit |
13e616 |
"RESERVED", /* 0 */
|
|
Packit |
13e616 |
"ClassPortInfo", /* 1 */
|
|
Packit |
13e616 |
"Notice", /* 2 */
|
|
Packit |
13e616 |
"InformInfo", /* 3 */
|
|
Packit |
13e616 |
"RESERVED", /* 4 */
|
|
Packit |
13e616 |
"RESERVED", /* 5 */
|
|
Packit |
13e616 |
"RESERVED", /* 6 */
|
|
Packit |
13e616 |
"RESERVED", /* 7 */
|
|
Packit |
13e616 |
"RESERVED", /* 8 */
|
|
Packit |
13e616 |
"RESERVED", /* 9 */
|
|
Packit |
13e616 |
"RESERVED", /* A */
|
|
Packit |
13e616 |
"RESERVED", /* B */
|
|
Packit |
13e616 |
"RESERVED", /* C */
|
|
Packit |
13e616 |
"RESERVED", /* D */
|
|
Packit |
13e616 |
"RESERVED", /* E */
|
|
Packit |
13e616 |
"RESERVED", /* F */
|
|
Packit |
13e616 |
"NodeDescription", /* 10 */
|
|
Packit |
13e616 |
"NodeInfo", /* 11 */
|
|
Packit |
13e616 |
"SwitchInfo", /* 12 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 13 */
|
|
Packit |
13e616 |
"GUIDInfo", /* 14 */
|
|
Packit |
13e616 |
"PortInfo", /* 15 */
|
|
Packit |
13e616 |
"P_KeyTable", /* 16 */
|
|
Packit |
13e616 |
"SLtoVLMappingTable", /* 17 */
|
|
Packit |
13e616 |
"VLArbitrationTable", /* 18 */
|
|
Packit |
13e616 |
"LinearForwardingTable", /* 19 */
|
|
Packit |
13e616 |
"RandomForwardingTable", /* 1A */
|
|
Packit |
13e616 |
"MulticastForwardingTable", /* 1B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1F */
|
|
Packit |
13e616 |
"SMInfo", /* 20 */
|
|
Packit |
13e616 |
"UNKNOWN" /* 21 - always highest value */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define OSM_SM_ATTR_STR_UNKNOWN_VAL (ARR_SIZE(ib_sm_attr_str) - 1)
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *ib_sa_attr_str[] = {
|
|
Packit |
13e616 |
"RESERVED", /* 0 */
|
|
Packit |
13e616 |
"ClassPortInfo", /* 1 */
|
|
Packit |
13e616 |
"Notice", /* 2 */
|
|
Packit |
13e616 |
"InformInfo", /* 3 */
|
|
Packit |
13e616 |
"RESERVED", /* 4 */
|
|
Packit |
13e616 |
"RESERVED", /* 5 */
|
|
Packit |
13e616 |
"RESERVED", /* 6 */
|
|
Packit |
13e616 |
"RESERVED", /* 7 */
|
|
Packit |
13e616 |
"RESERVED", /* 8 */
|
|
Packit |
13e616 |
"RESERVED", /* 9 */
|
|
Packit |
13e616 |
"RESERVED", /* A */
|
|
Packit |
13e616 |
"RESERVED", /* B */
|
|
Packit |
13e616 |
"RESERVED", /* C */
|
|
Packit |
13e616 |
"RESERVED", /* D */
|
|
Packit |
13e616 |
"RESERVED", /* E */
|
|
Packit |
13e616 |
"RESERVED", /* F */
|
|
Packit |
13e616 |
"RESERVED", /* 10 */
|
|
Packit |
13e616 |
"NodeRecord", /* 11 */
|
|
Packit |
13e616 |
"PortInfoRecord", /* 12 */
|
|
Packit |
13e616 |
"SLtoVLMappingTableRecord", /* 13 */
|
|
Packit |
13e616 |
"SwitchInfoRecord", /* 14 */
|
|
Packit |
13e616 |
"LinearForwardingTableRecord", /* 15 */
|
|
Packit |
13e616 |
"RandomForwardingTableRecord", /* 16 */
|
|
Packit |
13e616 |
"MulticastForwardingTableRecord", /* 17 */
|
|
Packit |
13e616 |
"SMInfoRecord", /* 18 */
|
|
Packit |
13e616 |
"RESERVED", /* 19 */
|
|
Packit |
13e616 |
"RandomForwardingTable", /* 1A */
|
|
Packit |
13e616 |
"MulticastForwardingTable", /* 1B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 1F */
|
|
Packit |
13e616 |
"LinkRecord", /* 20 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 21 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 22 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 23 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 24 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 25 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 26 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 27 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 28 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 29 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 2F */
|
|
Packit |
13e616 |
"GuidInfoRecord", /* 30 */
|
|
Packit |
13e616 |
"ServiceRecord", /* 31 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 32 */
|
|
Packit |
13e616 |
"P_KeyTableRecord", /* 33 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 34 */
|
|
Packit |
13e616 |
"PathRecord", /* 35 */
|
|
Packit |
13e616 |
"VLArbitrationTableRecord", /* 36 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 37 */
|
|
Packit |
13e616 |
"MCMemberRecord", /* 38 */
|
|
Packit |
13e616 |
"TraceRecord", /* 39 */
|
|
Packit |
13e616 |
"MultiPathRecord", /* 3A */
|
|
Packit |
13e616 |
"ServiceAssociationRecord", /* 3B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 3C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 3D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 3E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 3F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 40 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 41 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 42 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 43 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 44 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 45 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 46 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 47 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 48 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 49 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 4F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 50 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 51 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 52 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 53 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 54 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 55 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 56 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 57 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 58 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 59 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 5F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 60 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 61 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 62 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 63 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 64 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 65 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 66 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 67 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 68 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 69 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 6F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 70 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 71 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 72 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 73 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 74 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 75 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 76 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 77 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 78 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 79 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 7F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 80 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 81 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 82 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 83 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 84 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 85 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 86 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 87 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 88 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 89 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 8F */
|
|
Packit |
13e616 |
"UNKNOWN", /* 90 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 91 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 92 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 93 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 94 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 95 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 96 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 97 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 98 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 99 */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9A */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9B */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9C */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9D */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9E */
|
|
Packit |
13e616 |
"UNKNOWN", /* 9F */
|
|
Packit |
13e616 |
"UNKNOWN", /* A0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A2 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A3 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A4 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A5 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A6 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A7 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A8 */
|
|
Packit |
13e616 |
"UNKNOWN", /* A9 */
|
|
Packit |
13e616 |
"UNKNOWN", /* AA */
|
|
Packit |
13e616 |
"UNKNOWN", /* AB */
|
|
Packit |
13e616 |
"UNKNOWN", /* AC */
|
|
Packit |
13e616 |
"UNKNOWN", /* AD */
|
|
Packit |
13e616 |
"UNKNOWN", /* AE */
|
|
Packit |
13e616 |
"UNKNOWN", /* AF */
|
|
Packit |
13e616 |
"UNKNOWN", /* B0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B2 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B3 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B4 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B5 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B6 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B7 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B8 */
|
|
Packit |
13e616 |
"UNKNOWN", /* B9 */
|
|
Packit |
13e616 |
"UNKNOWN", /* BA */
|
|
Packit |
13e616 |
"UNKNOWN", /* BB */
|
|
Packit |
13e616 |
"UNKNOWN", /* BC */
|
|
Packit |
13e616 |
"UNKNOWN", /* BD */
|
|
Packit |
13e616 |
"UNKNOWN", /* BE */
|
|
Packit |
13e616 |
"UNKNOWN", /* BF */
|
|
Packit |
13e616 |
"UNKNOWN", /* C0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C2 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C3 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C4 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C5 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C6 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C7 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C8 */
|
|
Packit |
13e616 |
"UNKNOWN", /* C9 */
|
|
Packit |
13e616 |
"UNKNOWN", /* CA */
|
|
Packit |
13e616 |
"UNKNOWN", /* CB */
|
|
Packit |
13e616 |
"UNKNOWN", /* CC */
|
|
Packit |
13e616 |
"UNKNOWN", /* CD */
|
|
Packit |
13e616 |
"UNKNOWN", /* CE */
|
|
Packit |
13e616 |
"UNKNOWN", /* CF */
|
|
Packit |
13e616 |
"UNKNOWN", /* D0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D2 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D3 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D4 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D5 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D6 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D7 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D8 */
|
|
Packit |
13e616 |
"UNKNOWN", /* D9 */
|
|
Packit |
13e616 |
"UNKNOWN", /* DA */
|
|
Packit |
13e616 |
"UNKNOWN", /* DB */
|
|
Packit |
13e616 |
"UNKNOWN", /* DC */
|
|
Packit |
13e616 |
"UNKNOWN", /* DD */
|
|
Packit |
13e616 |
"UNKNOWN", /* DE */
|
|
Packit |
13e616 |
"UNKNOWN", /* DF */
|
|
Packit |
13e616 |
"UNKNOWN", /* E0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E2 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E3 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E4 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E5 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E6 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E7 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E8 */
|
|
Packit |
13e616 |
"UNKNOWN", /* E9 */
|
|
Packit |
13e616 |
"UNKNOWN", /* EA */
|
|
Packit |
13e616 |
"UNKNOWN", /* EB */
|
|
Packit |
13e616 |
"UNKNOWN", /* EC */
|
|
Packit |
13e616 |
"UNKNOWN", /* ED */
|
|
Packit |
13e616 |
"UNKNOWN", /* EE */
|
|
Packit |
13e616 |
"UNKNOWN", /* EF */
|
|
Packit |
13e616 |
"UNKNOWN", /* F0 */
|
|
Packit |
13e616 |
"UNKNOWN", /* F1 */
|
|
Packit |
13e616 |
"UNKNOWN", /* F2 */
|
|
Packit |
13e616 |
"InformInfoRecord", /* F3 */
|
|
Packit |
13e616 |
"UNKNOWN" /* F4 - always highest value */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
#define OSM_SA_ATTR_STR_UNKNOWN_VAL (ARR_SIZE(ib_sa_attr_str) - 1)
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static int ordered_rates[] = {
|
|
Packit |
13e616 |
0, 0, /* 0, 1 - reserved */
|
|
Packit |
13e616 |
1, /* 2 - 2.5 Gbps */
|
|
Packit |
13e616 |
3, /* 3 - 10 Gbps */
|
|
Packit |
13e616 |
6, /* 4 - 30 Gbps */
|
|
Packit |
13e616 |
2, /* 5 - 5 Gbps */
|
|
Packit |
13e616 |
5, /* 6 - 20 Gbps */
|
|
Packit |
13e616 |
9, /* 7 - 40 Gbps */
|
|
Packit |
13e616 |
10, /* 8 - 60 Gbps */
|
|
Packit |
13e616 |
13, /* 9 - 80 Gbps */
|
|
Packit |
13e616 |
14, /* 10 - 120 Gbps */
|
|
Packit |
13e616 |
4, /* 11 - 14 Gbps (17 Gbps equiv) */
|
|
Packit |
13e616 |
12, /* 12 - 56 Gbps (68 Gbps equiv) */
|
|
Packit |
13e616 |
16, /* 13 - 112 Gbps (136 Gbps equiv) */
|
|
Packit |
13e616 |
17, /* 14 - 168 Gbps (204 Gbps equiv) */
|
|
Packit |
13e616 |
7, /* 15 - 25 Gbps (31.25 Gbps equiv) */
|
|
Packit |
13e616 |
15, /* 16 - 100 Gbps (125 Gbps equiv) */
|
|
Packit |
13e616 |
18, /* 17 - 200 Gbps (250 Gbps equiv) */
|
|
Packit |
13e616 |
19, /* 18 - 300 Gbps (375 Gbps equiv) */
|
|
Packit |
13e616 |
8, /* 19 - 28 Gbps (35 Gbps equiv) */
|
|
Packit |
13e616 |
11, /* 20 - 50 Gbps (62.5 Gbps equiv) */
|
|
Packit |
13e616 |
20, /* 21 - 400 Gbps (500 Gbps equiv) */
|
|
Packit |
13e616 |
21, /* 22 - 600 Gbps (750 Gbps equiv) */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int sprint_uint8_arr(char *buf, size_t size,
|
|
Packit |
13e616 |
const uint8_t * arr, size_t len)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int n;
|
|
Packit |
13e616 |
unsigned int i;
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < len; i++) {
|
|
Packit |
13e616 |
n += snprintf(buf + n, size - n, "%s%u", i == 0 ? "" : ",",
|
|
Packit |
13e616 |
arr[i]);
|
|
Packit |
13e616 |
if (n >= size)
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
return n;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *ib_get_sa_method_str(IN uint8_t method)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (method & 0x80) {
|
|
Packit |
13e616 |
method = method & 0x7f;
|
|
Packit |
13e616 |
if (method > OSM_SA_METHOD_STR_UNKNOWN_VAL)
|
|
Packit |
13e616 |
method = OSM_SA_METHOD_STR_UNKNOWN_VAL;
|
|
Packit |
13e616 |
/* it is a response - use the response table */
|
|
Packit |
13e616 |
return ib_sa_resp_method_str[method];
|
|
Packit |
13e616 |
} else {
|
|
Packit |
13e616 |
if (method > OSM_SA_METHOD_STR_UNKNOWN_VAL)
|
|
Packit |
13e616 |
method = OSM_SA_METHOD_STR_UNKNOWN_VAL;
|
|
Packit |
13e616 |
return ib_sa_method_str[method];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *ib_get_sm_method_str(IN uint8_t method)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (method & 0x80)
|
|
Packit |
13e616 |
method = (method & 0x0F) | 0x10;
|
|
Packit |
13e616 |
if (method > OSM_SM_METHOD_STR_UNKNOWN_VAL)
|
|
Packit |
13e616 |
method = OSM_SM_METHOD_STR_UNKNOWN_VAL;
|
|
Packit |
13e616 |
return ib_sm_method_str[method];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *ib_get_sm_attr_str(IN ib_net16_t attr)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
uint16_t host_attr = cl_ntoh16(attr);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (attr == IB_MAD_ATTR_MLNX_EXTENDED_PORT_INFO)
|
|
Packit |
13e616 |
return "MLNXExtendedPortInfo";
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (host_attr > OSM_SM_ATTR_STR_UNKNOWN_VAL)
|
|
Packit |
13e616 |
host_attr = OSM_SM_ATTR_STR_UNKNOWN_VAL;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
return ib_sm_attr_str[host_attr];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *ib_get_sa_attr_str(IN ib_net16_t attr)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
uint16_t host_attr = cl_ntoh16(attr);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (host_attr > OSM_SA_ATTR_STR_UNKNOWN_VAL)
|
|
Packit |
13e616 |
host_attr = OSM_SA_ATTR_STR_UNKNOWN_VAL;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
return ib_sa_attr_str[host_attr];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *ib_get_trap_str(ib_net16_t trap_num)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
switch (cl_ntoh16(trap_num)) {
|
|
Packit |
13e616 |
case SM_GID_IN_SERVICE_TRAP: /* 64 */
|
|
Packit |
13e616 |
return "GID in service";
|
|
Packit |
13e616 |
case SM_GID_OUT_OF_SERVICE_TRAP: /* 65 */
|
|
Packit |
13e616 |
return "GID out of service";
|
|
Packit |
13e616 |
case SM_MGID_CREATED_TRAP: /* 66 */
|
|
Packit |
13e616 |
return "New mcast group created";
|
|
Packit |
13e616 |
case SM_MGID_DESTROYED_TRAP: /* 67 */
|
|
Packit |
13e616 |
return "Mcast group deleted";
|
|
Packit |
13e616 |
case SM_UNPATH_TRAP: /* 68 */
|
|
Packit |
13e616 |
return "UnPath, Path no longer valid";
|
|
Packit |
13e616 |
case SM_REPATH_TRAP: /* 69 */
|
|
Packit |
13e616 |
return "RePath, Path recomputed";
|
|
Packit |
13e616 |
case SM_LINK_STATE_CHANGED_TRAP: /* 128 */
|
|
Packit |
13e616 |
return "Link state change";
|
|
Packit |
13e616 |
case SM_LINK_INTEGRITY_THRESHOLD_TRAP: /* 129 */
|
|
Packit |
13e616 |
return "Local Link integrity threshold reached";
|
|
Packit |
13e616 |
case SM_BUFFER_OVERRUN_THRESHOLD_TRAP: /* 130 */
|
|
Packit |
13e616 |
return "Excessive Buffer Overrun Threshold reached";
|
|
Packit |
13e616 |
case SM_WATCHDOG_TIMER_EXPIRED_TRAP: /* 131 */
|
|
Packit |
13e616 |
return "Flow Control Update watchdog timer expired";
|
|
Packit |
13e616 |
case SM_LOCAL_CHANGES_TRAP: /* 144 */
|
|
Packit |
13e616 |
return
|
|
Packit |
13e616 |
"CapabilityMask, NodeDescription, Link [Width|Speed] Enabled, SM priority changed";
|
|
Packit |
13e616 |
case SM_SYS_IMG_GUID_CHANGED_TRAP: /* 145 */
|
|
Packit |
13e616 |
return "System Image GUID changed";
|
|
Packit |
13e616 |
case SM_BAD_MKEY_TRAP: /* 256 */
|
|
Packit |
13e616 |
return "Bad M_Key";
|
|
Packit |
13e616 |
case SM_BAD_PKEY_TRAP: /* 257 */
|
|
Packit |
13e616 |
return "Bad P_Key";
|
|
Packit |
13e616 |
case SM_BAD_QKEY_TRAP: /* 258 */
|
|
Packit |
13e616 |
return "Bad Q_Key";
|
|
Packit |
13e616 |
case SM_BAD_SWITCH_PKEY_TRAP: /* 259 */
|
|
Packit |
13e616 |
return "Bad P_Key (switch external port)";
|
|
Packit |
13e616 |
default:
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
return "Unknown";
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const ib_gid_t ib_zero_gid = { {0} };
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static ib_api_status_t dbg_do_line(IN char **pp_local, IN uint32_t buf_size,
|
|
Packit |
13e616 |
IN const char *p_prefix_str,
|
|
Packit |
13e616 |
IN const char *p_new_str,
|
|
Packit |
13e616 |
IN uint32_t * p_total_len)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
char line[LINE_LENGTH];
|
|
Packit |
13e616 |
uint32_t len;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(line, "%s%s", p_prefix_str, p_new_str);
|
|
Packit |
13e616 |
len = (uint32_t) strlen(line);
|
|
Packit |
13e616 |
*p_total_len += len;
|
|
Packit |
13e616 |
if (*p_total_len + sizeof('\0') > buf_size)
|
|
Packit |
13e616 |
return IB_INSUFFICIENT_MEMORY;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
strcpy(*pp_local, line);
|
|
Packit |
13e616 |
*pp_local += len;
|
|
Packit |
13e616 |
return IB_SUCCESS;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void dbg_get_capabilities_str(IN char *p_buf, IN uint32_t buf_size,
|
|
Packit |
13e616 |
IN const char *p_prefix_str,
|
|
Packit |
13e616 |
IN const ib_port_info_t * p_pi)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
uint32_t total_len = 0;
|
|
Packit |
13e616 |
char *p_local = p_buf;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
strcpy(p_local, "Capability Mask:\n");
|
|
Packit |
13e616 |
p_local += strlen(p_local);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_RESV0) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_RESV0\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_IS_SM\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_NOTICE) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_NOTICE\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_TRAP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_TRAP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_IPD) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_IPD\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_AUTO_MIG) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_AUTO_MIG\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_SL_MAP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_SL_MAP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_NV_MKEY) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_NV_MKEY\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_NV_PKEY) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_NV_PKEY\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_LED_INFO) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_LED_INFO\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_SM_DISAB) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_SM_DISAB\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_SYS_IMG_GUID) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_SYS_IMG_GUID\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_PKEY_SW_EXT_PORT_TRAP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_PKEY_SW_EXT_PORT_TRAP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_CABLE_INFO) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_CABLE_INFO\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_EXT_SPEEDS\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_CAP_MASK2\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_COM_MGT) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_COM_MGT\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_SNMP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_SNMP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_REINIT) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_REINIT\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_DEV_MGT) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_DEV_MGT\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_VEND_CLS) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_VEND_CLS\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_DR_NTC) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_DR_NTC\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_NTC) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_CAP_NTC\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_BM) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_BM\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_LINK_RT_LATENCY) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_LINK_RT_LATENCY\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_CLIENT_REREG) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_CLIENT_REREG\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_OTHER_LOCAL_CHANGES_NTC) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_OTHER_LOCAL_CHANGES_NTC\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_LINK_SPEED_WIDTH_PAIRS_TBL) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_LINK_SPEED_WIDTH_PAIRS_TBL\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_VEND_MADS) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_VEND_MADS\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_MCAST_PKEY_TRAP_SUPPRESS) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_MCAST_PKEY_TRAP_SUPPRESS\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_MCAST_FDB_TOP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_MCAST_FDB_TOP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_HIER_INFO) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP_HAS_HIER_INFO\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void dbg_get_capabilities2_str(IN char *p_buf, IN uint32_t buf_size,
|
|
Packit |
13e616 |
IN const char *p_prefix_str,
|
|
Packit |
13e616 |
IN const ib_port_info_t * p_pi)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
uint32_t total_len = 0;
|
|
Packit |
13e616 |
char *p_local = p_buf;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
strcpy(p_local, "Capability Mask2:\n");
|
|
Packit |
13e616 |
p_local += strlen(p_local);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_SET_NODE_DESC_SUPPORTED) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_SET_NODE_DESC_SUPPORTED\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_PORT_INFO_EXT_SUPPORTED) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_PORT_INFO_EXT_SUPPORTED\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_VIRT_SUPPORTED) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_VIRT_SUPPORTED\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_SWITCH_PORT_STATE_TBL_SUPP) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_SWITCH_PORT_STATE_TBL_SUPP\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED) {
|
|
Packit |
13e616 |
if (dbg_do_line(&p_local, buf_size, p_prefix_str,
|
|
Packit |
13e616 |
"IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED\n",
|
|
Packit |
13e616 |
&total_len) != IB_SUCCESS)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_port_info_to_buf(IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_port_info_t * p_pi,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_pi)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"PortInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tport number..............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key....................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubnet_prefix............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_lid.................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tmaster_sm_base_lid.......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tcapability_mask..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdiag_code................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_lease_period.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlocal_port_num...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_enabled.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_supported.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_active........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_supported.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_state...............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tstate_info2..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_protect_bits.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlmc......................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmtu_smsl.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_cap_init_type.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_high_limit............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_arb_high_cap..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_arb_low_cap...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tinit_rep_mtu_cap.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_stall_life............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_enforce...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tp_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tq_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tguid_cap.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclient_reregister........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmcast_pkey_trap_suppr....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubnet_timeout...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_value..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\terror_threshold..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmax_credit_hint..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_round_trip_latency..0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tcapability_mask2.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_active....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_supported.0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_enabled...0x%X\n",
|
|
Packit |
13e616 |
port_num, cl_ntoh64(node_guid), cl_ntoh64(port_guid),
|
|
Packit |
13e616 |
cl_ntoh64(p_pi->m_key), cl_ntoh64(p_pi->subnet_prefix),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->base_lid),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->master_sm_base_lid),
|
|
Packit |
13e616 |
cl_ntoh32(p_pi->capability_mask),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->diag_code),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->m_key_lease_period),
|
|
Packit |
13e616 |
p_pi->local_port_num, p_pi->link_width_enabled,
|
|
Packit |
13e616 |
p_pi->link_width_supported, p_pi->link_width_active,
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_sup(p_pi),
|
|
Packit |
13e616 |
ib_get_port_state_str(ib_port_info_get_port_state
|
|
Packit |
13e616 |
(p_pi)), p_pi->state_info2,
|
|
Packit |
13e616 |
ib_port_info_get_mpb(p_pi), ib_port_info_get_lmc(p_pi),
|
|
Packit |
13e616 |
p_pi->link_speed, p_pi->mtu_smsl, p_pi->vl_cap,
|
|
Packit |
13e616 |
p_pi->vl_high_limit, p_pi->vl_arb_high_cap,
|
|
Packit |
13e616 |
p_pi->vl_arb_low_cap, p_pi->mtu_cap,
|
|
Packit |
13e616 |
p_pi->vl_stall_life, p_pi->vl_enforce,
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->m_key_violations),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->p_key_violations),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->q_key_violations), p_pi->guid_cap,
|
|
Packit |
13e616 |
ib_port_info_get_client_rereg(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_mcast_pkey_trap_suppress(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_timeout(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_resp_time_value(p_pi),
|
|
Packit |
13e616 |
p_pi->error_threshold, cl_ntoh16(p_pi->max_credit_hint),
|
|
Packit |
13e616 |
cl_ntoh32(p_pi->link_rt_latency),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->capability_mask2),
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_ext_active(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_ext_sup(p_pi),
|
|
Packit |
13e616 |
p_pi->link_speed_ext_enabled);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_port_info(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_port_info_t * p_pi,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_port_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
port_num, p_pi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* show the capabilities masks */
|
|
Packit |
13e616 |
if (p_pi->capability_mask) {
|
|
Packit |
13e616 |
dbg_get_capabilities_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
|
|
Packit |
13e616 |
p_pi->capability_mask2) {
|
|
Packit |
13e616 |
dbg_get_capabilities2_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_port_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_port_info_t * p_pi, IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_port_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
port_num, p_pi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* show the capabilities masks */
|
|
Packit |
13e616 |
if (p_pi->capability_mask) {
|
|
Packit |
13e616 |
dbg_get_capabilities_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
|
|
Packit |
13e616 |
p_pi->capability_mask2) {
|
|
Packit |
13e616 |
dbg_get_capabilities2_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_mlnx_ext_port_info_to_buf(IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_mlnx_ext_port_info_t * p_pi,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_pi)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"MLNX ExtendedPortInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tport number..............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tStateChangeEnable........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tLinkSpeedSupported.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tLinkSpeedEnabled.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tLinkSpeedActive..........0x%X\n",
|
|
Packit |
13e616 |
port_num, cl_ntoh64(node_guid), cl_ntoh64(port_guid),
|
|
Packit |
13e616 |
p_pi->state_change_enable, p_pi->link_speed_supported,
|
|
Packit |
13e616 |
p_pi->link_speed_enabled, p_pi->link_speed_active);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_mlnx_ext_port_info(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_mlnx_ext_port_info_t * p_pi,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_mlnx_ext_port_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
port_num, p_pi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_mlnx_ext_port_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_mlnx_ext_port_info_t * p_pi,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_mlnx_ext_port_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
port_num, p_pi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_portinfo_record_to_buf(IN const ib_portinfo_record_t * p_pir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_pir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
const ib_port_info_t *p_pi = &p_pir->port_info;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"PortInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tEndPortLid...............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tPortNum..................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tOptions..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tPortInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key....................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubnet_prefix............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_lid.................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tmaster_sm_base_lid.......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tcapability_mask..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdiag_code................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_lease_period.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlocal_port_num...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_enabled.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_supported.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_width_active........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_supported.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_state...............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tstate_info2..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_protect_bits.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlmc......................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmtu_smsl.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_cap_init_type.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_high_limit............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_arb_high_cap..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_arb_low_cap...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tinit_rep_mtu_cap.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_stall_life............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvl_enforce...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tp_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tq_key_violations.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tguid_cap.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclient_reregister........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmcast_pkey_trap_suppr....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubnet_timeout...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_value..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\terror_threshold..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmax_credit_hint..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_round_trip_latency..0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tcapability_mask2.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_active....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_supported.0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlink_speed_ext_enabled...0x%X\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_pir->lid), p_pir->port_num, p_pir->options,
|
|
Packit |
13e616 |
cl_ntoh64(p_pi->m_key), cl_ntoh64(p_pi->subnet_prefix),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->base_lid),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->master_sm_base_lid),
|
|
Packit |
13e616 |
cl_ntoh32(p_pi->capability_mask),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->diag_code),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->m_key_lease_period),
|
|
Packit |
13e616 |
p_pi->local_port_num, p_pi->link_width_enabled,
|
|
Packit |
13e616 |
p_pi->link_width_supported, p_pi->link_width_active,
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_sup(p_pi),
|
|
Packit |
13e616 |
ib_get_port_state_str(ib_port_info_get_port_state
|
|
Packit |
13e616 |
(p_pi)), p_pi->state_info2,
|
|
Packit |
13e616 |
ib_port_info_get_mpb(p_pi), ib_port_info_get_lmc(p_pi),
|
|
Packit |
13e616 |
p_pi->link_speed, p_pi->mtu_smsl, p_pi->vl_cap,
|
|
Packit |
13e616 |
p_pi->vl_high_limit, p_pi->vl_arb_high_cap,
|
|
Packit |
13e616 |
p_pi->vl_arb_low_cap, p_pi->mtu_cap,
|
|
Packit |
13e616 |
p_pi->vl_stall_life, p_pi->vl_enforce,
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->m_key_violations),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->p_key_violations),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->q_key_violations), p_pi->guid_cap,
|
|
Packit |
13e616 |
ib_port_info_get_client_rereg(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_mcast_pkey_trap_suppress(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_timeout(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_resp_time_value(p_pi),
|
|
Packit |
13e616 |
p_pi->error_threshold, cl_ntoh16(p_pi->max_credit_hint),
|
|
Packit |
13e616 |
cl_ntoh32(p_pi->link_rt_latency),
|
|
Packit |
13e616 |
cl_ntoh16(p_pi->capability_mask2),
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_ext_active(p_pi),
|
|
Packit |
13e616 |
ib_port_info_get_link_speed_ext_sup(p_pi),
|
|
Packit |
13e616 |
p_pi->link_speed_ext_enabled);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_portinfo_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_portinfo_record_t * p_pir,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
const ib_port_info_t *p_pi = &p_pir->port_info;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_portinfo_record_to_buf(p_pir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* show the capabilities masks */
|
|
Packit |
13e616 |
if (p_pi->capability_mask) {
|
|
Packit |
13e616 |
dbg_get_capabilities_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
|
|
Packit |
13e616 |
p_pi->capability_mask2) {
|
|
Packit |
13e616 |
dbg_get_capabilities2_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_portinfo_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_portinfo_record_t * p_pir,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
const ib_port_info_t *p_pi = &p_pir->port_info;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_portinfo_record_to_buf(p_pir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* show the capabilities masks */
|
|
Packit |
13e616 |
if (p_pi->capability_mask) {
|
|
Packit |
13e616 |
dbg_get_capabilities_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
|
|
Packit |
13e616 |
p_pi->capability_mask2) {
|
|
Packit |
13e616 |
dbg_get_capabilities2_str(buf, BUF_SIZE, "\t\t\t\t",
|
|
Packit |
13e616 |
p_pi);
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_guid_info_to_buf(IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t block_num,
|
|
Packit |
13e616 |
IN const ib_guid_info_t * p_gi,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_gi)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"GUIDInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tblock number............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 0..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 1..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 2..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 3..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 4..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 5..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 6..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 7..................0x%016" PRIx64 "\n",
|
|
Packit |
13e616 |
block_num, cl_ntoh64(node_guid), cl_ntoh64(port_guid),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[0]), cl_ntoh64(p_gi->guid[1]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[2]), cl_ntoh64(p_gi->guid[3]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[4]), cl_ntoh64(p_gi->guid[5]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[6]), cl_ntoh64(p_gi->guid[7]));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_guid_info(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t block_num,
|
|
Packit |
13e616 |
IN const ib_guid_info_t * p_gi,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_guid_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
block_num, p_gi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_guid_info_v2(IN osm_log_t * p_log, IN ib_net64_t node_guid,
|
|
Packit |
13e616 |
IN ib_net64_t port_guid, IN uint8_t block_num,
|
|
Packit |
13e616 |
IN const ib_guid_info_t * p_gi,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_guid_info_to_buf(node_guid, port_guid,
|
|
Packit |
13e616 |
block_num, p_gi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_guidinfo_record_to_buf(IN const ib_guidinfo_record_t * p_gir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_gir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
const ib_guid_info_t *p_gi = &p_gir->guid_info;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"GUIDInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tLid.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tBlockNum................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tReserved................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUIDInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tReserved................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 0..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 1..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 2..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 3..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 4..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 5..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 6..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tGUID 7..................0x%016" PRIx64 "\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_gir->lid), p_gir->block_num, p_gir->resv,
|
|
Packit |
13e616 |
cl_ntoh32(p_gir->reserved),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[0]), cl_ntoh64(p_gi->guid[1]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[2]), cl_ntoh64(p_gi->guid[3]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[4]), cl_ntoh64(p_gi->guid[5]),
|
|
Packit |
13e616 |
cl_ntoh64(p_gi->guid[6]), cl_ntoh64(p_gi->guid[7]));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
void osm_dump_guidinfo_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_guidinfo_record_t * p_gir,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_guidinfo_record_to_buf(p_gir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_guidinfo_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_guidinfo_record_t * p_gir,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_guidinfo_record_to_buf(p_gir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_node_info_to_buf(IN const ib_node_info_t * p_ni,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_ni)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"NodeInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_version............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclass_version...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_type...............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tnum_ports...............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tsys_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tpartition_cap...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdevice_id...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trevision................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_num................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tvendor_id...............0x%X\n",
|
|
Packit |
13e616 |
p_ni->base_version, p_ni->class_version,
|
|
Packit |
13e616 |
ib_get_node_type_str(p_ni->node_type), p_ni->num_ports,
|
|
Packit |
13e616 |
cl_ntoh64(p_ni->sys_guid), cl_ntoh64(p_ni->node_guid),
|
|
Packit |
13e616 |
cl_ntoh64(p_ni->port_guid),
|
|
Packit |
13e616 |
cl_ntoh16(p_ni->partition_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_ni->device_id), cl_ntoh32(p_ni->revision),
|
|
Packit |
13e616 |
ib_node_info_get_local_port_num(p_ni),
|
|
Packit |
13e616 |
cl_ntoh32(ib_node_info_get_vendor_id(p_ni)));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_node_info(IN osm_log_t * p_log, IN const ib_node_info_t * p_ni,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_node_info_to_buf(p_ni, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_node_info_v2(IN osm_log_t * p_log, IN const ib_node_info_t * p_ni,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_node_info_to_buf(p_ni, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_node_record_to_buf(IN const ib_node_record_t * p_nr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_nr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char desc[sizeof(p_nr->node_desc.description) + 1];
|
|
Packit |
13e616 |
const ib_node_info_t *p_ni = &p_nr->node_info;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
memcpy(desc, p_nr->node_desc.description,
|
|
Packit |
13e616 |
sizeof(p_nr->node_desc.description));
|
|
Packit |
13e616 |
desc[sizeof(desc) - 1] = '\0';
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"Node Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tLid.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tReserved................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tNodeInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_version............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclass_version...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_type...............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tnum_ports...............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tsys_guid................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_guid...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tpartition_cap...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdevice_id...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trevision................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_num................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tvendor_id...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tNodeDescription\n"
|
|
Packit |
13e616 |
"\t\t\t\t%s\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_nr->lid), cl_ntoh16(p_nr->resv),
|
|
Packit |
13e616 |
p_ni->base_version, p_ni->class_version,
|
|
Packit |
13e616 |
ib_get_node_type_str(p_ni->node_type), p_ni->num_ports,
|
|
Packit |
13e616 |
cl_ntoh64(p_ni->sys_guid), cl_ntoh64(p_ni->node_guid),
|
|
Packit |
13e616 |
cl_ntoh64(p_ni->port_guid),
|
|
Packit |
13e616 |
cl_ntoh16(p_ni->partition_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_ni->device_id), cl_ntoh32(p_ni->revision),
|
|
Packit |
13e616 |
ib_node_info_get_local_port_num(p_ni),
|
|
Packit |
13e616 |
cl_ntoh32(ib_node_info_get_vendor_id(p_ni)), desc);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_node_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_node_record_t * p_nr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_node_record_to_buf(p_nr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_node_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_node_record_t * p_nr,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_node_record_to_buf(p_nr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_path_record_to_buf(IN const ib_path_rec_t * p_pr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_pr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char gid_str2[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"PathRecord dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tservice_id..............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tdgid....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tsgid....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tdlid....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tslid....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\thop_flow_raw............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttclass..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnum_path_revers.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkey....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tqos_class...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsl......................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmtu.....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trate....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkt_life................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpreference..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresv2...................0x%02X%02X%02X%02X%02X%02X\n",
|
|
Packit |
13e616 |
cl_ntoh64(p_pr->service_id),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_pr->dgid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_pr->sgid.raw, gid_str2,
|
|
Packit |
13e616 |
sizeof gid_str2),
|
|
Packit |
13e616 |
cl_ntoh16(p_pr->dlid), cl_ntoh16(p_pr->slid),
|
|
Packit |
13e616 |
cl_ntoh32(p_pr->hop_flow_raw), p_pr->tclass,
|
|
Packit |
13e616 |
p_pr->num_path, cl_ntoh16(p_pr->pkey),
|
|
Packit |
13e616 |
ib_path_rec_qos_class(p_pr), ib_path_rec_sl(p_pr),
|
|
Packit |
13e616 |
p_pr->mtu, p_pr->rate, p_pr->pkt_life, p_pr->preference,
|
|
Packit |
13e616 |
p_pr->resv2[0], p_pr->resv2[1], p_pr->resv2[2],
|
|
Packit |
13e616 |
p_pr->resv2[3], p_pr->resv2[4], p_pr->resv2[5]);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_path_record(IN osm_log_t * p_log, IN const ib_path_rec_t * p_pr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_path_record_to_buf(p_pr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_path_record_v2(IN osm_log_t * p_log, IN const ib_path_rec_t * p_pr,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_path_record_to_buf(p_pr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_multipath_record_to_buf(IN const ib_multipath_rec_t * p_mpr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_mpr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char buf_line[1024];
|
|
Packit |
13e616 |
ib_gid_t const *p_gid = p_mpr->gids;
|
|
Packit |
13e616 |
int i, n = 0;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_mpr->sgid_count) {
|
|
Packit |
13e616 |
for (i = 0; i < p_mpr->sgid_count; i++) {
|
|
Packit |
13e616 |
n += sprintf(buf_line + n,
|
|
Packit |
13e616 |
"\t\t\t\tsgid%02d.................."
|
|
Packit |
13e616 |
"%s\n", i + 1,
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_gid->raw,
|
|
Packit |
13e616 |
gid_str,
|
|
Packit |
13e616 |
sizeof gid_str));
|
|
Packit |
13e616 |
p_gid++;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (p_mpr->dgid_count) {
|
|
Packit |
13e616 |
for (i = 0; i < p_mpr->dgid_count; i++) {
|
|
Packit |
13e616 |
n += sprintf(buf_line + n,
|
|
Packit |
13e616 |
"\t\t\t\tdgid%02d.................."
|
|
Packit |
13e616 |
"%s\n", i + 1,
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_gid->raw,
|
|
Packit |
13e616 |
gid_str,
|
|
Packit |
13e616 |
sizeof gid_str));
|
|
Packit |
13e616 |
p_gid++;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"MultiPath Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\thop_flow_raw............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttclass..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnum_path_revers.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkey....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tqos_class...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsl......................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmtu.....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trate....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkt_life................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tindependence............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsgid_count..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdgid_count..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tservice_id..............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"%s\n",
|
|
Packit |
13e616 |
cl_ntoh32(p_mpr->hop_flow_raw), p_mpr->tclass,
|
|
Packit |
13e616 |
p_mpr->num_path, cl_ntoh16(p_mpr->pkey),
|
|
Packit |
13e616 |
ib_multipath_rec_qos_class(p_mpr),
|
|
Packit |
13e616 |
ib_multipath_rec_sl(p_mpr), p_mpr->mtu, p_mpr->rate,
|
|
Packit |
13e616 |
p_mpr->pkt_life, p_mpr->independence,
|
|
Packit |
13e616 |
p_mpr->sgid_count, p_mpr->dgid_count,
|
|
Packit |
13e616 |
cl_ntoh64(ib_multipath_rec_service_id(p_mpr)),
|
|
Packit |
13e616 |
buf_line);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_multipath_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_multipath_rec_t * p_mpr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_multipath_record_to_buf(p_mpr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_multipath_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_multipath_rec_t * p_mpr,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_multipath_record_to_buf(p_mpr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_mc_record_to_buf(IN const ib_member_rec_t * p_mcmr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if(!buf || !p_mcmr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char gid_str2[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"MCMember Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tMGID....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tPortGid.................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tqkey....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmlid....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmtu.....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tTClass..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkey....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trate....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkt_life................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tSLFlowLabelHopLimit.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tScopeState..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tProxyJoin...............0x%X\n",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_mcmr->mgid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_mcmr->port_gid.raw, gid_str2,
|
|
Packit |
13e616 |
sizeof gid_str2),
|
|
Packit |
13e616 |
cl_ntoh32(p_mcmr->qkey), cl_ntoh16(p_mcmr->mlid),
|
|
Packit |
13e616 |
p_mcmr->mtu, p_mcmr->tclass, cl_ntoh16(p_mcmr->pkey),
|
|
Packit |
13e616 |
p_mcmr->rate, p_mcmr->pkt_life,
|
|
Packit |
13e616 |
cl_ntoh32(p_mcmr->sl_flow_hop),
|
|
Packit |
13e616 |
p_mcmr->scope_state, p_mcmr->proxy_join);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_mc_record(IN osm_log_t * p_log, IN const ib_member_rec_t * p_mcmr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_mc_record_to_buf(p_mcmr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_mc_record_v2(IN osm_log_t * p_log, IN const ib_member_rec_t * p_mcmr,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_mc_record_to_buf(p_mcmr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_service_record_to_buf(IN const ib_service_record_t * p_sr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_sr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char buf_service_key[35];
|
|
Packit |
13e616 |
char buf_service_name[65];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf_service_key,
|
|
Packit |
13e616 |
"0x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
|
Packit |
13e616 |
p_sr->service_key[0], p_sr->service_key[1],
|
|
Packit |
13e616 |
p_sr->service_key[2], p_sr->service_key[3],
|
|
Packit |
13e616 |
p_sr->service_key[4], p_sr->service_key[5],
|
|
Packit |
13e616 |
p_sr->service_key[6], p_sr->service_key[7],
|
|
Packit |
13e616 |
p_sr->service_key[8], p_sr->service_key[9],
|
|
Packit |
13e616 |
p_sr->service_key[10], p_sr->service_key[11],
|
|
Packit |
13e616 |
p_sr->service_key[12], p_sr->service_key[13],
|
|
Packit |
13e616 |
p_sr->service_key[14], p_sr->service_key[15]);
|
|
Packit |
13e616 |
strncpy(buf_service_name, (char *)p_sr->service_name, 64);
|
|
Packit |
13e616 |
buf_service_name[64] = '\0';
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"Service Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceID...............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceGID..............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceP_Key............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceLease............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceKey..............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceName.............%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.1..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.2..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.3..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.4..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.5..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.6..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.7..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.8..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.9..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.10.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.11.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.12.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.13.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.14.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.15.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData8.16.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.1.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.2.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.3.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.4.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.5.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.6.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.7.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData16.8.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData32.1.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData32.2.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData32.3.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData32.4.........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData64.1.........0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tServiceData64.2.........0x%016" PRIx64 "\n",
|
|
Packit |
13e616 |
cl_ntoh64(p_sr->service_id),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_sr->service_gid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_pkey),
|
|
Packit |
13e616 |
cl_ntoh32(p_sr->service_lease),
|
|
Packit |
13e616 |
buf_service_key, buf_service_name,
|
|
Packit |
13e616 |
p_sr->service_data8[0], p_sr->service_data8[1],
|
|
Packit |
13e616 |
p_sr->service_data8[2], p_sr->service_data8[3],
|
|
Packit |
13e616 |
p_sr->service_data8[4], p_sr->service_data8[5],
|
|
Packit |
13e616 |
p_sr->service_data8[6], p_sr->service_data8[7],
|
|
Packit |
13e616 |
p_sr->service_data8[8], p_sr->service_data8[9],
|
|
Packit |
13e616 |
p_sr->service_data8[10], p_sr->service_data8[11],
|
|
Packit |
13e616 |
p_sr->service_data8[12], p_sr->service_data8[13],
|
|
Packit |
13e616 |
p_sr->service_data8[14], p_sr->service_data8[15],
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[0]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[1]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[2]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[3]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[4]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[5]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[6]),
|
|
Packit |
13e616 |
cl_ntoh16(p_sr->service_data16[7]),
|
|
Packit |
13e616 |
cl_ntoh32(p_sr->service_data32[0]),
|
|
Packit |
13e616 |
cl_ntoh32(p_sr->service_data32[1]),
|
|
Packit |
13e616 |
cl_ntoh32(p_sr->service_data32[2]),
|
|
Packit |
13e616 |
cl_ntoh32(p_sr->service_data32[3]),
|
|
Packit |
13e616 |
cl_ntoh64(p_sr->service_data64[0]),
|
|
Packit |
13e616 |
cl_ntoh64(p_sr->service_data64[1]));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_service_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_service_record_t * p_sr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_service_record_to_buf(p_sr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_service_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_service_record_t * p_sr,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_service_record_to_buf(p_sr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_inform_info_to_buf_generic(IN const ib_inform_info_t * p_ii,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_ii)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
uint32_t qpn;
|
|
Packit |
13e616 |
uint8_t resp_time_val;
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
ib_inform_info_get_qpn_resp_time(p_ii->g_or_v.generic.
|
|
Packit |
13e616 |
qpn_resp_time_val, &qpn,
|
|
Packit |
13e616 |
&resp_time_val);
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"InformInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_begin.........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_end...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tis_generic..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubscribe...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_type...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_num................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tqpn.....................0x%06X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_val...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_type...............0x%06X\n" "",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ii->gid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->lid_range_begin),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->lid_range_end),
|
|
Packit |
13e616 |
p_ii->is_generic, p_ii->subscribe,
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->trap_type),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->g_or_v.generic.trap_num),
|
|
Packit |
13e616 |
cl_ntoh32(qpn), resp_time_val,
|
|
Packit |
13e616 |
cl_ntoh32(ib_inform_info_get_prod_type(p_ii)));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_inform_info_to_buf(IN const ib_inform_info_t * p_ii,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_ii)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
uint32_t qpn;
|
|
Packit |
13e616 |
uint8_t resp_time_val;
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
ib_inform_info_get_qpn_resp_time(p_ii->g_or_v.generic.
|
|
Packit |
13e616 |
qpn_resp_time_val, &qpn,
|
|
Packit |
13e616 |
&resp_time_val);
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"InformInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_begin.........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_end...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tis_generic..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubscribe...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_type...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdev_id..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tqpn.....................0x%06X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_val...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvendor_id...............0x%06X\n" "",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ii->gid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->lid_range_begin),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->lid_range_end),
|
|
Packit |
13e616 |
p_ii->is_generic, p_ii->subscribe,
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->trap_type),
|
|
Packit |
13e616 |
cl_ntoh16(p_ii->g_or_v.vend.dev_id),
|
|
Packit |
13e616 |
cl_ntoh32(qpn), resp_time_val,
|
|
Packit |
13e616 |
cl_ntoh32(ib_inform_info_get_prod_type(p_ii)));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_inform_info(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_inform_info_t * p_ii,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_ii->is_generic)
|
|
Packit |
13e616 |
osm_dump_inform_info_to_buf_generic(p_ii, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_inform_info_to_buf(p_ii, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_inform_info_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_inform_info_t * p_ii,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_ii->is_generic)
|
|
Packit |
13e616 |
osm_dump_inform_info_to_buf_generic(p_ii, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_inform_info_to_buf(p_ii, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_inform_info_record_to_buf_generic(IN const ib_inform_info_record_t * p_iir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || p_iir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char gid_str2[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
uint32_t qpn;
|
|
Packit |
13e616 |
uint8_t resp_time_val;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
ib_inform_info_get_qpn_resp_time(p_iir->inform_info.g_or_v.
|
|
Packit |
13e616 |
generic.qpn_resp_time_val,
|
|
Packit |
13e616 |
&qpn, &resp_time_val);
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"InformInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tSubscriberGID...........%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tSubscriberEnum..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tInformInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_begin.........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_end...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tis_generic..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubscribe...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_type...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_num................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tqpn.....................0x%06X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_val...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tnode_type...............0x%06X\n" "",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_iir->subscriber_gid.raw,
|
|
Packit |
13e616 |
gid_str, sizeof gid_str),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->subscriber_enum),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_iir->inform_info.gid.raw,
|
|
Packit |
13e616 |
gid_str2, sizeof gid_str2),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.lid_range_begin),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.lid_range_end),
|
|
Packit |
13e616 |
p_iir->inform_info.is_generic,
|
|
Packit |
13e616 |
p_iir->inform_info.subscribe,
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.trap_type),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.g_or_v.generic.
|
|
Packit |
13e616 |
trap_num), cl_ntoh32(qpn),
|
|
Packit |
13e616 |
resp_time_val,
|
|
Packit |
13e616 |
cl_ntoh32(ib_inform_info_get_prod_type
|
|
Packit |
13e616 |
(&p_iir->inform_info)));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_inform_info_record_to_buf(IN const ib_inform_info_record_t * p_iir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if(!buf || p_iir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char gid_str2[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
uint32_t qpn;
|
|
Packit |
13e616 |
uint8_t resp_time_val;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
ib_inform_info_get_qpn_resp_time(p_iir->inform_info.g_or_v.
|
|
Packit |
13e616 |
generic.qpn_resp_time_val,
|
|
Packit |
13e616 |
&qpn, &resp_time_val);
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"InformInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tSubscriberGID...........%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tSubscriberEnum..........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tInformInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_begin.........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid_range_end...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tis_generic..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsubscribe...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_type...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdev_id..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tqpn.....................0x%06X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresp_time_val...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tvendor_id...............0x%06X\n" "",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_iir->subscriber_gid.raw,
|
|
Packit |
13e616 |
gid_str, sizeof gid_str),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->subscriber_enum),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_iir->inform_info.gid.raw,
|
|
Packit |
13e616 |
gid_str2, sizeof gid_str2),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.lid_range_begin),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.lid_range_end),
|
|
Packit |
13e616 |
p_iir->inform_info.is_generic,
|
|
Packit |
13e616 |
p_iir->inform_info.subscribe,
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.trap_type),
|
|
Packit |
13e616 |
cl_ntoh16(p_iir->inform_info.g_or_v.vend.
|
|
Packit |
13e616 |
dev_id), cl_ntoh32(qpn),
|
|
Packit |
13e616 |
resp_time_val,
|
|
Packit |
13e616 |
cl_ntoh32(ib_inform_info_get_prod_type
|
|
Packit |
13e616 |
(&p_iir->inform_info)));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_inform_info_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_inform_info_record_t * p_iir,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_iir->inform_info.is_generic)
|
|
Packit |
13e616 |
osm_dump_inform_info_record_to_buf_generic(p_iir, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_inform_info_record_to_buf(p_iir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_inform_info_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_inform_info_record_t * p_iir,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_iir->inform_info.is_generic)
|
|
Packit |
13e616 |
osm_dump_inform_info_record_to_buf_generic(p_iir, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_inform_info_record_to_buf(p_iir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_link_record_to_buf(IN const ib_link_record_t * p_lr,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_lr)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"Link Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tfrom_lid................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tfrom_port_num...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tto_port_num.............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tto_lid..................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_lr->from_lid),
|
|
Packit |
13e616 |
p_lr->from_port_num,
|
|
Packit |
13e616 |
p_lr->to_port_num, cl_ntoh16(p_lr->to_lid));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_link_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_link_record_t * p_lr,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_link_record_to_buf(p_lr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_link_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_link_record_t * p_lr,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_link_record_to_buf(p_lr, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_switch_info_to_buf(IN const ib_switch_info_t * p_si,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_si)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SwitchInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tlin_cap.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trand_cap................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmcast_cap...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlin_top.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_port................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_mcast_pri_port......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_mcast_not_port......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlife_state..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlids_per_port...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tpartition_enf_cap.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tflags...................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmcast_top...............0x%X\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_si->lin_cap), cl_ntoh16(p_si->rand_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_si->mcast_cap), cl_ntoh16(p_si->lin_top),
|
|
Packit |
13e616 |
p_si->def_port, p_si->def_mcast_pri_port,
|
|
Packit |
13e616 |
p_si->def_mcast_not_port, p_si->life_state,
|
|
Packit |
13e616 |
cl_ntoh16(p_si->lids_per_port),
|
|
Packit |
13e616 |
cl_ntoh16(p_si->enforce_cap), p_si->flags,
|
|
Packit |
13e616 |
cl_ntoh16(p_si->mcast_top));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_switch_info(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_switch_info_t * p_si,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_switch_info_to_buf(p_si, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, OSM_LOG_VERBOSE, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_switch_info_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_switch_info_t * p_si,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_switch_info_to_buf(p_si, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, OSM_LOG_VERBOSE, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_switch_info_record_to_buf(IN const ib_switch_info_record_t * p_sir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_sir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SwitchInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tSwitchInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tlin_cap.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trand_cap................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmcast_cap...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlin_top.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_port................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_mcast_pri_port......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdef_mcast_not_port......%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlife_state..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tlids_per_port...........%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tpartition_enf_cap.......0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tflags...................0x%X\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->lid),
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.lin_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.rand_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.mcast_cap),
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.lin_top),
|
|
Packit |
13e616 |
p_sir->switch_info.def_port,
|
|
Packit |
13e616 |
p_sir->switch_info.def_mcast_pri_port,
|
|
Packit |
13e616 |
p_sir->switch_info.def_mcast_not_port,
|
|
Packit |
13e616 |
p_sir->switch_info.life_state,
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.lids_per_port),
|
|
Packit |
13e616 |
cl_ntoh16(p_sir->switch_info.enforce_cap),
|
|
Packit |
13e616 |
p_sir->switch_info.flags);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_switch_info_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_switch_info_record_t * p_sir,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_switch_info_record_to_buf(p_sir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_switch_info_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_switch_info_record_t * p_sir,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_switch_info_record_to_buf(p_sir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_pkey_block_to_buf(IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint16_t block_num,
|
|
Packit |
13e616 |
IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_pkey_table_t * p_pkey_tbl,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_pkey_tbl)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char buf_line[1024];
|
|
Packit |
13e616 |
int i, n;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < 32; i++)
|
|
Packit |
13e616 |
n += sprintf(buf_line + n, " 0x%04x |",
|
|
Packit |
13e616 |
cl_ntoh16(p_pkey_tbl->pkey_entry[i]));
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"P_Key table dump:\n"
|
|
Packit |
13e616 |
"\t\t\tport_guid...........0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\tblock_num...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\tport_num............%u\n\tP_Key Table: %s\n",
|
|
Packit |
13e616 |
cl_ntoh64(port_guid), block_num, port_num, buf_line);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_pkey_block(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint16_t block_num, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_pkey_table_t * p_pkey_tbl,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_pkey_block_to_buf(port_guid, block_num, port_num,
|
|
Packit |
13e616 |
p_pkey_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_pkey_block_v2(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint16_t block_num, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_pkey_table_t * p_pkey_tbl,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_pkey_block_to_buf(port_guid, block_num,
|
|
Packit |
13e616 |
port_num, p_pkey_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_slvl_map_table_to_buf(IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t in_port_num,
|
|
Packit |
13e616 |
IN uint8_t out_port_num,
|
|
Packit |
13e616 |
IN const ib_slvl_table_t * p_slvl_tbl,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_slvl_tbl)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char buf_line1[1024], buf_line2[1024];
|
|
Packit |
13e616 |
int n;
|
|
Packit |
13e616 |
uint8_t i;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < 16; i++)
|
|
Packit |
13e616 |
n += sprintf(buf_line1 + n, " %-2u |", i);
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < 16; i++)
|
|
Packit |
13e616 |
n += sprintf(buf_line2 + n, "0x%01X |",
|
|
Packit |
13e616 |
ib_slvl_table_get(p_slvl_tbl, i));
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SLtoVL dump:\n"
|
|
Packit |
13e616 |
"\t\t\tport_guid............0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\tin_port_num..........%u\n"
|
|
Packit |
13e616 |
"\t\t\tout_port_num.........%u\n\tSL: | %s\n\tVL: | %s\n",
|
|
Packit |
13e616 |
cl_ntoh64(port_guid), in_port_num, out_port_num,
|
|
Packit |
13e616 |
buf_line1, buf_line2);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_slvl_map_table(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t in_port_num, IN uint8_t out_port_num,
|
|
Packit |
13e616 |
IN const ib_slvl_table_t * p_slvl_tbl,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_slvl_map_table_to_buf(port_guid, in_port_num,
|
|
Packit |
13e616 |
out_port_num, p_slvl_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_slvl_map_table_v2(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t in_port_num, IN uint8_t out_port_num,
|
|
Packit |
13e616 |
IN const ib_slvl_table_t * p_slvl_tbl,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_slvl_map_table_to_buf(port_guid, in_port_num,
|
|
Packit |
13e616 |
out_port_num, p_slvl_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_vl_arb_table_to_buf(IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t block_num,
|
|
Packit |
13e616 |
IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_vl_arb_table_t * p_vla_tbl,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_vla_tbl)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char buf_line1[1024], buf_line2[1024];
|
|
Packit |
13e616 |
int i, n;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < 32; i++)
|
|
Packit |
13e616 |
n += sprintf(buf_line1 + n, " 0x%01X |",
|
|
Packit |
13e616 |
p_vla_tbl->vl_entry[i].vl);
|
|
Packit |
13e616 |
for (i = 0, n = 0; i < 32; i++)
|
|
Packit |
13e616 |
n += sprintf(buf_line2 + n, " 0x%01X |",
|
|
Packit |
13e616 |
p_vla_tbl->vl_entry[i].weight);
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"VLArb dump:\n" "\t\t\tport_guid...........0x%016"
|
|
Packit |
13e616 |
PRIx64 "\n" "\t\t\tblock_num...........0x%X\n"
|
|
Packit |
13e616 |
"\t\t\tport_num............%u\n\tVL : | %s\n\tWEIGHT:| %s\n",
|
|
Packit |
13e616 |
cl_ntoh64(port_guid), block_num, port_num, buf_line1,
|
|
Packit |
13e616 |
buf_line2);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_vl_arb_table(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t block_num, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_vl_arb_table_t * p_vla_tbl,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_vl_arb_table_to_buf(port_guid, block_num,
|
|
Packit |
13e616 |
port_num, p_vla_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_vl_arb_table_v2(IN osm_log_t * p_log, IN uint64_t port_guid,
|
|
Packit |
13e616 |
IN uint8_t block_num, IN uint8_t port_num,
|
|
Packit |
13e616 |
IN const ib_vl_arb_table_t * p_vla_tbl,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_vl_arb_table_to_buf(port_guid, block_num,
|
|
Packit |
13e616 |
port_num, p_vla_tbl, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_sm_info_to_buf(IN const ib_sm_info_t * p_smi,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_smi)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SMInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tguid....................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tsm_key..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tact_count...............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tpriority................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tsm_state................%u\n",
|
|
Packit |
13e616 |
cl_ntoh64(p_smi->guid), cl_ntoh64(p_smi->sm_key),
|
|
Packit |
13e616 |
cl_ntoh32(p_smi->act_count),
|
|
Packit |
13e616 |
ib_sminfo_get_priority(p_smi),
|
|
Packit |
13e616 |
ib_sminfo_get_state(p_smi));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sm_info(IN osm_log_t * p_log, IN const ib_sm_info_t * p_smi,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sm_info_to_buf(p_smi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, OSM_LOG_DEBUG, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sm_info_v2(IN osm_log_t * p_log, IN const ib_sm_info_t * p_smi,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sm_info_to_buf(p_smi, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, OSM_LOG_DEBUG, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_sm_info_record_to_buf(IN const ib_sminfo_record_t * p_smir,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_smir)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SMInfo Record dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tRID\n"
|
|
Packit |
13e616 |
"\t\t\t\tLid.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tReserved................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tSMInfo dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tguid....................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tsm_key..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tact_count...............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tpriority................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tsm_state................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_smir->lid), cl_ntoh16(p_smir->resv0),
|
|
Packit |
13e616 |
cl_ntoh64(p_smir->sm_info.guid),
|
|
Packit |
13e616 |
cl_ntoh64(p_smir->sm_info.sm_key),
|
|
Packit |
13e616 |
cl_ntoh32(p_smir->sm_info.act_count),
|
|
Packit |
13e616 |
ib_sminfo_get_priority(&p_smir->sm_info),
|
|
Packit |
13e616 |
ib_sminfo_get_state(&p_smir->sm_info));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sm_info_record(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_sminfo_record_t * p_smir,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sm_info_record_to_buf(p_smir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, OSM_LOG_DEBUG, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sm_info_record_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_sminfo_record_t * p_smir,
|
|
Packit |
13e616 |
IN const int file_id,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sm_info_record_to_buf(p_smir, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, OSM_LOG_DEBUG, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_notice_to_buf_generic(IN const ib_mad_notice_attr_t * p_ntci,
|
|
Packit |
13e616 |
OUT char * log_buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!log_buf || !p_ntci)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
char gid_str[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char gid_str2[INET6_ADDRSTRLEN];
|
|
Packit |
13e616 |
char buff[1024];
|
|
Packit |
13e616 |
int n;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
buff[0] = '\0';
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
/* immediate data based on the trap */
|
|
Packit |
13e616 |
switch (cl_ntoh16(p_ntci->g_or_v.generic.trap_num)) {
|
|
Packit |
13e616 |
case SM_GID_IN_SERVICE_TRAP: /* 64 */
|
|
Packit |
13e616 |
case SM_GID_OUT_OF_SERVICE_TRAP: /* 65 */
|
|
Packit |
13e616 |
case SM_MGID_CREATED_TRAP: /* 66 */
|
|
Packit |
13e616 |
case SM_MGID_DESTROYED_TRAP: /* 67 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tsrc_gid..................%s\n",
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_64_67.gid.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str));
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_LINK_STATE_CHANGED_TRAP: /* 128 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tsw_lid...................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_128.sw_lid));
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_LINK_INTEGRITY_THRESHOLD_TRAP: /* 129 */
|
|
Packit |
13e616 |
case SM_BUFFER_OVERRUN_THRESHOLD_TRAP: /* 130 */
|
|
Packit |
13e616 |
case SM_WATCHDOG_TIMER_EXPIRED_TRAP: /* 131 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tlid......................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_num.................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_129_131.lid),
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_129_131.port_num);
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_LOCAL_CHANGES_TRAP: /* 144 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tlid......................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlocal_changes............%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tnew_cap_mask.............0x%08x\n"
|
|
Packit |
13e616 |
"\t\t\t\tchange_flags.............0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tcap_mask2................0x%x\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_144.lid),
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_144.local_changes,
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_144.
|
|
Packit |
13e616 |
new_cap_mask),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_144.
|
|
Packit |
13e616 |
change_flgs),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_144.
|
|
Packit |
13e616 |
cap_mask2));
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_SYS_IMG_GUID_CHANGED_TRAP: /* 145 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tlid......................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tnew_sys_guid.............0x%016"
|
|
Packit |
13e616 |
PRIx64 "\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_145.
|
|
Packit |
13e616 |
lid),
|
|
Packit |
13e616 |
cl_ntoh64(p_ntci->data_details.ntc_145.
|
|
Packit |
13e616 |
new_sys_guid));
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_BAD_MKEY_TRAP: /* 256 */
|
|
Packit |
13e616 |
n = sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tlid......................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdrslid...................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tmethod...................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_id..................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_mod.................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key....................0x%016"
|
|
Packit |
13e616 |
PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tdr_notice................%d\n"
|
|
Packit |
13e616 |
"\t\t\t\tdr_path_truncated........%d\n"
|
|
Packit |
13e616 |
"\t\t\t\tdr_hop_count.............%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_256.lid),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_slid),
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.method,
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
attr_id),
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
attr_mod),
|
|
Packit |
13e616 |
cl_ntoh64(p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
mkey),
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_trunc_hop >> 7,
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_trunc_hop >> 6,
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_trunc_hop & 0x3f);
|
|
Packit |
13e616 |
n += snprintf(buff + n, sizeof(buff) - n,
|
|
Packit |
13e616 |
"Directed Path Dump of %u hop path:"
|
|
Packit |
13e616 |
"\n\t\t\t\tPath = ",
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_trunc_hop & 0x3f);
|
|
Packit |
13e616 |
n += sprint_uint8_arr(buff + n, sizeof(buff) - n,
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_rtn_path,
|
|
Packit |
13e616 |
(p_ntci->data_details.ntc_256.
|
|
Packit |
13e616 |
dr_trunc_hop & 0x3f) + 1);
|
|
Packit |
13e616 |
if (n >= sizeof(buff)) {
|
|
Packit |
13e616 |
n = sizeof(buff) - 2;
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
snprintf(buff + n, sizeof(buff) - n, "\n");
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_BAD_PKEY_TRAP: /* 257 */
|
|
Packit |
13e616 |
case SM_BAD_QKEY_TRAP: /* 258 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tlid1.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid2.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tkey......................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tsl.......................%d\n"
|
|
Packit |
13e616 |
"\t\t\t\tqp1......................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tqp2......................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid1.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid2.....................%s\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_257_258.
|
|
Packit |
13e616 |
lid1),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_257_258.
|
|
Packit |
13e616 |
lid2),
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_257_258.key),
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_257_258.
|
|
Packit |
13e616 |
qp1) >> 28,
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_257_258.
|
|
Packit |
13e616 |
qp1) & 0xffffff,
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_257_258.
|
|
Packit |
13e616 |
qp2) & 0xffffff,
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_257_258.gid1.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_257_258.gid2.raw, gid_str2,
|
|
Packit |
13e616 |
sizeof gid_str2));
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case SM_BAD_SWITCH_PKEY_TRAP: /* 259 */
|
|
Packit |
13e616 |
sprintf(buff,
|
|
Packit |
13e616 |
"\t\t\t\tdata_valid...............0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid1.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tlid2.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tpkey.....................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tsl.......................%d\n"
|
|
Packit |
13e616 |
"\t\t\t\tqp1......................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tqp2......................0x%x\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid1.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tgid2.....................%s\n"
|
|
Packit |
13e616 |
"\t\t\t\tsw_lid...................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tport_no..................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_259.
|
|
Packit |
13e616 |
data_valid),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_259.lid1),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_259.lid2),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_259.pkey),
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_259.
|
|
Packit |
13e616 |
sl_qp1) >> 24,
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_259.
|
|
Packit |
13e616 |
sl_qp1) & 0xffffff,
|
|
Packit |
13e616 |
cl_ntoh32(p_ntci->data_details.ntc_259.qp2),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_259.gid1.raw, gid_str,
|
|
Packit |
13e616 |
sizeof gid_str),
|
|
Packit |
13e616 |
inet_ntop(AF_INET6, p_ntci->data_details.
|
|
Packit |
13e616 |
ntc_259.gid2.raw, gid_str2,
|
|
Packit |
13e616 |
sizeof gid_str2),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->data_details.ntc_259.sw_lid),
|
|
Packit |
13e616 |
p_ntci->data_details.ntc_259.port_no);
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(log_buf,
|
|
Packit |
13e616 |
"Generic Notice dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\ttype.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tprod_type................%u (%s)\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrap_num.................%u\n%s",
|
|
Packit |
13e616 |
ib_notice_get_type(p_ntci),
|
|
Packit |
13e616 |
cl_ntoh32(ib_notice_get_prod_type(p_ntci)),
|
|
Packit |
13e616 |
ib_get_producer_type_str(ib_notice_get_prod_type
|
|
Packit |
13e616 |
(p_ntci)),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->g_or_v.generic.trap_num), buff);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_notice_to_buf(IN const ib_mad_notice_attr_t * p_ntci,
|
|
Packit |
13e616 |
OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_ntci)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"Vendor Notice dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\ttype.....................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tvendor...................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdevice_id................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(ib_notice_get_type(p_ntci)),
|
|
Packit |
13e616 |
cl_ntoh32(ib_notice_get_vend_id(p_ntci)),
|
|
Packit |
13e616 |
cl_ntoh16(p_ntci->g_or_v.vend.dev_id));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_notice(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_mad_notice_attr_t * p_ntci,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (ib_notice_is_generic(p_ntci))
|
|
Packit |
13e616 |
osm_dump_notice_to_buf_generic(p_ntci, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_notice_to_buf(p_ntci, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_notice_v2(IN osm_log_t * p_log,
|
|
Packit |
13e616 |
IN const ib_mad_notice_attr_t * p_ntci,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (ib_notice_is_generic(p_ntci))
|
|
Packit |
13e616 |
osm_dump_notice_to_buf_generic(p_ntci, buf);
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
osm_dump_notice_to_buf(p_ntci, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_dr_smp_to_buf(IN const ib_smp_t * p_smp, OUT char * buf,
|
|
Packit |
13e616 |
IN size_t buf_size)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_smp)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
unsigned n;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n = sprintf(buf,
|
|
Packit |
13e616 |
"SMP dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_ver................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmgmt_class..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclass_ver...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmethod..................0x%X (%s)\n",
|
|
Packit |
13e616 |
p_smp->base_ver, p_smp->mgmt_class,
|
|
Packit |
13e616 |
p_smp->class_ver, p_smp->method,
|
|
Packit |
13e616 |
ib_get_sm_method_str(p_smp->method));
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_smp->mgmt_class == IB_MCLASS_SUBN_DIR) {
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\t\t\t\tD bit...................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tstatus..................0x%X\n",
|
|
Packit |
13e616 |
ib_smp_is_d(p_smp),
|
|
Packit |
13e616 |
cl_ntoh16(ib_smp_get_status(p_smp)));
|
|
Packit |
13e616 |
} else {
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\t\t\t\tstatus..................0x%X\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_smp->status));
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\t\t\t\thop_ptr.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\thop_count...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrans_id................0x%" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_id.................0x%X (%s)\n"
|
|
Packit |
13e616 |
"\t\t\t\tresv....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_mod................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tm_key...................0x%016" PRIx64
|
|
Packit |
13e616 |
"\n", p_smp->hop_ptr, p_smp->hop_count,
|
|
Packit |
13e616 |
cl_ntoh64(p_smp->trans_id),
|
|
Packit |
13e616 |
cl_ntoh16(p_smp->attr_id),
|
|
Packit |
13e616 |
ib_get_sm_attr_str(p_smp->attr_id),
|
|
Packit |
13e616 |
cl_ntoh16(p_smp->resv),
|
|
Packit |
13e616 |
cl_ntoh32(p_smp->attr_mod),
|
|
Packit |
13e616 |
cl_ntoh64(p_smp->m_key));
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (p_smp->mgmt_class == IB_MCLASS_SUBN_DIR) {
|
|
Packit |
13e616 |
uint32_t i;
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\t\t\t\tdr_slid.................%u\n"
|
|
Packit |
13e616 |
"\t\t\t\tdr_dlid.................%u\n",
|
|
Packit |
13e616 |
cl_ntoh16(p_smp->dr_slid),
|
|
Packit |
13e616 |
cl_ntoh16(p_smp->dr_dlid));
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\n\t\t\t\tInitial path: ");
|
|
Packit |
13e616 |
n += sprint_uint8_arr(buf + n, buf_size - n,
|
|
Packit |
13e616 |
p_smp->initial_path,
|
|
Packit |
13e616 |
p_smp->hop_count + 1);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\n\t\t\t\tReturn path: ");
|
|
Packit |
13e616 |
n += sprint_uint8_arr(buf + n, buf_size - n,
|
|
Packit |
13e616 |
p_smp->return_path,
|
|
Packit |
13e616 |
p_smp->hop_count + 1);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\n\t\t\t\tReserved: ");
|
|
Packit |
13e616 |
for (i = 0; i < 7; i++) {
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"[%0X]", p_smp->resv1[i]);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n, "\n");
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
for (i = 0; i < 64; i += 16) {
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\n\t\t\t\t%02X %02X %02X %02X "
|
|
Packit |
13e616 |
"%02X %02X %02X %02X"
|
|
Packit |
13e616 |
" %02X %02X %02X %02X %02X %02X %02X %02X\n",
|
|
Packit |
13e616 |
p_smp->data[i],
|
|
Packit |
13e616 |
p_smp->data[i + 1],
|
|
Packit |
13e616 |
p_smp->data[i + 2],
|
|
Packit |
13e616 |
p_smp->data[i + 3],
|
|
Packit |
13e616 |
p_smp->data[i + 4],
|
|
Packit |
13e616 |
p_smp->data[i + 5],
|
|
Packit |
13e616 |
p_smp->data[i + 6],
|
|
Packit |
13e616 |
p_smp->data[i + 7],
|
|
Packit |
13e616 |
p_smp->data[i + 8],
|
|
Packit |
13e616 |
p_smp->data[i + 9],
|
|
Packit |
13e616 |
p_smp->data[i + 10],
|
|
Packit |
13e616 |
p_smp->data[i + 11],
|
|
Packit |
13e616 |
p_smp->data[i + 12],
|
|
Packit |
13e616 |
p_smp->data[i + 13],
|
|
Packit |
13e616 |
p_smp->data[i + 14],
|
|
Packit |
13e616 |
p_smp->data[i + 15]);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
} else {
|
|
Packit |
13e616 |
/* not a Direct Route so provide source and destination lids */
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n,
|
|
Packit |
13e616 |
"\t\t\t\tMAD IS LID ROUTED\n");
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_dr_smp(IN osm_log_t * p_log, IN const ib_smp_t * p_smp,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_dr_smp_to_buf(p_smp, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_dr_smp_v2(IN osm_log_t * p_log, IN const ib_smp_t * p_smp,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_dr_smp_to_buf(p_smp, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_sa_mad_to_buf(IN const ib_sa_mad_t * p_mad, OUT char * buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_mad)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
/* make sure the mad is valid */
|
|
Packit |
13e616 |
if (p_mad == NULL) {
|
|
Packit |
13e616 |
sprintf(buf, "NULL MAD POINTER\n");
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprintf(buf,
|
|
Packit |
13e616 |
"SA MAD dump:\n"
|
|
Packit |
13e616 |
"\t\t\t\tbase_ver................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmgmt_class..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tclass_ver...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tmethod..................0x%X (%s)\n"
|
|
Packit |
13e616 |
"\t\t\t\tstatus..................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresv....................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\ttrans_id................0x%" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_id.................0x%X (%s)\n"
|
|
Packit |
13e616 |
"\t\t\t\tresv1...................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_mod................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trmpp_version............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trmpp_type...............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trmpp_flags..............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\trmpp_status.............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tseg_num.................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tpayload_len/new_win.....0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tsm_key..................0x%016" PRIx64 "\n"
|
|
Packit |
13e616 |
"\t\t\t\tattr_offset.............0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tresv2...................0x%X\n"
|
|
Packit |
13e616 |
"\t\t\t\tcomp_mask...............0x%016" PRIx64 "\n",
|
|
Packit |
13e616 |
p_mad->base_ver, p_mad->mgmt_class, p_mad->class_ver,
|
|
Packit |
13e616 |
p_mad->method, ib_get_sa_method_str(p_mad->method),
|
|
Packit |
13e616 |
cl_ntoh16(p_mad->status), cl_ntoh16(p_mad->resv),
|
|
Packit |
13e616 |
cl_ntoh64(p_mad->trans_id), cl_ntoh16(p_mad->attr_id),
|
|
Packit |
13e616 |
ib_get_sa_attr_str(p_mad->attr_id),
|
|
Packit |
13e616 |
cl_ntoh16(p_mad->resv1), cl_ntoh32(p_mad->attr_mod),
|
|
Packit |
13e616 |
p_mad->rmpp_version, p_mad->rmpp_type,
|
|
Packit |
13e616 |
p_mad->rmpp_flags, p_mad->rmpp_status,
|
|
Packit |
13e616 |
cl_ntoh32(p_mad->seg_num),
|
|
Packit |
13e616 |
cl_ntoh32(p_mad->paylen_newwin),
|
|
Packit |
13e616 |
cl_ntoh64(p_mad->sm_key), cl_ntoh16(p_mad->attr_offset),
|
|
Packit |
13e616 |
cl_ntoh16(p_mad->resv3), cl_ntoh64(p_mad->comp_mask));
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
strcat(buf, "\n");
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sa_mad(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_mad,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sa_mad_to_buf(p_mad, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s\n", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_sa_mad_v2(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_mad,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_sa_mad_to_buf(p_mad, buf);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_dr_path_to_buf(IN const osm_dr_path_t * p_path,
|
|
Packit |
13e616 |
OUT char * buf, IN size_t buf_size)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_path)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
unsigned n = 0;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n = sprintf(buf, "Directed Path Dump of %u hop path: "
|
|
Packit |
13e616 |
"Path = ", p_path->hop_count);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
sprint_uint8_arr(buf + n, buf_size - n, p_path->path,
|
|
Packit |
13e616 |
p_path->hop_count + 1);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_dr_path(IN osm_log_t * p_log, IN const osm_dr_path_t * p_path,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_dr_path_to_buf(p_path, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s\n", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_dr_path_v2(IN osm_log_t * p_log, IN const osm_dr_path_t * p_path,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_dr_path_to_buf(p_path, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s\n", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static void osm_dump_smp_dr_path_to_buf(IN const ib_smp_t * p_smp,
|
|
Packit |
13e616 |
OUT char * buf, IN size_t buf_size)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (!buf || !p_smp)
|
|
Packit |
13e616 |
return;
|
|
Packit |
13e616 |
else {
|
|
Packit |
13e616 |
unsigned n;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n = sprintf(buf, "Received SMP on a %u hop path: "
|
|
Packit |
13e616 |
"Initial path = ", p_smp->hop_count);
|
|
Packit |
13e616 |
n += sprint_uint8_arr(buf + n, buf_size - n,
|
|
Packit |
13e616 |
p_smp->initial_path,
|
|
Packit |
13e616 |
p_smp->hop_count + 1);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
n += snprintf(buf + n, buf_size - n, ", Return path = ");
|
|
Packit |
13e616 |
n += sprint_uint8_arr(buf + n, buf_size - n,
|
|
Packit |
13e616 |
p_smp->return_path, p_smp->hop_count + 1);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_smp_dr_path(IN osm_log_t * p_log, IN const ib_smp_t * p_smp,
|
|
Packit |
13e616 |
IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active(p_log, log_level)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_smp_dr_path_to_buf(p_smp, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log(p_log, log_level, "%s\n", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_smp_dr_path_v2(IN osm_log_t * p_log, IN const ib_smp_t * p_smp,
|
|
Packit |
13e616 |
IN const int file_id, IN osm_log_level_t log_level)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (osm_log_is_active_v2(p_log, log_level, file_id)) {
|
|
Packit |
13e616 |
char buf[BUF_SIZE];
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_dump_smp_dr_path_to_buf(p_smp, buf, BUF_SIZE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
osm_log_v2(p_log, log_level, file_id, "%s\n", buf);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
void osm_dump_dr_path_as_buf(IN size_t max_len,
|
|
Packit |
13e616 |
IN const osm_dr_path_t * p_path,
|
|
Packit |
13e616 |
OUT char* buf)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
sprint_uint8_arr(buf, max_len, p_path->path, p_path->hop_count + 1);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *sm_signal_str[] = {
|
|
Packit |
13e616 |
"OSM_SIGNAL_NONE", /* 0 */
|
|
Packit |
13e616 |
"OSM_SIGNAL_SWEEP", /* 1 */
|
|
Packit |
13e616 |
"OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST", /* 2 */
|
|
Packit |
13e616 |
"OSM_SIGNAL_PERFMGR_SWEEP", /* 3 */
|
|
Packit |
13e616 |
"OSM_SIGNAL_GUID_PROCESS_REQUEST", /* 4 */
|
|
Packit |
13e616 |
"UNKNOWN SIGNAL!!" /* 5 */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_sm_signal_str(IN osm_signal_t signal)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (signal > OSM_SIGNAL_MAX)
|
|
Packit |
13e616 |
signal = OSM_SIGNAL_MAX;
|
|
Packit |
13e616 |
return sm_signal_str[signal];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *disp_msg_str[] = {
|
|
Packit |
13e616 |
"OSM_MSG_NONE",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_NODE_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PORT_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SWITCH_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_GUID_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_NODE_DESC",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_NODE_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PORTINFO_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SERVICE_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PATH_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_MCMEMBER_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_LINK_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SMINFO_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_CLASS_PORT_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_INFORM_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_LFT_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_LFT",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SM_INFO",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_NOTICE",
|
|
Packit |
13e616 |
"OSM_MSG_LIGHT_SWEEP_FAIL",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_MFT",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PKEY_TBL_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_VL_ARB_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SLVL_TBL_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PKEY",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_VL_ARB",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SLVL",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_GUIDINFO_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_INFORM_INFO_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_SWITCH_INFO_RECORD",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_MFT_RECORD",
|
|
Packit |
13e616 |
#if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
|
|
Packit |
13e616 |
"OSM_MSG_MAD_MULTIPATH_RECORD",
|
|
Packit |
13e616 |
#endif
|
|
Packit |
13e616 |
"OSM_MSG_MAD_PORT_COUNTERS",
|
|
Packit |
13e616 |
"OSM_MSG_MAD_MLNX_EXT_PORT_INFO",
|
|
Packit |
13e616 |
"UNKNOWN!!"
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_disp_msg_str(IN cl_disp_msgid_t msg)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (msg >= OSM_MSG_MAX)
|
|
Packit |
13e616 |
msg = OSM_MSG_MAX-1;
|
|
Packit |
13e616 |
return disp_msg_str[msg];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *port_state_str_fixed_width[] = {
|
|
Packit |
13e616 |
"NOC",
|
|
Packit |
13e616 |
"DWN",
|
|
Packit |
13e616 |
"INI",
|
|
Packit |
13e616 |
"ARM",
|
|
Packit |
13e616 |
"ACT",
|
|
Packit |
13e616 |
"???"
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_port_state_str_fixed_width(IN uint8_t port_state)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (port_state > IB_LINK_ACTIVE)
|
|
Packit |
13e616 |
port_state = IB_LINK_ACTIVE + 1;
|
|
Packit |
13e616 |
return port_state_str_fixed_width[port_state];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *node_type_str_fixed_width[] = {
|
|
Packit |
13e616 |
"??",
|
|
Packit |
13e616 |
"CA",
|
|
Packit |
13e616 |
"SW",
|
|
Packit |
13e616 |
"RT",
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_node_type_str_fixed_width(IN uint8_t node_type)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (node_type > IB_NODE_TYPE_ROUTER)
|
|
Packit |
13e616 |
node_type = 0;
|
|
Packit |
13e616 |
return node_type_str_fixed_width[node_type];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_manufacturer_str(IN uint64_t guid_ho)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
/* note that the max vendor string length is 11 */
|
|
Packit |
13e616 |
static const char *intel_str = "Intel";
|
|
Packit |
13e616 |
static const char *mellanox_str = "Mellanox";
|
|
Packit |
13e616 |
static const char *redswitch_str = "Redswitch";
|
|
Packit |
13e616 |
static const char *silverstorm_str = "SilverStorm";
|
|
Packit |
13e616 |
static const char *topspin_str = "Topspin";
|
|
Packit |
13e616 |
static const char *fujitsu_str = "Fujitsu";
|
|
Packit |
13e616 |
static const char *voltaire_str = "Voltaire";
|
|
Packit |
13e616 |
static const char *yotta_str = "YottaYotta";
|
|
Packit |
13e616 |
static const char *pathscale_str = "PathScale";
|
|
Packit |
13e616 |
static const char *ibm_str = "IBM";
|
|
Packit |
13e616 |
static const char *divergenet_str = "DivergeNet";
|
|
Packit |
13e616 |
static const char *flextronics_str = "Flextronics";
|
|
Packit |
13e616 |
static const char *agilent_str = "Agilent";
|
|
Packit |
13e616 |
static const char *obsidian_str = "Obsidian";
|
|
Packit |
13e616 |
static const char *baymicro_str = "BayMicro";
|
|
Packit |
13e616 |
static const char *lsilogic_str = "LSILogic";
|
|
Packit |
13e616 |
static const char *ddn_str = "DataDirect";
|
|
Packit |
13e616 |
static const char *panta_str = "Panta";
|
|
Packit |
13e616 |
static const char *hp_str = "HP";
|
|
Packit |
13e616 |
static const char *rioworks_str = "Rioworks";
|
|
Packit |
13e616 |
static const char *sun_str = "Sun";
|
|
Packit |
13e616 |
static const char *leafntwks_str = "3LeafNtwks";
|
|
Packit |
13e616 |
static const char *xsigo_str = "Xsigo";
|
|
Packit |
13e616 |
static const char *dell_str = "Dell";
|
|
Packit |
13e616 |
static const char *supermicro_str = "SuperMicro";
|
|
Packit |
13e616 |
static const char *openib_str = "OpenIB";
|
|
Packit |
13e616 |
static const char *unknown_str = "Unknown";
|
|
Packit |
13e616 |
static const char *bull_str = "Bull";
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
switch ((uint32_t) (guid_ho >> (5 * 8))) {
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_INTEL:
|
|
Packit |
13e616 |
return intel_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX2:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX3:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX4:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX5:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX6:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX7:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX8:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_MELLANOX9:
|
|
Packit |
13e616 |
return mellanox_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_REDSWITCH:
|
|
Packit |
13e616 |
return redswitch_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_SILVERSTORM:
|
|
Packit |
13e616 |
return silverstorm_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_TOPSPIN:
|
|
Packit |
13e616 |
return topspin_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_FUJITSU:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_FUJITSU2:
|
|
Packit |
13e616 |
return fujitsu_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_VOLTAIRE:
|
|
Packit |
13e616 |
return voltaire_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_YOTTAYOTTA:
|
|
Packit |
13e616 |
return yotta_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_PATHSCALE:
|
|
Packit |
13e616 |
return pathscale_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_IBM:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_IBM2:
|
|
Packit |
13e616 |
return ibm_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_DIVERGENET:
|
|
Packit |
13e616 |
return divergenet_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_FLEXTRONICS:
|
|
Packit |
13e616 |
return flextronics_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_AGILENT:
|
|
Packit |
13e616 |
return agilent_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_OBSIDIAN:
|
|
Packit |
13e616 |
return obsidian_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_BAYMICRO:
|
|
Packit |
13e616 |
return baymicro_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_LSILOGIC:
|
|
Packit |
13e616 |
return lsilogic_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_DDN:
|
|
Packit |
13e616 |
return ddn_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_PANTA:
|
|
Packit |
13e616 |
return panta_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_HP:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_HP2:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_HP3:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_HP4:
|
|
Packit |
13e616 |
return hp_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_RIOWORKS:
|
|
Packit |
13e616 |
return rioworks_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_SUN:
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_SUN2:
|
|
Packit |
13e616 |
return sun_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_3LEAFNTWKS:
|
|
Packit |
13e616 |
return leafntwks_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_XSIGO:
|
|
Packit |
13e616 |
return xsigo_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_DELL:
|
|
Packit |
13e616 |
return dell_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_SUPERMICRO:
|
|
Packit |
13e616 |
return supermicro_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_OPENIB:
|
|
Packit |
13e616 |
return openib_str;
|
|
Packit |
13e616 |
case OSM_VENDOR_ID_BULL:
|
|
Packit |
13e616 |
return bull_str;
|
|
Packit |
13e616 |
default:
|
|
Packit |
13e616 |
return unknown_str;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *mtu_str_fixed_width[] = {
|
|
Packit |
13e616 |
"??? ",
|
|
Packit |
13e616 |
"256 ",
|
|
Packit |
13e616 |
"512 ",
|
|
Packit |
13e616 |
"1024",
|
|
Packit |
13e616 |
"2048",
|
|
Packit |
13e616 |
"4096"
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_mtu_str(IN uint8_t mtu)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (mtu > IB_MTU_LEN_4096)
|
|
Packit |
13e616 |
return mtu_str_fixed_width[0];
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
return mtu_str_fixed_width[mtu];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *lwa_str_fixed_width[] = {
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"1x ",
|
|
Packit |
13e616 |
"4x ",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"8x ",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"12x",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"???",
|
|
Packit |
13e616 |
"2x "
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_lwa_str(IN uint8_t lwa)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (lwa > 16)
|
|
Packit |
13e616 |
return lwa_str_fixed_width[0];
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
return lwa_str_fixed_width[lwa];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *lsa_str_fixed_width[] = {
|
|
Packit |
13e616 |
"Ext ",
|
|
Packit |
13e616 |
"2.5 ",
|
|
Packit |
13e616 |
"5 ",
|
|
Packit |
13e616 |
"????",
|
|
Packit |
13e616 |
"10 "
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *lsea_str_fixed_width[] = {
|
|
Packit |
13e616 |
"Std ",
|
|
Packit |
13e616 |
"14 ",
|
|
Packit |
13e616 |
"25 ",
|
|
Packit |
13e616 |
"????",
|
|
Packit |
13e616 |
"50 "
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state,
|
|
Packit |
13e616 |
IN uint8_t fdr10)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (lsa > IB_LINK_SPEED_ACTIVE_10 || state == IB_LINK_DOWN)
|
|
Packit |
13e616 |
return lsa_str_fixed_width[3];
|
|
Packit |
13e616 |
if (lsea == IB_LINK_SPEED_EXT_ACTIVE_NONE) {
|
|
Packit |
13e616 |
if (fdr10)
|
|
Packit |
13e616 |
return "FDR10";
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
return lsa_str_fixed_width[lsa];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
if (lsea > IB_LINK_SPEED_EXT_ACTIVE_50)
|
|
Packit |
13e616 |
return lsa_str_fixed_width[3];
|
|
Packit |
13e616 |
return lsea_str_fixed_width[lsea];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *sm_mgr_signal_str[] = {
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_NONE", /* 0 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_DISCOVERY_COMPLETED", /* 1 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_POLLING_TIMEOUT", /* 2 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_DISCOVER", /* 3 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_DISABLE", /* 4 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_HANDOVER", /* 5 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_HANDOVER_SENT", /* 6 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_ACKNOWLEDGE", /* 7 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_STANDBY", /* 8 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED", /* 9 */
|
|
Packit |
13e616 |
"OSM_SM_SIGNAL_WAIT_FOR_HANDOVER", /* 10 */
|
|
Packit |
13e616 |
"UNKNOWN STATE!!" /* 11 */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_sm_mgr_signal_str(IN osm_sm_signal_t signal)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (signal > OSM_SM_SIGNAL_MAX)
|
|
Packit |
13e616 |
signal = OSM_SM_SIGNAL_MAX;
|
|
Packit |
13e616 |
return sm_mgr_signal_str[signal];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static const char *sm_mgr_state_str[] = {
|
|
Packit |
13e616 |
"NOTACTIVE", /* 0 */
|
|
Packit |
13e616 |
"DISCOVERING", /* 1 */
|
|
Packit |
13e616 |
"STANDBY", /* 2 */
|
|
Packit |
13e616 |
"MASTER", /* 3 */
|
|
Packit |
13e616 |
"UNKNOWN STATE!!" /* 4 */
|
|
Packit |
13e616 |
};
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
const char *osm_get_sm_mgr_state_str(IN uint16_t state)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
return state < ARR_SIZE(sm_mgr_state_str) ?
|
|
Packit |
13e616 |
sm_mgr_state_str[state] :
|
|
Packit |
13e616 |
sm_mgr_state_str[ARR_SIZE(sm_mgr_state_str) - 1];
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_mtu_is_valid(IN const int mtu)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (mtu < IB_MIN_MTU || mtu > IB_MAX_MTU)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
return 1;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_rate_is_valid(IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
if (rate < IB_MIN_RATE || rate > IB_MAX_RATE)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
return 1;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_path_compare_rates(IN const int rate1, IN const int rate2)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int orate1 = 0, orate2 = 0;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
CL_ASSERT(rate1 >= IB_MIN_RATE && rate1 <= IB_MAX_RATE);
|
|
Packit |
13e616 |
CL_ASSERT(rate2 >= IB_MIN_RATE && rate2 <= IB_MAX_RATE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (rate1 <= IB_MAX_RATE)
|
|
Packit |
13e616 |
orate1 = ordered_rates[rate1];
|
|
Packit |
13e616 |
if (rate2 <= IB_MAX_RATE)
|
|
Packit |
13e616 |
orate2 = ordered_rates[rate2];
|
|
Packit |
13e616 |
if (orate1 < orate2)
|
|
Packit |
13e616 |
return -1;
|
|
Packit |
13e616 |
if (orate1 == orate2)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
return 1;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
static int find_ordered_rate(IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int i;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
for (i = IB_MIN_RATE; i <= IB_MAX_RATE; i++) {
|
|
Packit |
13e616 |
if (ordered_rates[i] == rate)
|
|
Packit |
13e616 |
return i;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_path_rate_get_prev(IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int orate;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (rate <= IB_MIN_RATE)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
if (rate > IB_MAX_RATE)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
orate = ordered_rates[rate];
|
|
Packit |
13e616 |
orate--;
|
|
Packit |
13e616 |
return find_ordered_rate(orate);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_path_rate_get_next(IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int orate;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (rate < IB_MIN_RATE)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
if (rate >= IB_MAX_RATE)
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
orate = ordered_rates[rate];
|
|
Packit |
13e616 |
orate++;
|
|
Packit |
13e616 |
return find_ordered_rate(orate);
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_path_rate_max_12xedr(IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
if (rate <= IB_PATH_RECORD_RATE_300_GBS)
|
|
Packit |
13e616 |
return rate;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
switch (rate) {
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_28_GBS:
|
|
Packit |
13e616 |
return IB_PATH_RECORD_RATE_25_GBS;
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_50_GBS:
|
|
Packit |
13e616 |
return IB_PATH_RECORD_RATE_40_GBS;
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_400_GBS:
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_600_GBS:
|
|
Packit |
13e616 |
return IB_PATH_RECORD_RATE_300_GBS;
|
|
Packit |
13e616 |
default:
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
return 0;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
int ib_path_rate_2x_hdr_fixups(IN const ib_port_info_t * p_pi,
|
|
Packit |
13e616 |
IN const int rate)
|
|
Packit |
13e616 |
{
|
|
Packit |
13e616 |
int new_rate = rate;
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
switch (rate) {
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_28_GBS:
|
|
Packit |
13e616 |
/* 2x not supported but 2x only rate */
|
|
Packit |
13e616 |
if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) ||
|
|
Packit |
13e616 |
(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 &&
|
|
Packit |
13e616 |
!(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED))) {
|
|
Packit |
13e616 |
if (p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)
|
|
Packit |
13e616 |
new_rate = IB_PATH_RECORD_RATE_25_GBS;
|
|
Packit |
13e616 |
else
|
|
Packit |
13e616 |
new_rate = IB_PATH_RECORD_RATE_20_GBS;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_50_GBS:
|
|
Packit |
13e616 |
/* neither 2x or HDR supported */
|
|
Packit |
13e616 |
if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) ||
|
|
Packit |
13e616 |
(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 &&
|
|
Packit |
13e616 |
!(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED) &&
|
|
Packit |
13e616 |
!(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED)))
|
|
Packit |
13e616 |
new_rate = IB_PATH_RECORD_RATE_40_GBS;
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_400_GBS:
|
|
Packit |
13e616 |
case IB_PATH_RECORD_RATE_600_GBS:
|
|
Packit |
13e616 |
/* HDR not supported but HDR only rate */
|
|
Packit |
13e616 |
if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) ||
|
|
Packit |
13e616 |
(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 &&
|
|
Packit |
13e616 |
!(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED)))
|
|
Packit |
13e616 |
new_rate = IB_PATH_RECORD_RATE_300_GBS;
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
default:
|
|
Packit |
13e616 |
break;
|
|
Packit |
13e616 |
}
|
|
Packit |
13e616 |
|
|
Packit |
13e616 |
return new_rate;
|
|
Packit |
13e616 |
}
|