Blame include/opensm/osm_helper.h

Packit 13e616
/*
Packit 13e616
 * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
Packit 13e616
 * Copyright (c) 2002-2011 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
 *
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
#ifndef _OSM_HELPER_H_
Packit 13e616
#define _OSM_HELPER_H_
Packit 13e616
Packit 13e616
#include <iba/ib_types.h>
Packit 13e616
#include <complib/cl_dispatcher.h>
Packit 13e616
#include <opensm/osm_base.h>
Packit 13e616
#include <opensm/osm_log.h>
Packit 13e616
#include <opensm/osm_msgdef.h>
Packit 13e616
#include <opensm/osm_path.h>
Packit 13e616
Packit 13e616
#ifdef __cplusplus
Packit 13e616
#  define BEGIN_C_DECLS extern "C" {
Packit 13e616
#  define END_C_DECLS   }
Packit 13e616
#else				/* !__cplusplus */
Packit 13e616
#  define BEGIN_C_DECLS
Packit 13e616
#  define END_C_DECLS
Packit 13e616
#endif				/* __cplusplus */
Packit 13e616
Packit 13e616
BEGIN_C_DECLS
Packit 13e616
/*
Packit 13e616
 * Abstract:
Packit 13e616
 * 	Declaration of helpful functions.
Packit 13e616
 */
Packit 13e616
/****f* OpenSM: Helper/ib_get_sa_method_str
Packit 13e616
 * NAME
Packit 13e616
 *	ib_get_sa_method_str
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 *	Returns a string for the specified SA Method value.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
const char *ib_get_sa_method_str(IN uint8_t method);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 *	method
Packit 13e616
 *		[in] Network order METHOD ID value.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 *	Pointer to the method string.
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/ib_get_sm_method_str
Packit 13e616
* NAME
Packit 13e616
*	ib_get_sm_method_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SM Method value.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *ib_get_sm_method_str(IN uint8_t method);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	method
Packit 13e616
*		[in] Network order METHOD ID value.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the method string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/ib_get_sm_attr_str
Packit 13e616
* NAME
Packit 13e616
*	ib_get_sm_attr_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SM attribute value.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *ib_get_sm_attr_str(IN ib_net16_t attr);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	attr
Packit 13e616
*		[in] Network order attribute ID value.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the attribute string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/ib_get_sa_attr_str
Packit 13e616
* NAME
Packit 13e616
*	ib_get_sa_attr_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SA attribute value.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *ib_get_sa_attr_str(IN ib_net16_t attr);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	attr
Packit 13e616
*		[in] Network order attribute ID value.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the attribute string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/ib_get_trap_str
Packit 13e616
* NAME
Packit 13e616
*	ib_get_trap_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a name for the specified trap.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *ib_get_trap_str(uint16_t trap_num);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	trap_num
Packit 13e616
*		[in] Network order trap number.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Name of the trap.
Packit 13e616
*
Packit 13e616
*********/
Packit 13e616
Packit 13e616
extern const ib_gid_t ib_zero_gid;
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_gid_is_notzero
Packit 13e616
* NAME
Packit 13e616
*	ib_gid_is_notzero
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a boolean indicating whether or not the GID is zero.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
static inline boolean_t ib_gid_is_notzero(IN const ib_gid_t * p_gid)
Packit 13e616
{
Packit 13e616
	return memcmp(p_gid, &ib_zero_gid, sizeof(*p_gid));
Packit 13e616
}
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_gid
Packit 13e616
*		[in] Pointer to the GID object.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns TRUE if GID is not zero.
Packit 13e616
*	FALSE otherwise.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*	ib_gid_t
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/osm_dump_port_info
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_port_info
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the PortInfo attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
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,
Packit 13e616
			   IN const int file_id,
Packit 13e616
			   IN osm_log_level_t log_level);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object
