osm_vendor_test.c revision 219820
1251881Speter/*
2251881Speter * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
3251881Speter * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
4251881Speter * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
5251881Speter *
6251881Speter * This software is available to you under a choice of one of two
7251881Speter * licenses.  You may choose to be licensed under the terms of the GNU
8251881Speter * General Public License (GPL) Version 2, available from the file
9251881Speter * COPYING in the main directory of this source tree, or the
10251881Speter * OpenIB.org BSD license below:
11251881Speter *
12251881Speter *     Redistribution and use in source and binary forms, with or
13251881Speter *     without modification, are permitted provided that the following
14251881Speter *     conditions are met:
15251881Speter *
16251881Speter *      - Redistributions of source code must retain the above
17251881Speter *        copyright notice, this list of conditions and the following
18251881Speter *        disclaimer.
19251881Speter *
20251881Speter *      - Redistributions in binary form must reproduce the above
21251881Speter *        copyright notice, this list of conditions and the following
22251881Speter *        disclaimer in the documentation and/or other materials
23251881Speter *        provided with the distribution.
24251881Speter *
25251881Speter * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26251881Speter * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27251881Speter * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28251881Speter * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29251881Speter * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30251881Speter * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31251881Speter * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32251881Speter * SOFTWARE.
33251881Speter *
34251881Speter */
35251881Speter
36251881Speter/*
37251881Speter * Abstract:
38251881Speter *    Implementation of vendor specific transport interface.
39251881Speter *  This is the "Test" vendor which allows compilation and some
40251881Speter *  testing without a real vendor interface.
41251881Speter * These objects are part of the opensm family of objects.
42251881Speter *
43251881Speter */
44251881Speter
45251881Speter#if HAVE_CONFIG_H
46251881Speter#  include <config.h>
47251881Speter#endif				/* HAVE_CONFIG_H */
48251881Speter
49251881Speter#ifdef OSM_VENDOR_INTF_TEST
50251881Speter
51251881Speter#include <stdlib.h>
52251881Speter#include <string.h>
53251881Speter#include <opensm/osm_log.h>
54251881Speter#include <vendor/osm_vendor_test.h>
55251881Speter#include <vendor/osm_vendor_api.h>
56251881Speter
57251881Speter/**********************************************************************
58251881Speter **********************************************************************/
59251881Spetervoid osm_vendor_construct(IN osm_vendor_t * const p_vend)
60251881Speter{
61251881Speter	memset(p_vend, 0, sizeof(*p_vend));
62251881Speter}
63251881Speter
64251881Speter/**********************************************************************
65251881Speter **********************************************************************/
66251881Spetervoid osm_vendor_destroy(IN osm_vendor_t * const p_vend)
67251881Speter{
68251881Speter	UNUSED_PARAM(p_vend);
69251881Speter}
70251881Speter
71251881Speter/**********************************************************************
72269847Speter **********************************************************************/
73251881Spetervoid osm_vendor_delete(IN osm_vendor_t ** const pp_vend)
74251881Speter{
75251881Speter	CL_ASSERT(pp_vend);
76251881Speter
77251881Speter	osm_vendor_destroy(*pp_vend);
78251881Speter	free(*pp_vend);
79251881Speter	*pp_vend = NULL;
80251881Speter}
81251881Speter
82251881Speter/**********************************************************************
83251881Speter **********************************************************************/
84251881Speterib_api_status_t
85251881Speterosm_vendor_init(IN osm_vendor_t * const p_vend,
86251881Speter		IN osm_log_t * const p_log, IN const uint32_t timeout)
87251881Speter{
88251881Speter	OSM_LOG_ENTER(p_log);
89251881Speter
90251881Speter	CL_ASSERT(p_vend);
91251881Speter	CL_ASSERT(p_log);
92251881Speter
93251881Speter	p_vend->p_log = p_log;
94251881Speter	p_vend->timeout = timeout;
95251881Speter	OSM_LOG_EXIT(p_log);
96251881Speter	return (IB_SUCCESS);
97253734Speter}
98251881Speter
99251881Speter/**********************************************************************
100251881Speter **********************************************************************/
101251881Speterosm_vendor_t *osm_vendor_new(IN osm_log_t * const p_log,
102251881Speter			     IN const uint32_t timeout)
103251881Speter{
104251881Speter	ib_api_status_t status;
105251881Speter	osm_vendor_t *p_vend;
106251881Speter	OSM_LOG_ENTER(p_log);
107251881Speter
108251881Speter	CL_ASSERT(p_log);
109251881Speter
110253734Speter	p_vend = malloc(sizeof(*p_vend));
111251881Speter	if (p_vend != NULL) {
112251881Speter		memset(p_vend, 0, sizeof(*p_vend));
113251881Speter
114251881Speter		status = osm_vendor_init(p_vend, p_log, timeout);
115251881Speter		if (status != IB_SUCCESS) {
116251881Speter			osm_vendor_delete(&p_vend);
117251881Speter		}
118251881Speter	}
119251881Speter
120251881Speter	OSM_LOG_EXIT(p_log);
121251881Speter	return (p_vend);
122251881Speter}
123251881Speter
124251881Speter/**********************************************************************
125251881Speter **********************************************************************/
126251881Speterib_mad_t *osm_vendor_get(IN osm_bind_handle_t h_bind,
127251881Speter			 IN const uint32_t size,
128251881Speter			 IN osm_vend_wrap_t * const p_vend_wrap)
129251881Speter{
130251881Speter	osm_vendor_t *p_vend;
131251881Speter	ib_mad_t *p_mad;
132251881Speter	OSM_LOG_ENTER(h_bind->p_vend->p_log);
133251881Speter
134253734Speter	UNUSED_PARAM(p_vend_wrap);
135251881Speter
136251881Speter	p_vend = h_bind->p_vend;
137251881Speter
138251881Speter	/*
139251881Speter	   Simply malloc the MAD off the heap.
140251881Speter	 */
141251881Speter	p_mad = (ib_mad_t *) malloc(size);
142251881Speter
143251881Speter	osm_log(p_vend->p_log, OSM_LOG_VERBOSE,
144251881Speter		"osm_vendor_get: " "MAD %p.\n", p_mad);
145251881Speter
146251881Speter	if (p_mad)
147251881Speter		memset(p_mad, 0, size);
148251881Speter
149251881Speter	OSM_LOG_EXIT(p_vend->p_log);
150251881Speter	return (p_mad);
151251881Speter}
152251881Speter
153251881Speter/**********************************************************************
154251881Speter **********************************************************************/
155251881Spetervoid
156251881Speterosm_vendor_put(IN osm_bind_handle_t h_bind,
157251881Speter	       IN osm_vend_wrap_t * const p_vend_wrap,
158251881Speter	       IN ib_mad_t * const p_mad)
159251881Speter{
160251881Speter	osm_vendor_t *p_vend;
161251881Speter
162251881Speter	OSM_LOG_ENTER(h_bind->p_vend->p_log);
163251881Speter
164251881Speter	UNUSED_PARAM(p_vend_wrap);
165251881Speter
166251881Speter	p_vend = h_bind->p_vend;
167251881Speter
168251881Speter	osm_log(p_vend->p_log, OSM_LOG_VERBOSE,
169251881Speter		"osm_vendor_put: " "MAD %p.\n", p_mad);
170251881Speter
171251881Speter	/*
172251881Speter	   Return the MAD to the heap.
173251881Speter	 */
174251881Speter	free(p_mad);
175251881Speter
176251881Speter	OSM_LOG_EXIT(p_vend->p_log);
177251881Speter}
178251881Speter
179251881Speter/**********************************************************************
180251881Speter **********************************************************************/
181251881Speterib_api_status_t
182251881Speterosm_vendor_send(IN osm_bind_handle_t h_bind,
183251881Speter		IN osm_vend_wrap_t * const p_vend_wrap,
184251881Speter		IN osm_mad_addr_t * const p_mad_addr,
185251881Speter		IN ib_mad_t * const p_mad,
186251881Speter		IN void *transaction_context, IN boolean_t const resp_expected)
187251881Speter{
188251881Speter	osm_vendor_t *p_vend = h_bind->p_vend;
189251881Speter
190251881Speter	OSM_LOG_ENTER(p_vend->p_log);
191251881Speter
192253734Speter	UNUSED_PARAM(p_vend_wrap);
193253734Speter	UNUSED_PARAM(p_mad_addr);
194253734Speter	UNUSED_PARAM(transaction_context);
195253734Speter	UNUSED_PARAM(resp_expected);
196253734Speter
197251881Speter	osm_log(p_vend->p_log, OSM_LOG_VERBOSE,
198253734Speter		"osm_vendor_send: " "MAD %p.\n", p_mad);
199253734Speter
200253734Speter	OSM_LOG_EXIT(p_vend->p_log);
201253734Speter	return (IB_SUCCESS);
202253734Speter}
203253734Speter
204253734Speter/**********************************************************************
205253734Speter **********************************************************************/
206253734Speterosm_bind_handle_t
207253734Speterosm_vendor_bind(IN osm_vendor_t * const p_vend,
208253734Speter		IN osm_bind_info_t * const p_bind_info,
209253734Speter		IN osm_mad_pool_t * const p_mad_pool,
210253734Speter		IN osm_vend_mad_recv_callback_t mad_recv_callback,
211253734Speter		IN void *context)
212253734Speter{
213253734Speter	osm_bind_handle_t h_bind;
214253734Speter
215253734Speter	OSM_LOG_ENTER(p_vend->p_log);
216253734Speter
217253734Speter	CL_ASSERT(p_vend);
218253734Speter	CL_ASSERT(p_bind_info);
219251881Speter	CL_ASSERT(p_mad_pool);
220251881Speter	CL_ASSERT(mad_recv_callback);
221251881Speter	CL_ASSERT(context);
222251881Speter
223251881Speter	UNUSED_PARAM(p_vend);
224251881Speter	UNUSED_PARAM(p_mad_pool);
225251881Speter	UNUSED_PARAM(mad_recv_callback);
226251881Speter	UNUSED_PARAM(context);
227251881Speter
228251881Speter	h_bind = (osm_bind_handle_t) malloc(sizeof(*h_bind));
229251881Speter	if (h_bind != NULL) {
230251881Speter		memset(h_bind, 0, sizeof(*h_bind));
231251881Speter		h_bind->p_vend = p_vend;
232251881Speter		h_bind->port_guid = p_bind_info->port_guid;
233251881Speter		h_bind->mad_class = p_bind_info->mad_class;
234251881Speter		h_bind->class_version = p_bind_info->class_version;
235251881Speter		h_bind->is_responder = p_bind_info->is_responder;
236251881Speter		h_bind->is_trap_processor = p_bind_info->is_trap_processor;
237251881Speter		h_bind->is_report_processor = p_bind_info->is_report_processor;
238251881Speter		h_bind->send_q_size = p_bind_info->send_q_size;
239251881Speter		h_bind->recv_q_size = p_bind_info->recv_q_size;
240251881Speter	}
241251881Speter
242251881Speter	OSM_LOG_EXIT(p_vend->p_log);
243251881Speter	return (h_bind);
244251881Speter}
245251881Speter
246251881Speter/**********************************************************************
247251881Speter **********************************************************************/
248251881Speterib_api_status_t
249251881Speterosm_vendor_get_ports(IN osm_vendor_t * const p_vend,
250251881Speter		     IN ib_net64_t * const p_guids,
251251881Speter		     IN uint32_t * const num_guids)
252251881Speter{
253251881Speter	OSM_LOG_ENTER(p_vend->p_log);
254251881Speter
255251881Speter	*p_guids = CL_NTOH64(0x0000000000001234);
256251881Speter	*num_guids = 1;
257251881Speter
258251881Speter	OSM_LOG_EXIT(p_vend->p_log);
259251881Speter	return (IB_SUCCESS);
260251881Speter}
261251881Speter
262251881Speter/**********************************************************************
263251881Speter **********************************************************************/
264251881Speterib_api_status_t osm_vendor_local_lid_change(IN osm_bind_handle_t h_bind)
265251881Speter{
266251881Speter	osm_vendor_t *p_vend = h_bind->p_vend;
267251881Speter
268251881Speter	OSM_LOG_ENTER(p_vend->p_log);
269251881Speter
270251881Speter	OSM_LOG_EXIT(p_vend->p_log);
271251881Speter
272251881Speter	return (IB_SUCCESS);
273251881Speter}
274251881Speter
275251881Speter/**********************************************************************
276251881Speter **********************************************************************/
277251881Spetervoid osm_vendor_set_debug(IN osm_vendor_t * const p_vend, IN int32_t level)
278251881Speter{
279251881Speter
280251881Speter}
281251881Speter
282251881Speter#endif				/* OSM_VENDOR_INTF_TEST */
283251881Speter