Blame osmtest/include/osmtest.h

Packit 13e616
/*
Packit 13e616
 * Copyright (c) 2006 Voltaire, Inc. All rights reserved.
Packit 13e616
 * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
Packit 13e616
 * Copyright (c) 1996-2003 Intel Corporation. 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
 *    Declaration of osmtest_t.
Packit 13e616
 * This object represents the OSMTest Test object.
Packit 13e616
 *
Packit 13e616
 */
Packit 13e616
Packit 13e616
#ifndef _OSMTEST_H_
Packit 13e616
#define _OSMTEST_H_
Packit 13e616
Packit 13e616
#include <complib/cl_qmap.h>
Packit 13e616
#include <opensm/osm_log.h>
Packit 13e616
#include <vendor/osm_vendor_api.h>
Packit 13e616
#include <vendor/osm_vendor_sa_api.h>
Packit 13e616
#include <opensm/osm_mad_pool.h>
Packit 13e616
#include <opensm/osm_helper.h>
Packit 13e616
#include "osmtest_base.h"
Packit 13e616
#include "osmtest_subnet.h"
Packit 13e616
Packit 13e616
enum OSMT_FLOWS {
Packit 13e616
	OSMT_FLOW_ALL = 0,
Packit 13e616
	OSMT_FLOW_CREATE_INVENTORY,
Packit 13e616
	OSMT_FLOW_VALIDATE_INVENTORY,
Packit 13e616
	OSMT_FLOW_SERVICE_REGISTRATION,
Packit 13e616
	OSMT_FLOW_EVENT_FORWARDING,
Packit 13e616
	OSMT_FLOW_STRESS_SA,
Packit 13e616
	OSMT_FLOW_MULTICAST,
Packit 13e616
	OSMT_FLOW_QOS,
Packit 13e616
	OSMT_FLOW_TRAP,
Packit 13e616
};
Packit 13e616
Packit 13e616
/****s* OpenSM: Subnet/osmtest_opt_t
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_opt_t
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Subnet options structure.  This structure contains the various
Packit 13e616
 * site specific configuration parameters for osmtest.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
typedef struct _osmtest_opt {
Packit 13e616
	uint32_t transaction_timeout;
Packit 13e616
	boolean_t force_log_flush;
Packit 13e616
	boolean_t create;
Packit 13e616
	boolean_t with_grh;
Packit 13e616
	uint32_t retry_count;
Packit 13e616
	uint32_t stress;
Packit 13e616
	uint32_t mmode;
Packit 13e616
	char file_name[OSMTEST_FILE_PATH_MAX];
Packit 13e616
	uint8_t flow;
Packit 13e616
	uint8_t wait_time;
Packit 13e616
	char *log_file;
Packit 13e616
	boolean_t ignore_path_records;
Packit 13e616
	boolean_t full_world_path_recs;
Packit 13e616
} osmtest_opt_t;
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * FIELDS
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****h* OSMTest/OSMTest
Packit 13e616
 * NAME
Packit 13e616
 * OSMTest
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * The OSMTest object tests an SM/SA for conformance to a known
Packit 13e616
 * set of data about an Infiniband subnet.
Packit 13e616
 *
Packit 13e616
 * AUTHOR
Packit 13e616
 * Steve King, Intel
Packit 13e616
 *
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****s* OSMTest/osmtest_t
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_t
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * OSMTest structure.
Packit 13e616
 *
Packit 13e616
 * This object should be treated as opaque and should
Packit 13e616
 * be manipulated only through the provided functions.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
typedef struct _osmtest {
Packit 13e616
	osm_log_t log;
Packit 13e616
	struct _osm_vendor *p_vendor;
Packit 13e616
	osm_bind_handle_t h_bind;
Packit 13e616
	osm_mad_pool_t mad_pool;
Packit 13e616
Packit 13e616
	osmtest_opt_t opt;
Packit 13e616
	ib_port_attr_t local_port;
Packit 13e616
	ib_gid_t local_port_gid;
Packit 13e616
	ib_gid_t sm_port_gid;
Packit 13e616
	subnet_t exp_subn;
Packit 13e616
	cl_qpool_t node_pool;
Packit 13e616
	cl_qpool_t port_pool;
Packit 13e616
	cl_qpool_t link_pool;
Packit 13e616
Packit 13e616
	uint16_t max_lid;
Packit 13e616
} osmtest_t;
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * FIELDS
Packit 13e616
 * log
Packit 13e616
 *    Log facility used by all OSMTest components.
Packit 13e616
 *
Packit 13e616
 * p_vendor
Packit 13e616
 *    Pointer to the vendor transport layer.
Packit 13e616
 *
Packit 13e616
 *  h_bind
Packit 13e616
 *     The bind handle obtained by osm_vendor_sa_api/osmv_bind_sa
Packit 13e616
 *
Packit 13e616
 *  mad_pool
Packit 13e616
 *     The mad pool provided for teh vendor layer to allocate mad wrappers in
Packit 13e616
 *
Packit 13e616
 * opt
Packit 13e616
 *    osmtest options structure
Packit 13e616
 *
Packit 13e616
 * local_port
Packit 13e616
 *    Port attributes for the port over which osmtest is running.
Packit 13e616
 *
Packit 13e616
 * exp_subn
Packit 13e616
 *    Subnet object representing the expected subnet
Packit 13e616
 *
Packit 13e616
 * node_pool
Packit 13e616
 *    Pool of objects for use in populating the subnet databases.
Packit 13e616
 *
Packit 13e616
 * port_pool
Packit 13e616
 *    Pool of objects for use in populating the subnet databases.
Packit 13e616
 *
Packit 13e616
 * link_pool
Packit 13e616
 *    Pool of objects for use in populating the subnet databases.
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****s* OpenSM: Subnet/osmtest_req_context_t
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_req_context_t
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Query context for ib_query callback function.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
typedef struct _osmtest_req_context {
Packit 13e616
	osmtest_t *p_osmt;
Packit 13e616
	osmv_query_res_t result;
Packit 13e616
} osmtest_req_context_t;
Packit 13e616
Packit 13e616
typedef struct _osmtest_mgrp_t {
Packit 13e616
	cl_map_item_t map_item;
Packit 13e616
	ib_member_rec_t mcmember_rec;
Packit 13e616
} osmtest_mgrp_t;
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * FIELDS
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_construct
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_construct
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * This function constructs an OSMTest object.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
void osmtest_construct(IN osmtest_t * const p_osmt);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_osmt
Packit 13e616
 *    [in] Pointer to a OSMTest object to construct.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUE
Packit 13e616
 * This function does not return a value.
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 * Allows calling osmtest_init, osmtest_destroy.
Packit 13e616
 *
Packit 13e616
 * Calling osmtest_construct is a prerequisite to calling any other
Packit 13e616
 * method except osmtest_init.
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 * SM object, osmtest_init, osmtest_destroy
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_destroy
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_destroy
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * The osmtest_destroy function destroys an osmtest object, releasing
Packit 13e616
 * all resources.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
void osmtest_destroy(IN osmtest_t * const p_osmt);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_osmt
Packit 13e616
 *    [in] Pointer to a OSMTest object to destroy.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUE
Packit 13e616
 * This function does not return a value.
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 * Performs any necessary cleanup of the specified OSMTest object.
Packit 13e616
 * Further operations should not be attempted on the destroyed object.
Packit 13e616
 * This function should only be called after a call to osmtest_construct or
Packit 13e616
 * osmtest_init.
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 * SM object, osmtest_construct, osmtest_init
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_init
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_init
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * The osmtest_init function initializes a OSMTest object for use.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmtest_init(IN osmtest_t * const p_osmt,
Packit 13e616
			     IN const osmtest_opt_t * const p_opt,
Packit 13e616
			     IN const osm_log_level_t log_flags);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_osmt
Packit 13e616
 *    [in] Pointer to an osmtest_t object to initialize.
Packit 13e616
 *
Packit 13e616
 * p_opt
Packit 13e616
 *    [in] Pointer to the options structure.
Packit 13e616
 *
Packit 13e616
 * log_flags
Packit 13e616
 *    [in] Log level flags to set.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS if the OSMTest object was initialized successfully.
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 * Allows calling other OSMTest methods.
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 * SM object, osmtest_construct, osmtest_destroy
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_run
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_run
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Runs the osmtest suite.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmtest_run(IN osmtest_t * const p_osmt);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_osmt
Packit 13e616
 *    [in] Pointer to an osmtest_t object.
Packit 13e616
 *
Packit 13e616
 * guid
Packit 13e616
 *    [in] Port GUID over which to run the test suite.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_bind
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_bind
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Binds osmtest to a local port.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmtest_bind(IN osmtest_t * p_osmt,
Packit 13e616
			     IN uint16_t max_lid, IN ib_net64_t guid OPTIONAL);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_osmt
Packit 13e616
 *    [in] Pointer to an osmtest_t object.
Packit 13e616
 *
Packit 13e616
 *  max_lid
Packit 13e616
 *     [in] The maximal lid to query about (if RMPP is not supported)
Packit 13e616
 *
Packit 13e616
 * guid
Packit 13e616
 *    [in] Port GUID over which to run the test suite.
Packit 13e616
 *    If zero, the bind function will display a menu of local
Packit 13e616
 *    port guids and wait for user input.
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmtest_query_res_cb
Packit 13e616
 * NAME
Packit 13e616
 * osmtest_query_res_cb
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * A Callback for the query to invoke on completion
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
void osmtest_query_res_cb(IN osmv_query_res_t * p_rec);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_rec
Packit 13e616
 *    [in] Pointer to an ib_query_rec_t object used for the query.
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* OSMTest/ib_get_mad_status_str
Packit 13e616
 * NAME
Packit 13e616
 * ib_get_mad_status_str
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * return the string representing the given  mad status
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
const char *ib_get_mad_status_str(IN const ib_mad_t * const p_mad);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 * p_mad
Packit 13e616
 *    [in] Pointer to the mad payload
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* OSMTest/osmt_run_service_records_flow
Packit 13e616
 * NAME
Packit 13e616
 * osmt_run_service_records_flow
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Run the service record testing flow.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmt_run_service_records_flow(IN osmtest_t * const p_osmt);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 *  p_osmt
Packit 13e616
 *    [in] Pointer to the osmtest obj
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS if PASS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
ib_api_status_t osmt_run_inform_info_flow(IN osmtest_t * const p_osmt);
Packit 13e616
Packit 13e616
/****f* OSMTest/osmt_run_slvl_and_vlarb_records_flow
Packit 13e616
 * NAME
Packit 13e616
 * osmt_run_slvl_and_vlarb_records_flow
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Run the sl2vl and vlarb tables testing flow.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t
Packit 13e616
osmt_run_slvl_and_vlarb_records_flow(IN osmtest_t * const p_osmt);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 *  p_osmt
Packit 13e616
 *    [in] Pointer to the osmtest obj
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS if PASS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmt_run_mcast_flow
Packit 13e616
 * NAME
Packit 13e616
 * osmt_run_mcast_flow
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Run the multicast test flow
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 *  p_osmt
Packit 13e616
 *    [in] Pointer to the osmtest obj
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS if PASS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
/****f* OSMTest/osmt_run_trap64_65_flow
Packit 13e616
 * NAME
Packit 13e616
 * osmt_run_trap64_65_flow
Packit 13e616
 *
Packit 13e616
 * DESCRIPTION
Packit 13e616
 * Run the trap 64/65 test flow. This test is ran with
Packit 13e616
 * an outside tool.
Packit 13e616
 *
Packit 13e616
 * SYNOPSIS
Packit 13e616
 */