Packit 13e616
*
Packit 13e616
*	node_guid
Packit 13e616
*		[in] Node GUID that owns this port.
Packit 13e616
*
Packit 13e616
*	port_guid
Packit 13e616
*		[in] Port GUID for this port.
Packit 13e616
*
Packit 13e616
*	port_num
Packit 13e616
*		[in] Port number for this port.
Packit 13e616
*
Packit 13e616
*	p_pi
Packit 13e616
*		[in] Pointer to the PortInfo attribute
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/osm_dump_guid_info
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_guid_info
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the GUIDInfo attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
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
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object.
Packit 13e616
*
Packit 13e616
*	node_guid
Packit 13e616
*		[in] Node GUID that owns this port.
Packit 13e616
*
Packit 13e616
*	port_guid
Packit 13e616
*		[in] Port GUID for this port.
Packit 13e616
*
Packit 13e616
*	block_num
Packit 13e616
*		[in] Block number.
Packit 13e616
*
Packit 13e616
*	p_gi
Packit 13e616
*		[in] Pointer to the GUIDInfo attribute.
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
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
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,
Packit 13e616
				    IN osm_log_level_t log_level);
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
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
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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, IN osm_log_level_t log_level);
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
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
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
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
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
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
/****f* OpenSM: Helper/osm_dump_port_info
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_port_info
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the PortInfo attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
void osm_dump_node_info(IN osm_log_t * p_log,
Packit 13e616
			IN const ib_node_info_t * p_ni,
Packit 13e616
			IN osm_log_level_t log_level);
Packit 13e616
Packit 13e616
void osm_dump_node_info_v2(IN osm_log_t * p_log,
Packit 13e616
			   IN const ib_node_info_t * p_ni,
Packit 13e616
			   IN const int file_id,
Packit 13e616
			   IN osm_log_level_t log_level);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object
Packit 13e616
*
Packit 13e616
*	p_ni
Packit 13e616
*		[in] Pointer to the NodeInfo attribute
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/osm_dump_sm_info
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_sm_info
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the SMInfo attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
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
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object
Packit 13e616
*
Packit 13e616
*	p_smi
Packit 13e616
*		[in] Pointer to the SMInfo attribute
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/osm_dump_switch_info
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_switch_info
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the SwitchInfo attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
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
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object
Packit 13e616
*
Packit 13e616
*	p_si
Packit 13e616
*		[in] Pointer to the SwitchInfo attribute
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/osm_dump_notice
Packit 13e616
* NAME
Packit 13e616
*	osm_dump_notice
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Dumps the Notice attribute to the log.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
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,
Packit 13e616
			IN osm_log_level_t log_level);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_log
Packit 13e616
*		[in] Pointer to the osm_log_t object
Packit 13e616
*
Packit 13e616
*	p_ntci
Packit 13e616
*		[in] Pointer to the Notice attribute
Packit 13e616
*
Packit 13e616
*	log_level
Packit 13e616
*		[in] Log verbosity level with which to dump the data.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	None.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/osm_get_disp_msg_str
Packit 13e616
* NAME
Packit 13e616
*	osm_get_disp_msg_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified Dispatcher message.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *osm_get_disp_msg_str(IN cl_disp_msgid_t msg);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	msg
Packit 13e616
*		[in] Dispatcher message ID value.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the message description string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
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 level);
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 level);
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 level);
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 level);
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 level);
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 level);
Packit 13e616
Packit 13e616
void osm_dump_sa_mad(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp,
Packit 13e616
		     IN osm_log_level_t level);
Packit 13e616
Packit 13e616
void osm_dump_sa_mad_v2(IN osm_log_t * p_log, IN const ib_sa_mad_t * p_smp,
Packit 13e616
			IN const int file_id, IN osm_log_level_t level);
Packit 13e616
Packit 13e616
void osm_dump_dr_path_as_buf(IN size_t max_len, IN const osm_dr_path_t * p_path,
Packit 13e616
			     OUT char* buf);
Packit 13e616
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/osm_get_sm_signal_str
Packit 13e616
* NAME
Packit 13e616
*	osm_get_sm_signal_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SM state.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *osm_get_sm_signal_str(IN osm_signal_t signal);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	state
Packit 13e616
*		[in] Signal value
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the signal description string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
const char *osm_get_port_state_str_fixed_width(IN uint8_t port_state);
Packit 13e616
Packit 13e616
const char *osm_get_node_type_str_fixed_width(IN uint8_t node_type);
Packit 13e616
Packit 13e616
const char *osm_get_manufacturer_str(IN uint64_t guid_ho);
Packit 13e616
Packit 13e616
const char *osm_get_mtu_str(IN uint8_t mtu);
Packit 13e616
Packit 13e616
const char *osm_get_lwa_str(IN uint8_t lwa);
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
/****f* IBA Base: Types/osm_get_sm_mgr_signal_str
Packit 13e616
* NAME
Packit 13e616
*	osm_get_sm_mgr_signal_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SM manager signal.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *osm_get_sm_mgr_signal_str(IN osm_sm_signal_t signal);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	signal
Packit 13e616
*		[in] SM manager signal
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the signal description string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/osm_get_sm_mgr_state_str
Packit 13e616
* NAME
Packit 13e616
*	osm_get_sm_mgr_state_str
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Returns a string for the specified SM manager state.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
const char *osm_get_sm_mgr_state_str(IN uint16_t state);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	state
Packit 13e616
*		[in] SM manager state
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Pointer to the state description string.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_mtu_is_valid
Packit 13e616
* NAME
Packit 13e616
*	ib_mtu_is_valid
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Validates encoded MTU
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_mtu_is_valid(IN const int mtu);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	mtu
Packit 13e616
*		[in] Encoded path mtu.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating mtu is valid (1)
Packit 13e616
*	or invalid (0).
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_rate_is_valid
Packit 13e616
* NAME
Packit 13e616
*	ib_rate_is_valid
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Validates encoded rate
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_rate_is_valid(IN const int rate);
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	rate
Packit 13e616
*		[in] Encoded path rate.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating rate is valid (1)
Packit 13e616
*	or invalid (0).
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_path_compare_rates
Packit 13e616
* NAME
Packit 13e616
*	ib_path_compare_rates
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Compares the encoded values for two path rates and
Packit 13e616
*	return value is based on the ordered comparison of
Packit 13e616
*	the path rates (or path rate equivalents).
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_path_compare_rates(IN const int rate1, IN const int rate2);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	rate1
Packit 13e616
*		[in] Encoded path rate 1.
Packit 13e616
*
Packit 13e616
*	rate2
Packit 13e616
*		[in] Encoded path rate 2.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating less than (-1), equal to (0), or
Packit 13e616
*	greater than (1) rate1 as compared with rate2.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_path_rate_get_prev
Packit 13e616
* NAME
Packit 13e616
*	ib_path_rate_get_prev
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Obtains encoded rate for the rate previous to the one requested.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_path_rate_get_prev(IN const int rate);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	rate
Packit 13e616
*		[in] Encoded path rate.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating encoded rate or
Packit 13e616
*	0 if none can be found.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_path_rate_get_next
Packit 13e616
* NAME
Packit 13e616
*	ib_path_rate_get_next
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Obtains encoded rate for the rate subsequent to the one requested.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_path_rate_get_next(IN const int rate);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	rate
Packit 13e616
*		[in] Encoded path rate.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating encoded rate or
Packit 13e616
*	0 if none can be found.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_path_rate_max_12xedr
Packit 13e616
* NAME
Packit 13e616
*	ib_path_rate_max_12xedr
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Obtains encoded rate from the set of "original" extended
Packit 13e616
*	SA rates (up through and including 300 Gbps - 12x EDR).
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int ib_path_rate_max_12xedr(IN const int rate);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	rate
Packit 13e616
*		[in] Encoded path rate.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating the encoded rate
Packit 13e616
*	with a maximum of 300 Gbps (12x EDR).
Packit 13e616
*	For new rates (relating to 2x and HDR), the
Packit 13e616
*	nearest "original" extended rate lower than
Packit 13e616
*	the 2x or HDR related rate is returned.
Packit 13e616
*	0 if none can be found.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* IBA Base: Types/ib_path_rate_2x_hdr_fixups
Packit 13e616
* NAME
Packit 13e616
*	ib_path_rate_2x_hdr_fixups
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Fixes encoded rate based on whether 2x link width
Packit 13e616
*	and/or HDR are supported.
Packit 13e616
*
Packit 13e616
* SYNOPSIS
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
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	p_pi
Packit 13e616
*		[in] Pointer to the PortInfo attribute
Packit 13e616
*	rate
Packit 13e616
*		[in] Encoded path rate.
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Returns an int indicating the fixed up encoded rate
Packit 13e616
*	based on whether 2x link width and/or HDR are supported.
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
/****f* OpenSM: Helper/sprint_uint8_arr
Packit 13e616
* NAME
Packit 13e616
*	sprint_uint8_arr
Packit 13e616
*
Packit 13e616
* DESCRIPTION
Packit 13e616
*	Create the comma-separated string of numbers
Packit 13e616
*	from input array of uint8 numbers
Packit 13e616
*	(e.g. "1,2,3,4")
Packit 13e616
*
Packit 13e616
* SYNOPSIS
Packit 13e616
*/
Packit 13e616
int sprint_uint8_arr(IN char *buf, IN size_t size,
Packit 13e616
		     IN const uint8_t * arr, IN size_t len);
Packit 13e616
Packit 13e616
/*
Packit 13e616
* PARAMETERS
Packit 13e616
*	buf
Packit 13e616
*		[in] Pointer to the output buffer
Packit 13e616
*
Packit 13e616
*	size
Packit 13e616
*		[in] Size of the output buffer
Packit 13e616
*
Packit 13e616
*	arr
Packit 13e616
*		[in] Pointer to the input array of uint8
Packit 13e616
*
Packit 13e616
*	len
Packit 13e616
*		[in] Size of the input array
Packit 13e616
*
Packit 13e616
* RETURN VALUES
Packit 13e616
*	Return the number of characters printed to the buffer
Packit 13e616
*
Packit 13e616
* NOTES
Packit 13e616
*
Packit 13e616
* SEE ALSO
Packit 13e616
*********/
Packit 13e616
Packit 13e616
Packit 13e616
END_C_DECLS
Packit 13e616
#endif				/* _OSM_HELPER_H_ */