Packit 13e616
ib_api_status_t osmt_run_trap64_65_flow(IN osmtest_t * const p_osmt);
Packit 13e616
/*
Packit 13e616
 * PARAMETERS
Packit 13e616
 *  p_osmt
Packit 13e616
 *    [in] Pointer to the osmtest obj
Packit 13e616
 *
Packit 13e616
 * RETURN VALUES
Packit 13e616
 * IB_SUCCESS if PASS
Packit 13e616
 *
Packit 13e616
 * NOTES
Packit 13e616
 *
Packit 13e616
 * SEE ALSO
Packit 13e616
 *********/
Packit 13e616
Packit 13e616
ib_api_status_t
Packit 13e616
osmtest_get_all_recs(IN osmtest_t * const p_osmt,
Packit 13e616
		     IN ib_net16_t const attr_id,
Packit 13e616
		     IN size_t const attr_size,
Packit 13e616
		     IN OUT osmtest_req_context_t * const p_context);
Packit 13e616
Packit 13e616
ib_api_status_t
Packit 13e616
osmtest_get_local_port_lmc(IN osmtest_t * const p_osmt,
Packit 13e616
			   IN ib_net16_t lid, OUT uint8_t * const p_lmc);
Packit 13e616
Packit 13e616
/*
Packit 13e616
 * A few auxiliary macros for logging
Packit 13e616
 */
Packit 13e616
Packit 13e616
#define EXPECTING_ERRORS_START "[[ ===== Expecting Errors - START ===== "
Packit 13e616
#define EXPECTING_ERRORS_END   "   ===== Expecting Errors  -  END ===== ]]"
Packit 13e616
Packit 13e616
#endif				/* _OSMTEST_H_ */