[openib-general] [PATCH 2/2] opensm: cleanup sa related _ctrl layer

Sasha Khapyorsky sashak at voltaire.com
Fri Jan 19 18:57:48 PST 2007


Cleanup SA related *_ctrl layer.

Signed-off-by: Sasha Khapyorsky <sashak at voltaire.com>
---
 osm/include/Makefile.am                           |   18 --
 osm/include/opensm/osm_sa.h                       |   82 +++---
 osm/include/opensm/osm_sa_class_port_info.h       |   19 +-
 osm/include/opensm/osm_sa_class_port_info_ctrl.h  |  261 ------------------
 osm/include/opensm/osm_sa_guidinfo_record.h       |   21 +-
 osm/include/opensm/osm_sa_guidinfo_record_ctrl.h  |  230 ----------------
 osm/include/opensm/osm_sa_informinfo.h            |   28 +-
 osm/include/opensm/osm_sa_informinfo_ctrl.h       |  261 ------------------
 osm/include/opensm/osm_sa_lft_record.h            |   22 +-
 osm/include/opensm/osm_sa_lft_record_ctrl.h       |  233 ----------------
 osm/include/opensm/osm_sa_link_record.h           |   21 +-
 osm/include/opensm/osm_sa_link_record_ctrl.h      |  261 ------------------
 osm/include/opensm/osm_sa_mcmember_record.h       |   24 +-
 osm/include/opensm/osm_sa_mcmember_record_ctrl.h  |  262 ------------------
 osm/include/opensm/osm_sa_mft_record.h            |   22 +-
 osm/include/opensm/osm_sa_mft_record_ctrl.h       |  231 ----------------
 osm/include/opensm/osm_sa_multipath_record.h      |    8 +-
 osm/include/opensm/osm_sa_multipath_record_ctrl.h |  260 ------------------
 osm/include/opensm/osm_sa_node_record.h           |   21 +-
 osm/include/opensm/osm_sa_node_record_ctrl.h      |  231 ----------------
 osm/include/opensm/osm_sa_path_record.h           |   20 +-
 osm/include/opensm/osm_sa_path_record_ctrl.h      |  261 ------------------
 osm/include/opensm/osm_sa_pkey_record.h           |   21 +-
 osm/include/opensm/osm_sa_pkey_record_ctrl.h      |  218 ---------------
 osm/include/opensm/osm_sa_portinfo_record.h       |   20 +-
 osm/include/opensm/osm_sa_portinfo_record_ctrl.h  |  231 ----------------
 osm/include/opensm/osm_sa_service_record.h        |   23 +-
 osm/include/opensm/osm_sa_service_record_ctrl.h   |  230 ----------------
 osm/include/opensm/osm_sa_slvl_record.h           |   21 +-
 osm/include/opensm/osm_sa_slvl_record_ctrl.h      |  231 ----------------
 osm/include/opensm/osm_sa_sminfo_record.h         |   22 +-
 osm/include/opensm/osm_sa_sminfo_record_ctrl.h    |  231 ----------------
 osm/include/opensm/osm_sa_sw_info_record.h        |    8 +-
 osm/include/opensm/osm_sa_sw_info_record_ctrl.h   |  259 ------------------
 osm/include/opensm/osm_sa_vlarb_record.h          |   20 +-
 osm/include/opensm/osm_sa_vlarb_record_ctrl.h     |  231 ----------------
 osm/opensm/Makefile.am                            |   34 ++--
 osm/opensm/osm_sa.c                               |  293 ++++++++-------------
 osm/opensm/osm_sa_class_port_info.c               |    6 +-
 osm/opensm/osm_sa_class_port_info_ctrl.c          |  126 ---------
 osm/opensm/osm_sa_guidinfo_record.c               |    6 +-
 osm/opensm/osm_sa_guidinfo_record_ctrl.c          |  124 ---------
 osm/opensm/osm_sa_informinfo.c                    |   12 +-
 osm/opensm/osm_sa_informinfo_ctrl.c               |  154 -----------
 osm/opensm/osm_sa_lft_record.c                    |    6 +-
 osm/opensm/osm_sa_lft_record_ctrl.c               |  124 ---------
 osm/opensm/osm_sa_link_record.c                   |    6 +-
 osm/opensm/osm_sa_link_record_ctrl.c              |  128 ---------
 osm/opensm/osm_sa_mcmember_record.c               |    6 +-
 osm/opensm/osm_sa_mcmember_record_ctrl.c          |  132 ---------
 osm/opensm/osm_sa_mft_record.c                    |    6 +-
 osm/opensm/osm_sa_mft_record_ctrl.c               |  123 ---------
 osm/opensm/osm_sa_multipath_record.c              |    6 +-
 osm/opensm/osm_sa_multipath_record_ctrl.c         |  128 ---------
 osm/opensm/osm_sa_node_record.c                   |    6 +-
 osm/opensm/osm_sa_node_record_ctrl.c              |  125 ---------
 osm/opensm/osm_sa_path_record.c                   |    6 +-
 osm/opensm/osm_sa_path_record_ctrl.c              |  126 ---------
 osm/opensm/osm_sa_pkey_record.c                   |    6 +-
 osm/opensm/osm_sa_pkey_record_ctrl.c              |  113 --------
 osm/opensm/osm_sa_portinfo_record.c               |    6 +-
 osm/opensm/osm_sa_portinfo_record_ctrl.c          |  125 ---------
 osm/opensm/osm_sa_service_record.c                |    6 +-
 osm/opensm/osm_sa_service_record_ctrl.c           |  125 ---------
 osm/opensm/osm_sa_slvl_record.c                   |    6 +-
 osm/opensm/osm_sa_slvl_record_ctrl.c              |  126 ---------
 osm/opensm/osm_sa_sminfo_record.c                 |    6 +-
 osm/opensm/osm_sa_sminfo_record_ctrl.c            |  125 ---------
 osm/opensm/osm_sa_sw_info_record.c                |    6 +-
 osm/opensm/osm_sa_sw_info_record_ctrl.c           |  123 ---------
 osm/opensm/osm_sa_vlarb_record.c                  |    6 +-
 osm/opensm/osm_sa_vlarb_record_ctrl.c             |  126 ---------
 osm/opensm/osm_state_mgr.c                        |    1 +
 73 files changed, 405 insertions(+), 6747 deletions(-)

diff --git a/osm/include/Makefile.am b/osm/include/Makefile.am
index bc23723..b49cf21 100644
--- a/osm/include/Makefile.am
+++ b/osm/include/Makefile.am
@@ -5,9 +5,6 @@ nobase_pkginclude_HEADERS = iba/ib_types.h
 
 EXTRA_DIST = \
 	$(srcdir)/opensm/osm_version.h \
-	$(srcdir)/opensm/osm_sa_portinfo_record_ctrl.h \
-	$(srcdir)/opensm/osm_sa_guidinfo_record_ctrl.h \
-	$(srcdir)/opensm/osm_sa_multipath_record_ctrl.h \
 	$(srcdir)/opensm/osm_sa_path_record.h \
 	$(srcdir)/opensm/osm_lid_mgr.h \
 	$(srcdir)/opensm/osm_vl_arb_rcv.h \
@@ -18,17 +15,13 @@ EXTRA_DIST = \
 	$(srcdir)/opensm/osm_rand_fwd_tbl.h \
 	$(srcdir)/opensm/osm_sa_vlarb_record.h \
 	$(srcdir)/opensm/osm_madw.h \
-	$(srcdir)/opensm/osm_sa_sminfo_record_ctrl.h \
 	$(srcdir)/opensm/osm_subnet.h \
 	$(srcdir)/opensm/osm_sweep_fail_ctrl.h \
 	$(srcdir)/opensm/osm_matrix.h \
-	$(srcdir)/opensm/osm_sa_mcmember_record_ctrl.h \
-	$(srcdir)/opensm/osm_sa_service_record_ctrl.h \
 	$(srcdir)/opensm/osm_sa_lft_record.h \
 	$(srcdir)/opensm/osm_sa_mft_record.h \
 	$(srcdir)/opensm/osm_resp.h \
 	$(srcdir)/opensm/osm_partition.h \
-	$(srcdir)/opensm/osm_sa_pkey_record_ctrl.h \
 	$(srcdir)/opensm/osm_helper.h \
 	$(srcdir)/opensm/osm_sa_portinfo_record.h \
 	$(srcdir)/opensm/osm_sa_guidinfo_record.h \
@@ -37,13 +30,10 @@ EXTRA_DIST = \
 	$(srcdir)/opensm/osm_sa_response.h \
 	$(srcdir)/opensm/osm_node.h \
 	$(srcdir)/opensm/osm_console.h \
-	$(srcdir)/opensm/osm_sa_slvl_record_ctrl.h \
 	$(srcdir)/opensm/osm_req.h \
 	$(srcdir)/opensm/osm_mcm_info.h \
 	$(srcdir)/opensm/osm_mtl_bind.h \
 	$(srcdir)/opensm/osm_sa_pkey_record.h \
-	$(srcdir)/opensm/osm_sa_lft_record_ctrl.h \
-	$(srcdir)/opensm/osm_sa_mft_record_ctrl.h \
 	$(srcdir)/opensm/osm_inform.h \
 	$(srcdir)/opensm/osm_path.h \
 	$(srcdir)/opensm/osm_lin_fwd_rcv.h \
@@ -61,12 +51,10 @@ EXTRA_DIST = \
 	$(srcdir)/opensm/osm_umadt.h \
 	$(srcdir)/opensm/osm_node_info_rcv.h \
 	$(srcdir)/opensm/osm_base.h \
-	$(srcdir)/opensm/osm_sa_vlarb_record_ctrl.h \
 	$(srcdir)/opensm/osm_sa_sminfo_record.h \
 	$(srcdir)/opensm/osm_mcast_mgr.h \
 	$(srcdir)/opensm/osm_errors.h \
 	$(srcdir)/opensm/osm_mtree.h \
-	$(srcdir)/opensm/osm_sa_informinfo_ctrl.h \
 	$(srcdir)/opensm/osm_sm.h \
 	$(srcdir)/opensm/osm_trap_rcv.h \
 	$(srcdir)/opensm/osm_lin_fwd_tbl.h \
@@ -75,7 +63,6 @@ EXTRA_DIST = \
 	$(srcdir)/opensm/osm_sa_informinfo.h \
 	$(srcdir)/opensm/osm_mad_pool.h \
 	$(srcdir)/opensm/osm_remote_sm.h \
-	$(srcdir)/opensm/osm_sa_class_port_info_ctrl.h \
 	$(srcdir)/opensm/osm_link_mgr.h \
 	$(srcdir)/opensm/osm_msgdef.h \
 	$(srcdir)/opensm/osm_sa_node_record.h \
@@ -93,15 +80,10 @@ EXTRA_DIST = \
 	$(srcdir)/opensm/osm_db_pack.h \
 	$(srcdir)/opensm/osm_sm_mad_ctrl.h \
 	$(srcdir)/opensm/osm_slvl_map_rcv.h \
-	$(srcdir)/opensm/osm_sa_node_record_ctrl.h \
 	$(srcdir)/opensm/osm_attrib_req.h \
 	$(srcdir)/opensm/osm_node_desc_rcv.h \
 	$(srcdir)/opensm/osm_stats.h \
-	$(srcdir)/opensm/osm_sa_path_record_ctrl.h \
-	$(srcdir)/opensm/osm_sa_link_record_ctrl.h \
-	$(srcdir)/opensm/osm_sw_info_rcv_ctrl.h \
 	$(srcdir)/opensm/osm_sa_mcmember_record.h \
-	$(srcdir)/opensm/osm_sa_sw_info_record_ctrl.h \
 	$(srcdir)/opensm/osm_sa_sw_info_record.h \
 	$(srcdir)/opensm/osm_vl15intf.h \
 	$(srcdir)/opensm/osm_drop_mgr.h \
diff --git a/osm/include/opensm/osm_sa.h b/osm/include/opensm/osm_sa.h
index 1508f44..ea60341 100644
--- a/osm/include/opensm/osm_sa.h
+++ b/osm/include/opensm/osm_sa.h
@@ -60,24 +60,24 @@
 #include <opensm/osm_mad_pool.h>
 #include <opensm/osm_sa_response.h>
 #include <opensm/osm_log.h>
-#include <opensm/osm_sa_node_record_ctrl.h>
-#include <opensm/osm_sa_portinfo_record_ctrl.h>
-#include <opensm/osm_sa_guidinfo_record_ctrl.h>
-#include <opensm/osm_sa_link_record_ctrl.h>
-#include <opensm/osm_sa_path_record_ctrl.h>
-#include <opensm/osm_sa_multipath_record_ctrl.h>
-#include <opensm/osm_sa_sminfo_record_ctrl.h>
+#include <opensm/osm_sa_node_record.h>
+#include <opensm/osm_sa_portinfo_record.h>
+#include <opensm/osm_sa_guidinfo_record.h>
+#include <opensm/osm_sa_link_record.h>
+#include <opensm/osm_sa_path_record.h>
+#include <opensm/osm_sa_multipath_record.h>
+#include <opensm/osm_sa_sminfo_record.h>
 #include <opensm/osm_sa_mad_ctrl.h>
-#include <opensm/osm_sa_mcmember_record_ctrl.h>
-#include <opensm/osm_sa_service_record_ctrl.h>
-#include <opensm/osm_sa_class_port_info_ctrl.h>
-#include <opensm/osm_sa_informinfo_ctrl.h>
-#include <opensm/osm_sa_slvl_record_ctrl.h>
-#include <opensm/osm_sa_vlarb_record_ctrl.h>
-#include <opensm/osm_sa_pkey_record_ctrl.h>
-#include <opensm/osm_sa_lft_record_ctrl.h>
-#include <opensm/osm_sa_sw_info_record_ctrl.h>
-#include <opensm/osm_sa_mft_record_ctrl.h>
+#include <opensm/osm_sa_mcmember_record.h>
+#include <opensm/osm_sa_service_record.h>
+#include <opensm/osm_sa_class_port_info.h>
+#include <opensm/osm_sa_informinfo.h>
+#include <opensm/osm_sa_slvl_record.h>
+#include <opensm/osm_sa_vlarb_record.h>
+#include <opensm/osm_sa_pkey_record.h>
+#include <opensm/osm_sa_lft_record.h>
+#include <opensm/osm_sa_sw_info_record.h>
+#include <opensm/osm_sa_mft_record.h>
 
 #ifdef __cplusplus
 #  define BEGIN_C_DECLS extern "C" {
@@ -151,55 +151,59 @@ typedef struct _osm_sa
 	osm_sa_mad_ctrl_t			mad_ctrl;
 	osm_sa_resp_t				resp;
 	osm_cpi_rcv_t				cpi_rcv;
-	osm_cpi_rcv_ctrl_t			cpi_rcv_ctrl;
 	osm_nr_rcv_t				nr_rcv;
-	osm_nr_rcv_ctrl_t			nr_rcv_ctrl;
 	osm_pir_rcv_t				pir_rcv;
-	osm_pir_rcv_ctrl_t			pir_rcv_ctrl;
 	osm_gir_rcv_t				gir_rcv;
-	osm_gir_rcv_ctrl_t			gir_rcv_ctrl;
 	osm_lr_rcv_t				lr_rcv;
-	osm_lr_rcv_ctrl_t			lr_rcv_ctrl;
 	osm_pr_rcv_t				pr_rcv;
-	osm_pr_rcv_ctrl_t			pr_rcv_ctrl;
 	osm_smir_rcv_t				smir_rcv;
-	osm_smir_ctrl_t				smir_ctrl;
 	osm_mcmr_recv_t				mcmr_rcv;
-	osm_mcmr_rcv_ctrl_t			mcmr_rcv_ctlr;
 	osm_sr_rcv_t				sr_rcv;
-	osm_sr_rcv_ctrl_t			sr_rcv_ctrl;
 #if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
 	osm_mpr_rcv_t				mpr_rcv;
-	osm_mpr_rcv_ctrl_t			mpr_rcv_ctrl;
 #endif
 
 	/* InformInfo Receiver */
 	osm_infr_rcv_t				infr_rcv;
-	osm_infr_rcv_ctrl_t			infr_rcv_ctrl;
 
 	/* VL Arbitrartion Query */
 	osm_vlarb_rec_rcv_t			vlarb_rec_rcv;
-	osm_vlarb_rec_rcv_ctrl_t		vlarb_rec_rcv_ctrl;
 
 	/* SLtoVL Map Query */
 	osm_slvl_rec_rcv_t			slvl_rec_rcv;
-	osm_slvl_rec_rcv_ctrl_t			slvl_rec_rcv_ctrl;
   
 	/* P_Key table Query */
 	osm_pkey_rec_rcv_t			pkey_rec_rcv;
-	osm_pkey_rec_rcv_ctrl_t			pkey_rec_rcv_ctrl;
 
 	/* LinearForwardingTable Query */
 	osm_lftr_rcv_t				lftr_rcv;
-	osm_lftr_rcv_ctrl_t			lftr_rcv_ctrl;
 
 	/* SwitchInfo Query */
 	osm_sir_rcv_t				sir_rcv;
-	osm_sir_rcv_ctrl_t			sir_rcv_ctrl;
 
 	/* MulticastForwardingTable Query */
 	osm_mftr_rcv_t				mftr_rcv;
-	osm_mftr_rcv_ctrl_t			mftr_rcv_ctrl;
+
+	cl_disp_reg_handle_t			cpi_disp_h;
+	cl_disp_reg_handle_t			nr_disp_h;
+	cl_disp_reg_handle_t			pir_disp_h;
+	cl_disp_reg_handle_t			gir_disp_h;
+	cl_disp_reg_handle_t			lr_disp_h;
+	cl_disp_reg_handle_t			pr_disp_h;
+	cl_disp_reg_handle_t			smir_disp_h;
+	cl_disp_reg_handle_t			mcmr_disp_h;
+	cl_disp_reg_handle_t			sr_disp_h;
+#if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
+	cl_disp_reg_handle_t			mpr_disp_h;
+#endif
+	cl_disp_reg_handle_t			infr_disp_h;
+	cl_disp_reg_handle_t			infir_disp_h;
+	cl_disp_reg_handle_t			vlarb_disp_h;
+	cl_disp_reg_handle_t			slvl_disp_h;
+	cl_disp_reg_handle_t			pkey_disp_h;
+	cl_disp_reg_handle_t			lft_disp_h;
+	cl_disp_reg_handle_t			sir_disp_h;
+	cl_disp_reg_handle_t			mft_disp_h;
 } osm_sa_t;
 /*
 * FIELDS
@@ -234,24 +238,14 @@ typedef struct _osm_sa
 *
 *	nr
 *
-*	nr_ctrl
-*
 *	pir_rcv
 *
-*	pir_rcv_ctrl
-*
 *	lr
 *
-*	lr_ctrl
-*
 *	pr
 *
-*	pr_ctrl
-*
 *	smir
 *
-*	smir_ctrl
-*
 * SEE ALSO
 *	SM object
 *********/
diff --git a/osm/include/opensm/osm_sa_class_port_info.h b/osm/include/opensm/osm_sa_class_port_info.h
index 9caba7a..ca159a2 100644
--- a/osm/include/opensm/osm_sa_class_port_info.h
+++ b/osm/include/opensm/osm_sa_class_port_info.h
@@ -100,12 +100,11 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_cpi_rcv
 {
-	osm_subn_t					*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
 } osm_cpi_rcv_t;
 /*
 * FIELDS
@@ -243,14 +242,14 @@ osm_cpi_rcv_init(
 */
 void
 osm_cpi_rcv_process(
-	IN osm_cpi_rcv_t*			const p_rcv,
-	IN const osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_cpi_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the ClassPortInfo attribute.
 *
diff --git a/osm/include/opensm/osm_sa_class_port_info_ctrl.h b/osm/include/opensm/osm_sa_class_port_info_ctrl.h
deleted file mode 100644
index 447617c..0000000
--- a/osm/include/opensm/osm_sa_class_port_info_ctrl.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_cpi_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA ClassPortInfo 
- *	attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.2 $
- */
-
-#ifndef _OSM_CPICTRL_H_
-#define _OSM_CPICTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_class_port_info.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Class Port Info Receive Controller
-* NAME
-*	Class Port Info Receive Controller
-*
-* DESCRIPTION
-*	The Class Port Info Receive Controller object encapsulates
-*	the information requested by the ClassPortInfo attribute.
-*
-*	The ClassPortInfo Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Eitan Zahavi, Mellanox
-*
-*********/
-
-/****s* OpenSM: ClassPort Info Receive Controller/osm_cpi_rcv_ctrl_t
-* NAME
-*	osm_cpi_rcv_ctrl_t
-*
-* DESCRIPTION
-*	ClassPort Info Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_cpi_rcv_ctrl
-{
-	osm_cpi_rcv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_cpi_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the ClassPort Info Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Class Port Info Receive Controller object
-*	Class Port Info Receiver object
-*********/
-
-/****f* OpenSM: Class Port Info Receive Controller/osm_cpi_rcv_ctrl_construct
-* NAME
-*	osm_cpi_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Class Port Info Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_cpi_rcv_ctrl_construct(
-	IN osm_cpi_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Class Port Info Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_cpi_rcv_ctrl_init, osm_cpi_rcv_ctrl_destroy,
-*	and osm_cpi_rcv_ctrl_is_inited.
-*
-*	Calling osm_cpi_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_cpi_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Class Port Info Receive Controller object, osm_cpi_rcv_ctrl_init,
-*	osm_cpi_rcv_ctrl_destroy, osm_cpi_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Class Port Info Receive Controller/osm_cpi_rcv_ctrl_destroy
-* NAME
-*	osm_cpi_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_cpi_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_cpi_rcv_ctrl_destroy(
-	IN osm_cpi_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Class Port Info Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_cpi_rcv_ctrl_construct or osm_cpi_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Class Port Info Receive Controller object, osm_cpi_rcv_ctrl_construct,
-*	osm_cpi_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Class Port Info Receive Controller/osm_cpi_rcv_ctrl_init
-* NAME
-*	osm_cpi_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_cpi_rcv_ctrl_init function initializes a
-*	Class Port Info Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_cpi_rcv_ctrl_init(
-	IN osm_cpi_rcv_ctrl_t* const p_ctrl,
-	IN osm_cpi_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_cpi_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_cpi_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Class Port Info Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Class Port Info Receive Controller methods.
-*
-* SEE ALSO
-*	Class Port Info Receive Controller object, osm_cpi_rcv_ctrl_construct,
-*	osm_cpi_rcv_ctrl_destroy, osm_cpi_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Class Port Info Receive Controller/osm_cpi_rcv_ctrl_is_inited
-* NAME
-*	osm_cpi_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_cpi_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_cpi_rcv_ctrl_is_inited(
-	IN const osm_cpi_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_cpi_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_cpi_rcv_ctrl_construct or osm_cpi_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	Class Port Info Receive Controller object, osm_cpi_rcv_ctrl_construct,
-*	osm_cpi_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_CPICTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_guidinfo_record.h b/osm/include/opensm/osm_sa_guidinfo_record.h
index f22c525..5c23cf9 100644
--- a/osm/include/opensm/osm_sa_guidinfo_record.h
+++ b/osm/include/opensm/osm_sa_guidinfo_record.h
@@ -98,13 +98,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_gir_rcv
 {
-	const osm_subn_t			*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	cl_qlock_pool_t			pool;
-
+	const osm_subn_t	*p_subn;
+	osm_sa_resp_t		*p_resp;
+	osm_mad_pool_t		*p_mad_pool;
+	osm_log_t		*p_log;
+	cl_plock_t		*p_lock;
+	cl_qlock_pool_t		pool;
 } osm_gir_rcv_t;
 /*
 * FIELDS
@@ -253,14 +252,14 @@ osm_gir_rcv_init(
 */
 void
 osm_gir_rcv_process(
-	IN osm_gir_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_gir_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's GUIDInfoRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_guidinfo_record_ctrl.h b/osm/include/opensm/osm_sa_guidinfo_record_ctrl.h
deleted file mode 100644
index b9d0cfb..0000000
--- a/osm/include/opensm/osm_sa_guidinfo_record_ctrl.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (c) 2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_sa_gir_rec_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA GUID Info 
- *	record query from SA client.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- */
-
-#ifndef _OSM_GIR_CTRL_H_
-#define _OSM_GIR_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_guidinfo_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/GUID Info Record Receive Controller
-* NAME
-*	GUID Info Record Receive Controller
-*
-* DESCRIPTION
-*	The GUID Info Record Receive Controller object encapsulates
-*	the information needed to handle GUID Info record query from SA client.
-*
-*	The GUID Info Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Hal Rosenstock, Voltaire 
-*
-*********/
-
-/****s* OpenSM: GUID Info Record Receive Controller/osm_gir_rcv_ctrl_t
-* NAME
-*	osm_gir_rcv_ctrl_t
-*
-* DESCRIPTION
-*	GUID Info Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_gir_rcv_ctrl
-{
-	osm_gir_rcv_t			*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_gir_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the GUID Info Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	GUID Info Record Receive Controller object
-*	GUID Info Record Receiver object
-*********/
-
-/****f* OpenSM: GUID Info Record Receive Controller/osm_gir_rec_rcv_ctrl_construct
-* NAME
-*	osm_gir_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a GUID Info Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_gir_rcv_ctrl_construct(
-	IN osm_gir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a GUID Info Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_gir_rcv_ctrl_init, osm_gir_rcv_ctrl_destroy
-*
-*	Calling osm_gir_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_gir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	GUID Info Record Receive Controller object, osm_gir_rcv_ctrl_init,
-*	osm_gir_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: GUID Info Record Receive Controller/osm_gir_rcv_ctrl_destroy
-* NAME
-*	osm_gir_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_gir_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_gir_rcv_ctrl_destroy(
-	IN osm_gir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	GUIDInfo Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_gir_rcv_ctrl_construct or osm_gir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	GUIDInfo Record Receive Controller object, osm_gir_rcv_ctrl_construct,
-*	osm_gir_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: GUID Info Record Receive Controller/osm_gir_rcv_ctrl_init
-* NAME
-*	osm_gir_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_gir_rcv_ctrl_init function initializes a
-*	GUID Info Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_gir_rcv_ctrl_init(
-	IN osm_gir_rcv_ctrl_t* const p_ctrl,
-	IN osm_gir_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_gir_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_gir_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the GUID Info Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other GUID Info Record Receive Controller methods.
-*
-* SEE ALSO
-*	GUID Info Record Receive Controller object, osm_gir_rcv_ctrl_construct,
-*	osm_gir_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_GIR_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_informinfo.h b/osm/include/opensm/osm_sa_informinfo.h
index c22c1eb..c935995 100644
--- a/osm/include/opensm/osm_sa_informinfo.h
+++ b/osm/include/opensm/osm_sa_informinfo.h
@@ -102,12 +102,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_infr_rcv
 {
-	osm_subn_t		*p_subn;
-	osm_sa_resp_t		*p_resp;
-	osm_mad_pool_t		*p_mad_pool;
-	osm_log_t		*p_log;
-	cl_plock_t		*p_lock;
-	cl_qlock_pool_t		pool;
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	cl_qlock_pool_t	pool;
 } osm_infr_rcv_t;
 /*
 * FIELDS
@@ -249,14 +249,14 @@ osm_infr_rcv_init(
 */
 void
 osm_infr_rcv_process(
-	IN osm_infr_rcv_t*		const p_rcv,
-	IN const osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_infr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's InformInfo attribute.
 * NOTES
@@ -277,14 +277,14 @@ osm_infr_rcv_process(
 */
 void
 osm_infir_rcv_process(
-	IN osm_infr_rcv_t*		const p_rcv,
-	IN const osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_infr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's InformInfo Record attribute.
 * NOTES
diff --git a/osm/include/opensm/osm_sa_informinfo_ctrl.h b/osm/include/opensm/osm_sa_informinfo_ctrl.h
deleted file mode 100644
index 6213748..0000000
--- a/osm/include/opensm/osm_sa_informinfo_ctrl.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_infr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA InfromInfo
- *	Set method attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.3 $
- */
-
-#ifndef _OSM_INFR_RCV_CTRL_H_
-#define _OSM_INFR_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_inform.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/InformInfo Receive Controller
-* NAME
-*	InformInfo Receive Controller
-*
-* DESCRIPTION
-*	The InformInfo Receive Controller object encapsulates
-*	the information  needed to receive the InformInfo attribute from a node.
-*
-*	The InformInfo Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Eitan Zahavi, Mellanox
-*
-*********/
-
-/****s* OpenSM: InformInfo Receive Controller/osm_infr_rcv_ctrl_t
-* NAME
-*	osm_infr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	InformInfo Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_infr_rcv_ctrl
-{
-  osm_infr_rcv_t		*p_rcv;
-  osm_log_t			*p_log;
-  cl_dispatcher_t		*p_disp;
-  cl_disp_reg_handle_t		h_disp;
-  cl_disp_reg_handle_t		h_disp2;
-} osm_infr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the InformInfo Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	InformInfo Receive Controller object
-*	InformInfo Receiver object
-*********/
-
-/****f* OpenSM: InformInfo Receive Controller/osm_infr_rcv_ctrl_construct
-* NAME
-*	osm_infr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a InformInfo Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_infr_rcv_ctrl_construct(
-	IN osm_infr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a InformInfo Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_infr_rcv_ctrl_init, osm_infr_rcv_ctrl_destroy,
-*	and osm_infr_rcv_ctrl_is_inited.
-*
-*	Calling osm_infr_rcv_ctrl_construct is a prerequisite to calling any
-*	other method except osm_infr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	InformInfo Receive Controller object, osm_infr_rcv_ctrl_init,
-*	osm_infr_rcv_ctrl_destroy, osm_infr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: InformInfo Receive Controller/osm_infr_rcv_ctrl_destroy
-* NAME
-*	osm_infr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_infr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_infr_rcv_ctrl_destroy(
-	IN osm_infr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	InformInfo Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_infr_rcv_ctrl_construct or osm_infr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	InformInfo Receive Controller object, osm_infr_rcv_ctrl_construct,
-*	osm_infr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: InformInfo Receive Controller/osm_infr_rcv_ctrl_init
-* NAME
-*	osm_infr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_infr_rcv_ctrl_init function initializes a
-*	InformInfo Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_infr_rcv_ctrl_init(
-	IN osm_infr_rcv_ctrl_t* const p_ctrl,
-	IN osm_infr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_infr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_infr_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the InformInfo Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other InformInfo Receive Controller methods.
-*
-* SEE ALSO
-*	InformInfo Receive Controller object, osm_infr_rcv_ctrl_construct,
-*	osm_infr_rcv_ctrl_destroy, osm_infr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: InformInfo Receive Controller/osm_infr_rcv_ctrl_is_inited
-* NAME
-*	osm_infr_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_infr_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_infr_rcv_ctrl_is_inited(
-	IN const osm_infr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_infr_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_infr_rcv_ctrl_construct or osm_infr_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	InformInfo Receive Controller object, osm_infr_rcv_ctrl_construct,
-*	osm_infr_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_INFR_RCV_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_lft_record.h b/osm/include/opensm/osm_sa_lft_record.h
index 8d3e596..c055e9e 100644
--- a/osm/include/opensm/osm_sa_lft_record.h
+++ b/osm/include/opensm/osm_sa_lft_record.h
@@ -100,13 +100,13 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_lft
 {
-  osm_subn_t*					p_subn;
-  osm_stats_t*					p_stats;
-  osm_sa_resp_t*				p_resp;
-  osm_mad_pool_t*				p_mad_pool;
-  osm_log_t*					p_log;
-  cl_plock_t*					p_lock;
-  cl_qlock_pool_t				pool;
+	osm_subn_t*	p_subn;
+	osm_stats_t*	p_stats;
+	osm_sa_resp_t*	p_resp;
+	osm_mad_pool_t*	p_mad_pool;
+	osm_log_t*	p_log;
+	cl_plock_t*	p_lock;
+	cl_qlock_pool_t	pool;
 } osm_lftr_rcv_t;
 /*
 * FIELDS
@@ -254,14 +254,14 @@ ib_api_status_t osm_lftr_rcv_init(
 * SYNOPSIS
 */
 void osm_lftr_rcv_process(
-	IN osm_lftr_rcv_t* const p_ctrl,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_ctrl
+*	context
 *		[in] Pointer to an osm_lftr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the switch node's LinearForwardingTable attribute.
 *
diff --git a/osm/include/opensm/osm_sa_lft_record_ctrl.h b/osm/include/opensm/osm_sa_lft_record_ctrl.h
deleted file mode 100644
index 4869851..0000000
--- a/osm/include/opensm/osm_sa_lft_record_ctrl.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_lftr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA
- *	LinearForwardingTable attribute from a switch.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LFTR_RCV_CTRL_H_
-#define _OSM_LFTR_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_lft_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Linear Forwarding Table Receive Controller
-* NAME
-*	Linear Forwarding Table Record Receive Controller
-*
-* DESCRIPTION
-*	The Linear Forwarding Table Receive Controller object encapsulates
-*	the information needed to receive the LinearFowardingTable attribute
-*  from a switch node.
-*
-*	The Linear Forwarding Table Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Eitan Zahavi, Mellanox Technologies LTD
-*
-*********/
-
-/****s* OpenSM: Linear Forwarding Table Receive Controller/osm_lftr_rcv_ctrl_t
-* NAME
-*	osm_lftr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Linear Forwarding Table Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lftr_rcv_ctrl
-{
-	osm_lftr_rcv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_lftr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Linear Forwarding Table Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Linear Forwarding Table Receive Controller object
-*	Linear Forwarding Table Receiver object
-*********/
-
-/****f* OpenSM: Linear Forwarding Table Receive Controller/osm_lftr_rcv_ctrl_construct
-* NAME
-*	osm_lftr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Linear Forwarding Table Receive
-*  Controller object.
-*
-* SYNOPSIS
-*/
-void osm_lftr_rcv_ctrl_construct(
-	IN osm_lftr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Linear Forwarding Table Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_lftr_rcv_ctrl_init, osm_lftr_rcv_ctrl_destroy
-*
-*	Calling osm_lftr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_lftr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Linear Forwarding Table Receive Controller object, osm_lftr_rcv_ctrl_init,
-*	osm_lftr_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: Linear Forwarding Table Receive Controller/osm_lftr_rcv_ctrl_destroy
-* NAME
-*	osm_lftr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_lftr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_lftr_rcv_ctrl_destroy(
-	IN osm_lftr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Linear Forwarding Table Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_lftr_rcv_ctrl_construct or osm_lftr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Linear Forwarding Table Receive Controller object, osm_lftr_rcv_ctrl_construct,
-*	osm_lftr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Linear Forwarding Table Receive Controller/osm_lftr_rcv_ctrl_init
-* NAME
-*	osm_lftr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_lftr_rcv_ctrl_init function initializes a
-*	Linear Forwarding Table Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_lftr_rcv_ctrl_init(
-	IN osm_lftr_rcv_ctrl_t* const p_ctrl,
-	IN osm_lftr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_lftr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_lftr_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Linear Forwarding Table Receive Controller object
-*  was initialized successfully.
-*
-* NOTES
-*	Allows calling other Linear Forwarding Table Receive Controller methods.
-*
-* SEE ALSO
-*	Linear Forwarding Table Receive Controller object, 
-*  osm_lftr_rcv_ctrl_construct, osm_lftr_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_LFTR_RCV_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_link_record.h b/osm/include/opensm/osm_sa_link_record.h
index 3390b35..adc3be8 100644
--- a/osm/include/opensm/osm_sa_link_record.h
+++ b/osm/include/opensm/osm_sa_link_record.h
@@ -100,13 +100,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_lr_rcv
 {
-	osm_subn_t					*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	cl_qlock_pool_t				lr_pool;
-
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	cl_qlock_pool_t	lr_pool;
 } osm_lr_rcv_t;
 /*
 * FIELDS
@@ -253,14 +252,14 @@ osm_lr_rcv_init(
 * SYNOPSIS
 */
 void osm_lr_rcv_process(
-	IN osm_lr_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_lr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's Link Record attribute.
 *
diff --git a/osm/include/opensm/osm_sa_link_record_ctrl.h b/osm/include/opensm/osm_sa_link_record_ctrl.h
deleted file mode 100644
index 166b850..0000000
--- a/osm/include/opensm/osm_sa_link_record_ctrl.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_lr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA Link Record
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_LR_CTRL_H_
-#define _OSM_LR_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_link_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Link Record Receive Controller
-* NAME
-*	Link Record Receive Controller
-*
-* DESCRIPTION
-*	The Link Record Receive Controller object encapsulates
-*	the information	needed to receive the LinkRecord attribute from a node.
-*
-*	The Link Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Ranjit Pandit, Intel
-*
-*********/
-
-/****s* OpenSM: Link Record Receive Controller/osm_lr_rcv_ctrl_t
-* NAME
-*	osm_lr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Link Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_lr_rcv_ctrl
-{
-	osm_lr_rcv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_lr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Link Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Link Record Receive Controller object
-*	Link Record Receiver object
-*********/
-
-/****f* OpenSM: Link Record Receive Controller/osm_lr_rcv_ctrl_construct
-* NAME
-*	osm_lr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Link Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_lr_rcv_ctrl_construct(
-	IN osm_lr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Link Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_lr_rcv_ctrl_init, osm_lr_rcv_ctrl_destroy,
-*	and osm_lr_rcv_ctrl_is_inited.
-*
-*	Calling osm_lr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_lr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Link Record Receive Controller object, osm_lr_rcv_ctrl_init,
-*	osm_lr_rcv_ctrl_destroy, osm_lr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Link Record Receive Controller/osm_lr_rcv_ctrl_destroy
-* NAME
-*	osm_lr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_lr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_lr_rcv_ctrl_destroy(
-	IN osm_lr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Link Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_lr_rcv_ctrl_construct or osm_lr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Link Record Receive Controller object, osm_lr_rcv_ctrl_construct,
-*	osm_lr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Link Record Receive Controller/osm_lr_rcv_ctrl_init
-* NAME
-*	osm_lr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_lr_rcv_ctrl_init function initializes a
-*	Link Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t
-osm_lr_rcv_ctrl_init(
-	IN osm_lr_rcv_ctrl_t* const p_ctrl,
-	IN osm_lr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_lr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_lr_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Link Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Link Record Receive Controller methods.
-*
-* SEE ALSO
-*	Link Record Receive Controller object, osm_lr_rcv_ctrl_construct,
-*	osm_lr_rcv_ctrl_destroy, osm_lr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Link Record Receive Controller/osm_lr_rcv_ctrl_is_inited
-* NAME
-*	osm_lr_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_lr_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_lr_rcv_ctrl_is_inited(
-	IN const osm_lr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_lr_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_lr_rcv_ctrl_construct or osm_lr_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	Link Record Receive Controller object, osm_lr_rcv_ctrl_construct,
-*	osm_lr_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_LR_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_mcmember_record.h b/osm/include/opensm/osm_sa_mcmember_record.h
index 802f3e8..c87d100 100644
--- a/osm/include/opensm/osm_sa_mcmember_record.h
+++ b/osm/include/opensm/osm_sa_mcmember_record.h
@@ -103,14 +103,14 @@ BEGIN_C_DECLS
 
 typedef struct _osm_mcmr
 {
-	osm_subn_t					*p_subn;
-	osm_sm_t					   *p_sm;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	uint16_t					   mlid_ho;
-  	cl_qlock_pool_t			pool;
+	osm_subn_t	*p_subn;
+	osm_sm_t	*p_sm;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	uint16_t	mlid_ho;
+	cl_qlock_pool_t	pool;
 } osm_mcmr_recv_t;
 
 
@@ -253,14 +253,14 @@ ib_api_status_t osm_mcmr_rcv_init(
 * SYNOPSIS
 */
 void osm_mcmr_rcv_process(
-	IN osm_mcmr_recv_t* const p_ctrl,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_ctrl
+*	context
 *		[in] Pointer to an osm_mcmr_recv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's MCMemberRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_mcmember_record_ctrl.h b/osm/include/opensm/osm_sa_mcmember_record_ctrl.h
deleted file mode 100644
index a73b817..0000000
--- a/osm/include/opensm/osm_sa_mcmember_record_ctrl.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_mcmr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA MCMemberRecord 
- *	attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-
-#ifndef _OSM_MCMRCTRL_H
-#define _OSM_MCMRCTRL_H
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_mcmember_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/MCMember Receive Controller
-* NAME
-*	MCMember Receive Controller
-*
-* DESCRIPTION
-*	The MCMember Receive Controller object encapsulates
-*	the information	needed to receive the MCMemberRecord attribute from a node.
-*
-*	The MCMember Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Ranjit Pandit, Intel
-*
-*********/
-
-/****s* OpenSM: MCMember Receive Controller/osm_mcmr_rcv_ctrl_t
-* NAME
-*	osm_mcmr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	MCMember Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mcmr_rcv_ctrl
-{
-	osm_mcmr_recv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_mcmr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the MCMember Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	MCMember Receive Controller object
-*	MCMember Receiver object
-*********/
-
-/****f* OpenSM: MCMember Receive Controller/osm_mcmr_rcv_ctrl_construct
-* NAME
-*	osm_mcmr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a MCMember Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_mcmr_rcv_ctrl_construct(
-	IN osm_mcmr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a MCMember Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_mcmr_rcv_ctrl_init, osm_mcmr_rcv_ctrl_destroy,
-*	and osm_mcmr_ctrl_is_inited.
-*
-*	Calling osm_mcmr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_mcmr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	MCMember Receive Controller object, osm_mcmr_rcv_ctrl_init,
-*	osm_mcmr_rcv_ctrl_destroy, osm_mcmr_ctrl_is_inited
-*********/
-
-/****f* OpenSM: MCMember Receive Controller/osm_mcmr_rcv_ctrl_destroy
-* NAME
-*	osm_mcmr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_mcmr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_mcmr_rcv_ctrl_destroy(
-	IN osm_mcmr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	MCMember Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_mcmr_rcv_ctrl_construct or osm_mcmr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	MCMember Receive Controller object, osm_mcmr_rcv_ctrl_construct,
-*	osm_mcmr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: MCMember Receive Controller/osm_mcmr_rcv_ctrl_init
-* NAME
-*	osm_mcmr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_mcmr_rcv_ctrl_init function initializes a
-*	MCMember Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_mcmr_rcv_ctrl_init(
-	IN osm_mcmr_rcv_ctrl_t* const p_ctrl,
-	IN osm_mcmr_recv_t* const p_mcmr,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_mcmr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_mcmr_recv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the MCMember Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other MCMember Receive Controller methods.
-*
-* SEE ALSO
-*	MCMember Receive Controller object, osm_mcmr_rcv_ctrl_construct,
-*	osm_mcmr_rcv_ctrl_destroy, osm_mcmr_ctrl_is_inited
-*********/
-
-/****f* OpenSM: MCMember Receive Controller/osm_mcmr_ctrl_is_inited
-* NAME
-*	osm_mcmr_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_mcmr_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_mcmr_ctrl_is_inited(
-	IN const osm_mcmr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_mcmr_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_mcmr_rcv_ctrl_construct or osm_mcmr_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	MCMember Receive Controller object, osm_mcmr_rcv_ctrl_construct,
-*	osm_mcmr_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_MCMRCTRL_H */
diff --git a/osm/include/opensm/osm_sa_mft_record.h b/osm/include/opensm/osm_sa_mft_record.h
index f961206..e63e4ef 100644
--- a/osm/include/opensm/osm_sa_mft_record.h
+++ b/osm/include/opensm/osm_sa_mft_record.h
@@ -99,13 +99,13 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_mft
 {
-  osm_subn_t*					p_subn;
-  osm_stats_t*					p_stats;
-  osm_sa_resp_t*				p_resp;
-  osm_mad_pool_t*				p_mad_pool;
-  osm_log_t*					p_log;
-  cl_plock_t*					p_lock;
-  cl_qlock_pool_t				pool;
+	osm_subn_t*	p_subn;
+	osm_stats_t*	p_stats;
+	osm_sa_resp_t*	p_resp;
+	osm_mad_pool_t*	p_mad_pool;
+	osm_log_t*	p_log;
+	cl_plock_t*	p_lock;
+	cl_qlock_pool_t	pool;
 } osm_mftr_rcv_t;
 /*
 * FIELDS
@@ -253,14 +253,14 @@ ib_api_status_t osm_mftr_rcv_init(
 * SYNOPSIS
 */
 void osm_mftr_rcv_process(
-	IN osm_mftr_rcv_t* const p_ctrl,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_ctrl
+*	context
 *		[in] Pointer to an osm_mftr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the switch node's MulticastForwardingTable attribute.
 *
diff --git a/osm/include/opensm/osm_sa_mft_record_ctrl.h b/osm/include/opensm/osm_sa_mft_record_ctrl.h
deleted file mode 100644
index a28374d..0000000
--- a/osm/include/opensm/osm_sa_mft_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_mftr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA
- *	MulticastForwardingTable attribute from a switch.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- */
-
-#ifndef _OSM_MFTR_RCV_CTRL_H_
-#define _OSM_MFTR_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_mft_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Multicast Forwarding Table Receive Controller
-* NAME
-*	Multicast Forwarding Table Record Receive Controller
-*
-* DESCRIPTION
-*	The Multicast Forwarding Table Receive Controller object encapsulates
-*	the information needed to receive the MulticastFowardingTable attribute
-*  from a switch node.
-*
-*	The Multicast Forwarding Table Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Hal Rosenstock, Voltaire
-*
-*********/
-
-/****s* OpenSM: Multicast Forwarding Table Receive Controller/osm_mftr_rcv_ctrl_t
-* NAME
-*	osm_mftr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Multicast Forwarding Table Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mftr_rcv_ctrl
-{
-	osm_mftr_rcv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-} osm_mftr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Multicast Forwarding Table Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Multicast Forwarding Table Receive Controller object
-*	Multicast Forwarding Table Receiver object
-*********/
-
-/****f* OpenSM: Multicast Forwarding Table Receive Controller/osm_mftr_rcv_ctrl_construct
-* NAME
-*	osm_mftr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Multicast Forwarding Table Receive
-*  Controller object.
-*
-* SYNOPSIS
-*/
-void osm_mftr_rcv_ctrl_construct(
-	IN osm_mftr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Multicast Forwarding Table Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_mftr_rcv_ctrl_init, osm_mftr_rcv_ctrl_destroy
-*
-*	Calling osm_mftr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_mftr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Multicast Forwarding Table Receive Controller object, osm_mftr_rcv_ctrl_init,
-*	osm_mftr_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: Multicast Forwarding Table Receive Controller/osm_mftr_rcv_ctrl_destroy
-* NAME
-*	osm_mftr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_mftr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_mftr_rcv_ctrl_destroy(
-	IN osm_mftr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Multicast Forwarding Table Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_mftr_rcv_ctrl_construct or osm_mftr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Multicast Forwarding Table Receive Controller object, osm_mftr_rcv_ctrl_construct,
-*	osm_mftr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Multicast Forwarding Table Receive Controller/osm_mftr_rcv_ctrl_init
-* NAME
-*	osm_mftr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_mftr_rcv_ctrl_init function initializes a
-*	Multicast Forwarding Table Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_mftr_rcv_ctrl_init(
-	IN osm_mftr_rcv_ctrl_t* const p_ctrl,
-	IN osm_mftr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_mftr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_mftr_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Multicast Forwarding Table Receive Controller object
-*  was initialized successfully.
-*
-* NOTES
-*	Allows calling other Multicast Forwarding Table Receive Controller methods.
-*
-* SEE ALSO
-*	Multicast Forwarding Table Receive Controller object, 
-*  osm_mftr_rcv_ctrl_construct, osm_mftr_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_MFTR_RCV_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_multipath_record.h b/osm/include/opensm/osm_sa_multipath_record.h
index d647227..6f99ec9 100644
--- a/osm/include/opensm/osm_sa_multipath_record.h
+++ b/osm/include/opensm/osm_sa_multipath_record.h
@@ -247,14 +247,14 @@ osm_mpr_rcv_init(
 */
 void
 osm_mpr_rcv_process(
-	IN osm_mpr_rcv_t*		const p_rcv,
-	IN osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_mpr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's MultiPathRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_multipath_record_ctrl.h b/osm/include/opensm/osm_sa_multipath_record_ctrl.h
deleted file mode 100644
index ca618f9..0000000
--- a/osm/include/opensm/osm_sa_multipath_record_ctrl.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (c) 2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_mpr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA
- *	MultiPathRecord attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- */
-
-#ifndef _OSM_MPRCTRL_H_
-#define _OSM_MPRCTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_multipath_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/MultiPath Record Receive Controller
-* NAME
-*	MultiPath Record Receive Controller
-*
-* DESCRIPTION
-*	The MultiPath Record Receive Controller object encapsulates
-*	the information	needed to receive the MultiPathRecord attribute from a node.
-*
-*	The MultiPath record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Hal Rosenstock, Voltaire 
-*
-*********/
-
-/****s* OpenSM: MultiPath Record Receive Controller/osm_mpr_rcv_ctrl_t
-* NAME
-*	osm_mpr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	MultiPath Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_mpr_rcv_ctrl
-{
-	osm_mpr_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_mpr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the MultiPath Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	MultiPath Record Receive Controller object
-*	MultiPath Record Receiver object
-*********/
-
-/****f* OpenSM: MultiPath Record Receive Controller/osm_pr_rcv_ctrl_construct
-* NAME
-*	osm_mpr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a MultiPath Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_mpr_rcv_ctrl_construct(
-	IN osm_mpr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a MultiPath Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_mpr_rcv_ctrl_init, osm_mpr_rcv_ctrl_destroy,
-*	and osm_mpr_rcv_ctrl_is_inited.
-*
-*	Calling osm_mpr_rcv_ctrl_construct is a prerequisite to calling any
-*	other method except osm_mpr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	MultiPath Record Receive Controller object, osm_mpr_rcv_ctrl_init,
-*	osm_mpr_rcv_ctrl_destroy, osm_mpr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: MultiPath Record Receive Controller/osm_mpr_rcv_ctrl_destroy
-* NAME
-*	osm_mpr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_mpr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_mpr_rcv_ctrl_destroy(
-	IN osm_mpr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	MultiPath Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_mpr_rcv_ctrl_construct or osm_mpr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	MultiPath Record Receive Controller object, osm_mpr_rcv_ctrl_construct,
-*	osm_mpr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: MultiPath Record Receive Controller/osm_mpr_rcv_ctrl_init
-* NAME
-*	osm_mpr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_mpr_rcv_ctrl_init function initializes a
-*	MultiPath Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_mpr_rcv_ctrl_init(
-	IN osm_mpr_rcv_ctrl_t* const p_ctrl,
-	IN osm_mpr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_mpr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_mpr_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the MultiPath Record Receive Controller object was
-*	initialized successfully.
-*
-* NOTES
-*	Allows calling other MultiPath Record Receive Controller methods.
-*
-* SEE ALSO
-*	MultiPath Record Receive Controller object, osm_pr_rcv_ctrl_construct,
-*	osm_mpr_rcv_ctrl_destroy, osm_mpr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: MultiPath Record Receive Controller/osm_mpr_rcv_ctrl_is_inited
-* NAME
-*	osm_mpr_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_mpr_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_mpr_rcv_ctrl_is_inited(
-	IN const osm_mpr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_mpr_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_mpr_rcv_ctrl_construct or osm_mpr_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	MultiPath Record Receive Controller object, osm_mpr_rcv_ctrl_construct,
-*	osm_mpr_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_MPRCTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_node_record.h b/osm/include/opensm/osm_sa_node_record.h
index f796eda..c0e8988 100644
--- a/osm/include/opensm/osm_sa_node_record.h
+++ b/osm/include/opensm/osm_sa_node_record.h
@@ -99,13 +99,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_nr_recv
 {
-	const osm_subn_t			*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	cl_qlock_pool_t				pool;
-
+	const osm_subn_t	*p_subn;
+	osm_sa_resp_t		*p_resp;
+	osm_mad_pool_t		*p_mad_pool;
+	osm_log_t		*p_log;
+	cl_plock_t		*p_lock;
+	cl_qlock_pool_t		pool;
 } osm_nr_rcv_t;
 /*
 * FIELDS
@@ -252,14 +251,14 @@ ib_api_status_t osm_nr_rcv_init(
 * SYNOPSIS
 */
 void osm_nr_rcv_process(
-	IN osm_nr_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_nr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's NodeRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_node_record_ctrl.h b/osm/include/opensm/osm_sa_node_record_ctrl.h
deleted file mode 100644
index 02b60b3..0000000
--- a/osm/include/opensm/osm_sa_node_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_nr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA NodeInfo
- *	record from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_NR_CTRL_H_
-#define _OSM_NR_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_node_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Node Record Receive Controller
-* NAME
-*	Node Record Receive Controller
-*
-* DESCRIPTION
-*	The Node Record Receive Controller object encapsulates
-*	the information	needed to receive the NodeInfo attribute from a node.
-*
-*	The Node Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Anil S Keshavamurthy, Intel
-*
-*********/
-
-/****s* OpenSM: Node Record Receive Controller/osm_nr_rcv_ctrl_t
-* NAME
-*	osm_nr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Node Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_nr_ctrl
-{
-	osm_nr_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_nr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Node Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Node Record Receive Controller object
-*	Node Record Receiver object
-*********/
-
-/****f* OpenSM: Node Record Receive Controller/osm_nr_rcv_ctrl_construct
-* NAME
-*	osm_nr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Node Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_nr_rcv_ctrl_construct(
-	IN osm_nr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Node Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_nr_rcv_ctrl_init, osm_nr_rcv_ctrl_destroy,
-*
-*	Calling osm_nr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_nr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Node Record Receive Controller object, osm_nr_rcv_ctrl_init,
-*	osm_nr_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: Node Record Receive Controller/osm_nr_rcv_ctrl_destroy
-* NAME
-*	osm_nr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_nr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_nr_rcv_ctrl_destroy(
-	IN osm_nr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Node Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_nr_rcv_ctrl_construct or osm_nr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Node Record Receive Controller object, osm_nr_rcv_ctrl_construct,
-*	osm_nr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Node Record Receive Controller/osm_nr_rcv_ctrl_init
-* NAME
-*	osm_nr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_nr_rcv_ctrl_init function initializes a
-*	Node Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_nr_rcv_ctrl_init(
-	IN osm_nr_rcv_ctrl_t* const p_ctrl,
-	IN osm_nr_rcv_t* const p_nr,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_nr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_nr_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Node Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Node Record Receive Controller methods.
-*
-* SEE ALSO
-*	Node Record Receive Controller object, osm_nr_rcv_ctrl_construct,
-*	osm_nr_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_NR_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_path_record.h b/osm/include/opensm/osm_sa_path_record.h
index 9196960..29667ef 100644
--- a/osm/include/opensm/osm_sa_path_record.h
+++ b/osm/include/opensm/osm_sa_path_record.h
@@ -102,12 +102,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_pr_rcv
 {
-	osm_subn_t				*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t				*p_log;
-	cl_plock_t				*p_lock;
-	cl_qlock_pool_t				pr_pool;
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	cl_qlock_pool_t	pr_pool;
 } osm_pr_rcv_t;
 /*
 * FIELDS
@@ -248,14 +248,14 @@ osm_pr_rcv_init(
 */
 void
 osm_pr_rcv_process(
-	IN osm_pr_rcv_t*			const p_rcv,
-	IN const osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_pr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's PathRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_path_record_ctrl.h b/osm/include/opensm/osm_sa_path_record_ctrl.h
deleted file mode 100644
index 7fba54a..0000000
--- a/osm/include/opensm/osm_sa_path_record_ctrl.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_pr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA PathRecord 
- *	attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_PRCTRL_H_
-#define _OSM_PRCTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_path_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Path Record Receive Controller
-* NAME
-*	Path Record Receive Controller
-*
-* DESCRIPTION
-*	The Path Record Receive Controller object encapsulates
-*	the information	needed to receive the PathRecord attribute from a node.
-*
-*	The Path record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Ranjit Pandit, Intel
-*
-*********/
-
-/****s* OpenSM: Path Record Receive Controller/osm_pr_rcv_ctrl_t
-* NAME
-*	osm_pr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Path Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_pr_rcv_ctrl
-{
-	osm_pr_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_pr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Path Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Path Record Receive Controller object
-*	Path Record Receiver object
-*********/
-
-/****f* OpenSM: Path Record Receive Controller/osm_pr_rcv_ctrl_construct
-* NAME
-*	osm_pr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Path Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_pr_rcv_ctrl_construct(
-	IN osm_pr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Path Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_pr_rcv_ctrl_init, osm_pr_rcv_ctrl_destroy,
-*	and osm_pr_rcv_ctrl_is_inited.
-*
-*	Calling osm_pr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_pr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Path Record Receive Controller object, osm_pr_rcv_ctrl_init,
-*	osm_pr_rcv_ctrl_destroy, osm_pr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Path Record Receive Controller/osm_pr_rcv_ctrl_destroy
-* NAME
-*	osm_pr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_pr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_pr_rcv_ctrl_destroy(
-	IN osm_pr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Path Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_pr_rcv_ctrl_construct or osm_pr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Path Record Receive Controller object, osm_pr_rcv_ctrl_construct,
-*	osm_pr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Path Record Receive Controller/osm_pr_rcv_ctrl_init
-* NAME
-*	osm_pr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_pr_rcv_ctrl_init function initializes a
-*	Path Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_pr_rcv_ctrl_init(
-	IN osm_pr_rcv_ctrl_t* const p_ctrl,
-	IN osm_pr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_pr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_pr_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Path Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Path Record Receive Controller methods.
-*
-* SEE ALSO
-*	Path Record Receive Controller object, osm_pr_rcv_ctrl_construct,
-*	osm_pr_rcv_ctrl_destroy, osm_pr_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Path Record Receive Controller/osm_pr_rcv_ctrl_is_inited
-* NAME
-*	osm_pr_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_pr_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_pr_rcv_ctrl_is_inited(
-	IN const osm_pr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_pr_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_pr_rcv_ctrl_construct or osm_pr_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	Path Record Receive Controller object, osm_pr_rcv_ctrl_construct,
-*	osm_pr_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_PRCTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_pkey_record.h b/osm/include/opensm/osm_sa_pkey_record.h
index f4eb73d..aceab9a 100644
--- a/osm/include/opensm/osm_sa_pkey_record.h
+++ b/osm/include/opensm/osm_sa_pkey_record.h
@@ -87,13 +87,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_pkey_rec_rcv
 {
-  const osm_subn_t         *p_subn;
-  osm_sa_resp_t            *p_resp;
-  osm_mad_pool_t           *p_mad_pool;
-  osm_log_t             *p_log;
-  cl_plock_t               *p_lock;
-  cl_qlock_pool_t        pool;
-
+  const osm_subn_t* p_subn;
+  osm_sa_resp_t* p_resp;
+  osm_mad_pool_t* p_mad_pool;
+  osm_log_t* p_log;
+  cl_plock_t* p_lock;
+  cl_qlock_pool_t pool;
 } osm_pkey_rec_rcv_t;
 /*
 * FIELDS
@@ -242,14 +241,14 @@ osm_pkey_rec_rcv_init(
 */
 void
 osm_pkey_rec_rcv_process(
-  IN osm_pkey_rec_rcv_t* const p_rcv,
-  IN const osm_madw_t* const p_madw );
+  IN void *context,
+  IN void *data );
 /*
 * PARAMETERS
-*  p_rcv
+*  context
 *     [in] Pointer to an osm_pkey_rec_rcv_t object.
 *
-*  p_madw
+*  data
 *     [in] Pointer to the MAD Wrapper containing the MAD
 *     that contains the P_Key Record Query attribute.
 *
diff --git a/osm/include/opensm/osm_sa_pkey_record_ctrl.h b/osm/include/opensm/osm_sa_pkey_record_ctrl.h
deleted file mode 100644
index e655692..0000000
--- a/osm/include/opensm/osm_sa_pkey_record_ctrl.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-#ifndef _OSM_PKEY_REC_CTRL_H_
-#define _OSM_PKEY_REC_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_pkey_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/P_Key Record Receive Controller
-* NAME
-*  P_Key Record Receive Controller
-*
-* DESCRIPTION
-*  The P_Key Record Receive Controller object encapsulates
-*  the information needed to handle P_Key record query from SA client.
-*
-*  The P_Key Record Receive Controller object is thread safe.
-*
-*  This object should be treated as opaque and should be
-*  manipulated only through the provided functions.
-*
-* AUTHOR
-*  Yael Kalka, Mellanox
-*
-*********/
-
-/****s* OpenSM: P_Key Record Receive Controller/osm_pkey_rec_rcv_ctrl_t
-* NAME
-*  osm_pkey_rec_rcv_ctrl_t
-*
-* DESCRIPTION
-*  P_Key Record Receive Controller structure.
-*
-*  This object should be treated as opaque and should
-*  be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_pkey_rec_rcv_ctrl
-{
-  osm_pkey_rec_rcv_t       *p_rcv;
-  osm_log_t             *p_log;
-  cl_dispatcher_t       *p_disp;
-  cl_disp_reg_handle_t     h_disp;
-
-} osm_pkey_rec_rcv_ctrl_t;
-/*
-* FIELDS
-*  p_rcv
-*     Pointer to the P_Key Record Receiver object.
-*
-*  p_log
-*     Pointer to the log object.
-*
-*  p_disp
-*     Pointer to the Dispatcher.
-*
-*  h_disp
-*     Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*  P_Key Record Receive Controller object
-*  P_Key Record Receiver object
-*********/
-
-/****f* OpenSM: P_Key Record Receive Controller/osm_pkey_rec_rcv_ctrl_construct
-* NAME
-*  osm_pkey_rec_rcv_ctrl_construct
-*
-* DESCRIPTION
-*  This function constructs a P_Key Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_pkey_rec_rcv_ctrl_construct(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*  p_ctrl
-*     [in] Pointer to a P_Key Record Receive Controller
-*     object to construct.
-*
-* RETURN VALUE
-*  This function does not return a value.
-*
-* NOTES
-*  Allows calling osm_pkey_rec_rcv_ctrl_init, osm_pkey_rec_rcv_ctrl_destroy
-*
-*  Calling osm_pkey_rec_rcv_ctrl_construct is a prerequisite to calling any other
-*  method except osm_pkey_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*  P_Key Record Receive Controller object, osm_pkey_rec_rcv_ctrl_init,
-*  osm_pkey_rec_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: P_Key Record Receive Controller/osm_pkey_rec_rcv_ctrl_destroy
-* NAME
-*  osm_pkey_rec_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*  The osm_pkey_rec_rcv_ctrl_destroy function destroys the object, releasing
-*  all resources.
-*
-* SYNOPSIS
-*/
-void osm_pkey_rec_rcv_ctrl_destroy(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*  p_ctrl
-*     [in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*  This function does not return a value.
-*
-* NOTES
-*  Performs any necessary cleanup of the specified
-*  P_Key Record Receive Controller object.
-*  Further operations should not be attempted on the destroyed object.
-*  This function should only be called after a call to
-*  osm_pkey_rec_rcv_ctrl_construct or osm_pkey_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*  P_Key Record Receive Controller object, osm_pkey_rec_rcv_ctrl_construct,
-*  osm_pkey_rec_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: P_Key Record Receive Controller/osm_pkey_rec_rcv_ctrl_init
-* NAME
-*  osm_pkey_rec_rcv_ctrl_init
-*
-* DESCRIPTION
-*  The osm_pkey_rec_rcv_ctrl_init function initializes a
-*  P_Key Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_pkey_rec_rcv_ctrl_init(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl,
-  IN osm_pkey_rec_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*  p_ctrl
-*     [in] Pointer to an osm_pkey_rec_rcv_ctrl_t object to initialize.
-*
-*  p_rcv
-*     [in] Pointer to an osm_pkey_rec_rcv_t object.
-*
-*  p_log
-*     [in] Pointer to the log object.
-*
-*  p_disp
-*     [in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*  CL_SUCCESS if the P_Key Record Receive Controller object was initialized
-*  successfully.
-*
-* NOTES
-*  Allows calling other P_Key Record Receive Controller methods.
-*
-* SEE ALSO
-*  P_Key Record Receive Controller object, osm_pkey_rec_rcv_ctrl_construct,
-*  osm_pkey_rec_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif   /* _OSM_PKEY_REC_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_portinfo_record.h b/osm/include/opensm/osm_sa_portinfo_record.h
index 6cd7e87..19cbfbf 100644
--- a/osm/include/opensm/osm_sa_portinfo_record.h
+++ b/osm/include/opensm/osm_sa_portinfo_record.h
@@ -100,12 +100,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_pir_rcv
 {
-	osm_subn_t				*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t				*p_log;
-	cl_plock_t				*p_lock;
-	cl_qlock_pool_t				 pool;
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	cl_qlock_pool_t	 pool;
 } osm_pir_rcv_t;
 /*
 * FIELDS
@@ -254,14 +254,14 @@ osm_pir_rcv_init(
 */
 void
 osm_pir_rcv_process(
-	IN osm_pir_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_pir_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's PortInfoRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_portinfo_record_ctrl.h b/osm/include/opensm/osm_sa_portinfo_record_ctrl.h
deleted file mode 100644
index 313fe03..0000000
--- a/osm/include/opensm/osm_sa_portinfo_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_pir_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA PortInfo
- *	attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_PIR_CTRL_H_
-#define _OSM_PIR_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_portinfo_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/PortInfo Record Receive Controller
-* NAME
-*	PortInfo Record Receive Controller
-*
-* DESCRIPTION
-*	The PortInfo Record Receive Controller object encapsulates
-*	the information	needed to receive the PortInfo attribute from a node.
-*
-*	The PortInfo Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Ranjit Pandit, Intel
-*
-*********/
-
-/****s* OpenSM: PortInfo Record Receive Controller/osm_pir_rcv_ctrl_t
-* NAME
-*	osm_pir_rcv_ctrl_t
-*
-* DESCRIPTION
-*	PortInfo Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_pir_rcv_ctrl
-{
-	osm_pir_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_pir_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the PortInfo Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	PortInfo Record Receive Controller object
-*	PortInfo Record Receiver object
-*********/
-
-/****f* OpenSM: PortInfo Record Receive Controller/osm_pir_rcv_ctrl_construct
-* NAME
-*	osm_pir_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a PortInfo Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_pir_rcv_ctrl_construct(
-	IN osm_pir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a PortInfo Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_pir_rcv_ctrl_init, osm_pir_rcv_ctrl_destroy
-*
-*	Calling osm_pir_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_pir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	PortInfo Record Receive Controller object, osm_pir_rcv_ctrl_init,
-*	osm_pir_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: PortInfo Record Receive Controller/osm_pir_rcv_ctrl_destroy
-* NAME
-*	osm_pir_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_pir_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_pir_rcv_ctrl_destroy(
-	IN osm_pir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	PortInfo Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_pir_rcv_ctrl_construct or osm_pir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	PortInfo Record Receive Controller object, osm_pir_rcv_ctrl_construct,
-*	osm_pir_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: PortInfo Record Receive Controller/osm_pir_rcv_ctrl_init
-* NAME
-*	osm_pir_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_pir_rcv_ctrl_init function initializes a
-*	PortInfo Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_pir_rcv_ctrl_init(
-	IN osm_pir_rcv_ctrl_t* const p_ctrl,
-	IN osm_pir_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_pir_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_pir_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the PortInfo Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other PortInfo Record Receive Controller methods.
-*
-* SEE ALSO
-*	PortInfo Record Receive Controller object, osm_pir_rcv_ctrl_construct,
-*	osm_pir_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_PIR_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_service_record.h b/osm/include/opensm/osm_sa_service_record.h
index 8fb9ce4..d485509 100644
--- a/osm/include/opensm/osm_sa_service_record.h
+++ b/osm/include/opensm/osm_sa_service_record.h
@@ -102,14 +102,13 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_sr_rcv
 {
-	osm_subn_t					*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	cl_qlock_pool_t				sr_pool;
-	cl_timer_t					sr_timer;
-
+	osm_subn_t	*p_subn;
+	osm_sa_resp_t	*p_resp;
+	osm_mad_pool_t	*p_mad_pool;
+	osm_log_t	*p_log;
+	cl_plock_t	*p_lock;
+	cl_qlock_pool_t	sr_pool;
+	cl_timer_t	sr_timer;
 } osm_sr_rcv_t;
 /*
 * FIELDS
@@ -250,14 +249,14 @@ osm_sr_rcv_init(
 */
 void
 osm_sr_rcv_process(
-	IN osm_sr_rcv_t*			const p_rcv,
-	IN const osm_madw_t*		const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_sr_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's ServiceRecord attribute.
 * NOTES
diff --git a/osm/include/opensm/osm_sa_service_record_ctrl.h b/osm/include/opensm/osm_sa_service_record_ctrl.h
deleted file mode 100644
index 1e1bd99..0000000
--- a/osm/include/opensm/osm_sa_service_record_ctrl.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_sr_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA Service
- *	record attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_SRCTRL_H_
-#define _OSM_SRCTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_service_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Service Record Receive Controller
-* NAME
-*	Service Record Receive Controller
-*
-* DESCRIPTION
-*	The Service Record Receive Controller object encapsulates
-*	the information	needed to receive the Service Record attribute from a node.
-*
-*	The Service Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Anil S Keshavamurthy, Intel
-*
-*********/
-
-/****s* OpenSM: Service Record Receive Controller/osm_sr_rcv_ctrl_t
-* NAME
-*	osm_sr_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Service Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_sr_rcv_ctrl
-{
-	osm_sr_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_sr_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Service Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Service Record Receiver object
-*********/
-
-/****f* OpenSM: Service Record Receive Controller/osm_sr_rcv_ctrl_construct
-* NAME
-*	osm_sr_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Service Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_sr_rcv_ctrl_construct(
-	IN osm_sr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Service Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_sr_rcv_ctrl_init, osm_sr_rcv_ctrl_destroy,
-*
-*	Calling osm_sr_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_psr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Service Record Receive Controller object, osm_sr_rcv_ctrl_init,
-*	osm_sr_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: Service Record Receive Controller/osm_sr_rcv_ctrl_destroy
-* NAME
-*	osm_sr_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_sr_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_sr_rcv_ctrl_destroy(
-	IN osm_sr_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Service Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_sr_rcv_ctrl_construct or osm_sr_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Service Record Receive Controller object, osm_sr_rcv_ctrl_construct,
-*	osm_sr_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Service Record Receive Controller/osm_sr_rcv_ctrl_init
-* NAME
-*	osm_sr_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_sr_rcv_ctrl_init function initializes a
-*	Service Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_sr_rcv_ctrl_init(
-	IN osm_sr_rcv_ctrl_t* const p_ctrl,
-	IN osm_sr_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_sr_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_sr_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	IB_SUCCESS if the osm_sr_rcv_t Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Service Record Receive Controller methods.
-*
-* SEE ALSO
-*	Service Record Receive Controller object, osm_sr_rcv_ctrl_construct,
-*	osm_sr_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_SRCTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_slvl_record.h b/osm/include/opensm/osm_sa_slvl_record.h
index f4409d1..a5ce9b4 100644
--- a/osm/include/opensm/osm_sa_slvl_record.h
+++ b/osm/include/opensm/osm_sa_slvl_record.h
@@ -100,13 +100,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_slvl_rec_rcv
 {
-	const osm_subn_t			*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t					*p_log;
-	cl_plock_t					*p_lock;
-	cl_qlock_pool_t			 pool;
-
+	const osm_subn_t	*p_subn;
+	osm_sa_resp_t		*p_resp;
+	osm_mad_pool_t		*p_mad_pool;
+	osm_log_t		*p_log;
+	cl_plock_t		*p_lock;
+	cl_qlock_pool_t		 pool;
 } osm_slvl_rec_rcv_t;
 /*
 * FIELDS
@@ -255,14 +254,14 @@ osm_slvl_rec_rcv_init(
 */
 void
 osm_slvl_rec_rcv_process(
-	IN osm_slvl_rec_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_slvl_rec_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the SLtoVL Map Record Query attribute.
 *
diff --git a/osm/include/opensm/osm_sa_slvl_record_ctrl.h b/osm/include/opensm/osm_sa_slvl_record_ctrl.h
deleted file mode 100644
index 6fdf77a..0000000
--- a/osm/include/opensm/osm_sa_slvl_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_sa_slvl_rec_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA VL Arbitration
- *	record query from SA client.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.3 $
- */
-
-#ifndef _OSM_SLVL_REC_CTRL_H_
-#define _OSM_SLVL_REC_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_slvl_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/SLtoVL Record Receive Controller
-* NAME
-*	SLtoVL Record Receive Controller
-*
-* DESCRIPTION
-*	The SLtoVL Mapping Record Receive Controller object encapsulates
-*	the information needed to handle SLtoVL Mapping record query from SA client.
-*
-*	The SLtoVL Mapping Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Eitan Zahavi, Mellanox
-*
-*********/
-
-/****s* OpenSM: SLtoVL Mapping Record Receive Controller/osm_slvl_rec_rcv_ctrl_t
-* NAME
-*	osm_slvl_rec_rcv_ctrl_t
-*
-* DESCRIPTION
-*	SLtoVL Mapping Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_slvl_rec_rcv_ctrl
-{
-	osm_slvl_rec_rcv_t			   *p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_slvl_rec_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the SLtoVL Mapping Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	SLtoVL Mapping Record Receive Controller object
-*	SLtoVL Mapping Record Receiver object
-*********/
-
-/****f* OpenSM: SLtoVL Mapping Record Receive Controller/osm_slvl_rec_rcv_ctrl_construct
-* NAME
-*	osm_slvl_rec_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a SLtoVL Mapping Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_slvl_rec_rcv_ctrl_construct(
-	IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a SLtoVL Mapping Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_slvl_rec_rcv_ctrl_init, osm_slvl_rec_rcv_ctrl_destroy
-*
-*	Calling osm_slvl_rec_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_slvl_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*	SLtoVL Mapping Record Receive Controller object, osm_slvl_rec_rcv_ctrl_init,
-*	osm_slvl_rec_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: SLtoVL Mapping Record Receive Controller/osm_slvl_rec_rcv_ctrl_destroy
-* NAME
-*	osm_slvl_rec_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_slvl_rec_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_slvl_rec_rcv_ctrl_destroy(
-	IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	SLtoVL Mapping Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_slvl_rec_rcv_ctrl_construct or osm_slvl_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*	SLtoVL Mapping Record Receive Controller object, osm_slvl_rec_rcv_ctrl_construct,
-*	osm_slvl_rec_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: SLtoVL Mapping Record Receive Controller/osm_slvl_rec_rcv_ctrl_init
-* NAME
-*	osm_slvl_rec_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_slvl_rec_rcv_ctrl_init function initializes a
-*	SLtoVL Mapping Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_slvl_rec_rcv_ctrl_init(
-	IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl,
-	IN osm_slvl_rec_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_slvl_rec_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_slvl_rec_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the SLtoVL Mapping Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other SLtoVL Mapping Record Receive Controller methods.
-*
-* SEE ALSO
-*	SLtoVL Mapping Record Receive Controller object, osm_slvl_rec_rcv_ctrl_construct,
-*	osm_slvl_rec_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_SLVL_REC_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_sminfo_record.h b/osm/include/opensm/osm_sa_sminfo_record.h
index cafc09b..0020c4f 100644
--- a/osm/include/opensm/osm_sa_sminfo_record.h
+++ b/osm/include/opensm/osm_sa_sminfo_record.h
@@ -99,13 +99,13 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_smir
 {
-	osm_subn_t*				p_subn;
-	osm_stats_t*				p_stats;
-	osm_sa_resp_t*				p_resp;
-	osm_mad_pool_t*				p_mad_pool;
-	osm_log_t*				p_log;
-	cl_plock_t*				p_lock;
-	cl_qlock_pool_t				pool;
+	osm_subn_t*	p_subn;
+	osm_stats_t*	p_stats;
+	osm_sa_resp_t*	p_resp;
+	osm_mad_pool_t*	p_mad_pool;
+	osm_log_t*	p_log;
+	cl_plock_t*	p_lock;
+	cl_qlock_pool_t	pool;
 } osm_smir_rcv_t;
 /*
 * FIELDS
@@ -236,14 +236,14 @@ ib_api_status_t osm_smir_rcv_init(
 * SYNOPSIS
 */
 void osm_smir_rcv_process(
-	IN osm_smir_rcv_t* const p_ctrl,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_ctrl
+*	context
 *		[in] Pointer to an osm_smir_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's SMInfoRecord attribute.
 *
diff --git a/osm/include/opensm/osm_sa_sminfo_record_ctrl.h b/osm/include/opensm/osm_sa_sminfo_record_ctrl.h
deleted file mode 100644
index d51a947..0000000
--- a/osm/include/opensm/osm_sa_sminfo_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_smir_ctrl_t.
- *	This object represents a controller that receives the IBA SMInfo
- *	attribute from a node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#ifndef _OSM_SMIR_CTRL_H_
-#define _OSM_SMIR_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_sminfo_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/SM Info Receive Controller
-* NAME
-*	SM Info Receive Controller
-*
-* DESCRIPTION
-*	The SM Info Receive Controller object encapsulates
-*	the information	needed to receive the SMInfo attribute from a node.
-*
-*	The SM Info Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Ranjit Pandit, Intel
-*
-*********/
-
-/****s* OpenSM: SM Info Receive Controller/osm_smir_ctrl_t
-* NAME
-*	osm_smir_ctrl_t
-*
-* DESCRIPTION
-*	SM Info Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_smir_ctrl
-{
-	osm_smir_rcv_t				*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t				*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_smir_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the SM Info Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	SM Info Receive Controller object
-*	SM Info Receiver object
-*********/
-
-/****f* OpenSM: SM Info Receive Controller/osm_smir_ctrl_construct
-* NAME
-*	osm_smir_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a SM Info Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_smir_ctrl_construct(
-	IN osm_smir_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a SM Info Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_smir_ctrl_init, osm_smir_ctrl_destroy
-*
-*	Calling osm_smir_ctrl_construct is a prerequisite to calling any other
-*	method except osm_smir_ctrl_init.
-*
-* SEE ALSO
-*	SM Info Receive Controller object, osm_smir_ctrl_init,
-*	osm_smir_ctrl_destroy
-*********/
-
-/****f* OpenSM: SM Info Receive Controller/osm_smir_ctrl_destroy
-* NAME
-*	osm_smir_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_smir_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_smir_ctrl_destroy(
-	IN osm_smir_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	SM Info Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_smir_ctrl_construct or osm_smir_ctrl_init.
-*
-* SEE ALSO
-*	SM Info Receive Controller object, osm_smir_ctrl_construct,
-*	osm_smir_ctrl_init
-*********/
-
-/****f* OpenSM: SM Info Receive Controller/osm_smir_ctrl_init
-* NAME
-*	osm_smir_ctrl_init
-*
-* DESCRIPTION
-*	The osm_smir_ctrl_init function initializes a
-*	SM Info Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_smir_ctrl_init(
-	IN osm_smir_ctrl_t* const p_ctrl,
-	IN osm_smir_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_smir_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_smir_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the SM Info Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other SM Info Receive Controller methods.
-*
-* SEE ALSO
-*	SM Info Receive Controller object, osm_smir_ctrl_construct,
-*	osm_smir_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_SMIR_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_sw_info_record.h b/osm/include/opensm/osm_sa_sw_info_record.h
index c6b421f..674b2f7 100644
--- a/osm/include/opensm/osm_sa_sw_info_record.h
+++ b/osm/include/opensm/osm_sa_sw_info_record.h
@@ -280,14 +280,14 @@ boolean_t osm_sir_rcv_is_inited(
 * SYNOPSIS
 */
 void osm_sir_rcv_process(
-	IN osm_sir_rcv_t* const p_ctrl,
-	IN const osm_madw_t*   const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_ctrl
+*	context
 *		[in] Pointer to an osm_sir_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the node's SwitchInfo attribute.
 *
diff --git a/osm/include/opensm/osm_sa_sw_info_record_ctrl.h b/osm/include/opensm/osm_sa_sw_info_record_ctrl.h
deleted file mode 100644
index b58654f..0000000
--- a/osm/include/opensm/osm_sa_sw_info_record_ctrl.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_sir_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA SwitchInfo
- *	attribute from a switch node.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- */
-
-#ifndef _OSM_SIR_RCV_CTRL_H_
-#define _OSM_SIR_RCV_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_sa_sw_info_record.h>
-#include <opensm/osm_log.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/Switch Info Receive Controller
-* NAME
-*	Switch Info Receive Controller
-*
-* DESCRIPTION
-*	The Switch Info Receive Controller object encapsulates the information
-*	needed to receive the SwitchInfo attribute from a switch node.
-*
-*	The Switch Info Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Hal Rosenstock, Voltaire
-*
-*********/
-
-/****s* OpenSM: Switch Info Receive Controller/osm_sir_rcv_ctrl_t
-* NAME
-*	osm_sir_rcv_ctrl_t
-*
-* DESCRIPTION
-*	Switch Info Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_sir_rcv_ctrl
-{
-	osm_sir_rcv_t			*p_rcv;
-	osm_log_t			*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-} osm_sir_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the Switch Info Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	Switch Info Receive Controller object
-*	Switch Info Receiver object
-*********/
-
-/****f* OpenSM: Switch Info Receive Controller/osm_sir_rcv_ctrl_construct
-* NAME
-*	osm_sir_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a Switch Info Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_sir_rcv_ctrl_construct(
-	IN osm_sir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a Switch Info Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_sir_rcv_ctrl_init, osm_sir_rcv_ctrl_destroy,
-*	and osm_sir_rcv_ctrl_is_inited.
-*
-*	Calling osm_sir_rcv_ctrl_construct is a prerequisite to calling any
-*	other method except osm_sir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Switch Info Receive Controller object, osm_sir_rcv_ctrl_init,
-*	osm_sir_rcv_ctrl_destroy, osm_sir_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Switch Info Receive Controller/osm_sir_rcv_ctrl_destroy
-* NAME
-*	osm_sir_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_sir_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_sir_rcv_ctrl_destroy(
-	IN osm_sir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	Switch Info Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_sir_rcv_ctrl_construct or osm_sir_rcv_ctrl_init.
-*
-* SEE ALSO
-*	Switch Info Receive Controller object, osm_sir_rcv_ctrl_construct,
-*	osm_sir_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: Switch Info Receive Controller/osm_sir_rcv_ctrl_init
-* NAME
-*	osm_sir_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_sir_rcv_ctrl_init function initializes a
-*	Switch Info Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_sir_rcv_ctrl_init(
-	IN osm_sir_rcv_ctrl_t* const p_ctrl,
-	IN osm_sir_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_sir_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_sir_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the Switch Info Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other Switch Info Receive Controller methods.
-*
-* SEE ALSO
-*	Switch Info Receive Controller object, osm_sir_rcv_ctrl_construct,
-*	osm_sir_rcv_ctrl_destroy, osm_sir_rcv_ctrl_is_inited
-*********/
-
-/****f* OpenSM: Switch Info Receive Controller/osm_sir_rcv_ctrl_is_inited
-* NAME
-*	osm_sir_rcv_ctrl_is_inited
-*
-* DESCRIPTION
-*	Indicates if the object has been initialized with osm_sir_rcv_ctrl_init.
-*
-* SYNOPSIS
-*/
-boolean_t osm_sir_rcv_ctrl_is_inited(
-	IN const osm_sir_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_sir_rcv_ctrl_t object.
-*
-* RETURN VALUES
-*	TRUE if the object was initialized successfully,
-*	FALSE otherwise.
-*
-* NOTES
-*	The osm_sir_rcv_ctrl_construct or osm_sir_rcv_ctrl_init must be
-*	called before using this function.
-*
-* SEE ALSO
-*	Switch Info Receive Controller object, osm_sir_rcv_ctrl_construct,
-*	osm_sir_rcv_ctrl_init
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_SIR_RCV_CTRL_H_ */
diff --git a/osm/include/opensm/osm_sa_vlarb_record.h b/osm/include/opensm/osm_sa_vlarb_record.h
index a30ebfd..4aad76f 100644
--- a/osm/include/opensm/osm_sa_vlarb_record.h
+++ b/osm/include/opensm/osm_sa_vlarb_record.h
@@ -100,12 +100,12 @@ BEGIN_C_DECLS
 */
 typedef struct _osm_vlarb_rec_rcv
 {
-	const osm_subn_t			*p_subn;
-	osm_sa_resp_t				*p_resp;
-	osm_mad_pool_t				*p_mad_pool;
-	osm_log_t				*p_log;
-	cl_plock_t				*p_lock;
-	cl_qlock_pool_t				pool;
+	const osm_subn_t	*p_subn;
+	osm_sa_resp_t		*p_resp;
+	osm_mad_pool_t		*p_mad_pool;
+	osm_log_t		*p_log;
+	cl_plock_t		*p_lock;
+	cl_qlock_pool_t		pool;
 } osm_vlarb_rec_rcv_t;
 /*
 * FIELDS
@@ -254,14 +254,14 @@ osm_vlarb_rec_rcv_init(
 */
 void
 osm_vlarb_rec_rcv_process(
-	IN osm_vlarb_rec_rcv_t* const p_rcv,
-	IN const osm_madw_t* const p_madw );
+	IN void *context,
+	IN void *data );
 /*
 * PARAMETERS
-*	p_rcv
+*	context
 *		[in] Pointer to an osm_vlarb_rec_rcv_t object.
 *
-*	p_madw
+*	data
 *		[in] Pointer to the MAD Wrapper containing the MAD
 *		that contains the VL Arbitration Record Query attribute.
 *
diff --git a/osm/include/opensm/osm_sa_vlarb_record_ctrl.h b/osm/include/opensm/osm_sa_vlarb_record_ctrl.h
deleted file mode 100644
index b61960e..0000000
--- a/osm/include/opensm/osm_sa_vlarb_record_ctrl.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- * 	Declaration of osm_sa_vlarb_rec_rcv_ctrl_t.
- *	This object represents a controller that receives the IBA VL Arbitration
- *	record query from SA client.
- *	This object is part of the OpenSM family of objects.
- *
- * Environment:
- * 	Linux User Mode
- *
- * $Revision: 1.3 $
- */
-
-#ifndef _OSM_VLARB_REC_CTRL_H_
-#define _OSM_VLARB_REC_CTRL_H_
-
-#include <complib/cl_dispatcher.h>
-#include <opensm/osm_base.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_sa_vlarb_record.h>
-
-#ifdef __cplusplus
-#  define BEGIN_C_DECLS extern "C" {
-#  define END_C_DECLS   }
-#else /* !__cplusplus */
-#  define BEGIN_C_DECLS
-#  define END_C_DECLS
-#endif /* __cplusplus */
-
-BEGIN_C_DECLS
-
-/****h* OpenSM/VLArbitration Record Receive Controller
-* NAME
-*	VLArbitration Record Receive Controller
-*
-* DESCRIPTION
-*	The VLArbitration Record Receive Controller object encapsulates
-*	the information needed to handle VLArbitration record query from SA client.
-*
-*	The VLArbitration Record Receive Controller object is thread safe.
-*
-*	This object should be treated as opaque and should be
-*	manipulated only through the provided functions.
-*
-* AUTHOR
-*	Eitan Zahavi, Mellanox
-*
-*********/
-
-/****s* OpenSM: VLArbitration Record Receive Controller/osm_vlarb_rec_rcv_ctrl_t
-* NAME
-*	osm_vlarb_rec_rcv_ctrl_t
-*
-* DESCRIPTION
-*	VLArbitration Record Receive Controller structure.
-*
-*	This object should be treated as opaque and should
-*	be manipulated only through the provided functions.
-*
-* SYNOPSIS
-*/
-typedef struct _osm_vlarb_rec_rcv_ctrl
-{
-	osm_vlarb_rec_rcv_t			*p_rcv;
-	osm_log_t					*p_log;
-	cl_dispatcher_t			*p_disp;
-	cl_disp_reg_handle_t		h_disp;
-
-} osm_vlarb_rec_rcv_ctrl_t;
-/*
-* FIELDS
-*	p_rcv
-*		Pointer to the VLArbitration Record Receiver object.
-*
-*	p_log
-*		Pointer to the log object.
-*
-*	p_disp
-*		Pointer to the Dispatcher.
-*
-*	h_disp
-*		Handle returned from dispatcher registration.
-*
-* SEE ALSO
-*	VLArbitration Record Receive Controller object
-*	VLArbitration Record Receiver object
-*********/
-
-/****f* OpenSM: VLArbitration Record Receive Controller/osm_vlarb_rec_rcv_ctrl_construct
-* NAME
-*	osm_vlarb_rec_rcv_ctrl_construct
-*
-* DESCRIPTION
-*	This function constructs a VLArbitration Record Receive Controller object.
-*
-* SYNOPSIS
-*/
-void osm_vlarb_rec_rcv_ctrl_construct(
-	IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to a VLArbitration Record Receive Controller
-*		object to construct.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Allows calling osm_vlarb_rec_rcv_ctrl_init, osm_vlarb_rec_rcv_ctrl_destroy
-*
-*	Calling osm_vlarb_rec_rcv_ctrl_construct is a prerequisite to calling any other
-*	method except osm_vlarb_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*	VLArbitration Record Receive Controller object, osm_vlarb_rec_rcv_ctrl_init,
-*	osm_vlarb_rec_rcv_ctrl_destroy
-*********/
-
-/****f* OpenSM: VLArbitration Record Receive Controller/osm_vlarb_rec_rcv_ctrl_destroy
-* NAME
-*	osm_vlarb_rec_rcv_ctrl_destroy
-*
-* DESCRIPTION
-*	The osm_vlarb_rec_rcv_ctrl_destroy function destroys the object, releasing
-*	all resources.
-*
-* SYNOPSIS
-*/
-void osm_vlarb_rec_rcv_ctrl_destroy(
-	IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to the object to destroy.
-*
-* RETURN VALUE
-*	This function does not return a value.
-*
-* NOTES
-*	Performs any necessary cleanup of the specified
-*	VLArbitration Record Receive Controller object.
-*	Further operations should not be attempted on the destroyed object.
-*	This function should only be called after a call to
-*	osm_vlarb_rec_rcv_ctrl_construct or osm_vlarb_rec_rcv_ctrl_init.
-*
-* SEE ALSO
-*	VLArbitration Record Receive Controller object, osm_vlarb_rec_rcv_ctrl_construct,
-*	osm_vlarb_rec_rcv_ctrl_init
-*********/
-
-/****f* OpenSM: VLArbitration Record Receive Controller/osm_vlarb_rec_rcv_ctrl_init
-* NAME
-*	osm_vlarb_rec_rcv_ctrl_init
-*
-* DESCRIPTION
-*	The osm_vlarb_rec_rcv_ctrl_init function initializes a
-*	VLArbitration Record Receive Controller object for use.
-*
-* SYNOPSIS
-*/
-ib_api_status_t osm_vlarb_rec_rcv_ctrl_init(
-	IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl,
-	IN osm_vlarb_rec_rcv_t* const p_rcv,
-	IN osm_log_t* const p_log,
-	IN cl_dispatcher_t* const p_disp );
-/*
-* PARAMETERS
-*	p_ctrl
-*		[in] Pointer to an osm_vlarb_rec_rcv_ctrl_t object to initialize.
-*
-*	p_rcv
-*		[in] Pointer to an osm_vlarb_rec_rcv_t object.
-*
-*	p_log
-*		[in] Pointer to the log object.
-*
-*	p_disp
-*		[in] Pointer to the OpenSM central Dispatcher.
-*
-* RETURN VALUES
-*	CL_SUCCESS if the VLArbitration Record Receive Controller object was initialized
-*	successfully.
-*
-* NOTES
-*	Allows calling other VLArbitration Record Receive Controller methods.
-*
-* SEE ALSO
-*	VLArbitration Record Receive Controller object, osm_vlarb_rec_rcv_ctrl_construct,
-*	osm_vlarb_rec_rcv_ctrl_destroy
-*********/
-
-END_C_DECLS
-
-#endif	/* _OSM_VLARB_REC_CTRL_H_ */
diff --git a/osm/opensm/Makefile.am b/osm/opensm/Makefile.am
index d9e63d4..de77a97 100644
--- a/osm/opensm/Makefile.am
+++ b/osm/opensm/Makefile.am
@@ -41,24 +41,24 @@ opensm_SOURCES = main.c osm_console.c osm_db_files.c \
 		 osm_port_info_rcv.c \
 		 osm_remote_sm.c osm_req.c osm_req_ctrl.c \
 		 osm_resp.c osm_sa.c osm_sa_class_port_info.c \
-		 osm_sa_class_port_info_ctrl.c osm_sa_informinfo.c \
-		 osm_sa_informinfo_ctrl.c osm_sa_lft_record.c \
-		 osm_sa_lft_record_ctrl.c osm_sa_mft_record.c \
-		 osm_sa_mft_record_ctrl.c osm_sa_link_record.c \
-		 osm_sa_link_record_ctrl.c osm_sa_mad_ctrl.c \
-		 osm_sa_mcmember_record.c osm_sa_mcmember_record_ctrl.c \
-		 osm_sa_node_record.c osm_sa_node_record_ctrl.c \
-		 osm_sa_path_record.c osm_sa_path_record_ctrl.c \
-		 osm_sa_pkey_record.c osm_sa_pkey_record_ctrl.c \
-		 osm_sa_portinfo_record.c osm_sa_portinfo_record_ctrl.c \
-		 osm_sa_guidinfo_record.c osm_sa_guidinfo_record_ctrl.c \
-		 osm_sa_multipath_record.c osm_sa_multipath_record_ctrl.c \
+		 osm_sa_informinfo.c \
+		 osm_sa_lft_record.c \
+		 osm_sa_mft_record.c \
+		 osm_sa_link_record.c \
+		 osm_sa_mad_ctrl.c \
+		 osm_sa_mcmember_record.c \
+		 osm_sa_node_record.c \
+		 osm_sa_path_record.c \
+		 osm_sa_pkey_record.c \
+		 osm_sa_portinfo_record.c \
+		 osm_sa_guidinfo_record.c \
+		 osm_sa_multipath_record.c \
 		 osm_sa_response.c osm_sa_service_record.c \
-		 osm_sa_service_record_ctrl.c osm_sa_slvl_record.c \
-		 osm_sa_slvl_record_ctrl.c osm_sa_sminfo_record.c \
-		 osm_sa_sminfo_record_ctrl.c osm_sa_vlarb_record.c \
-		 osm_sa_vlarb_record_ctrl.c osm_sa_sw_info_record.c \
-		 osm_sa_sw_info_record_ctrl.c osm_service.c \
+		 osm_sa_slvl_record.c \
+		 osm_sa_sminfo_record.c \
+		 osm_sa_vlarb_record.c \
+		 osm_sa_sw_info_record.c \
+		 osm_service.c \
 		 osm_slvl_map_rcv.c \
 		 osm_sm.c osm_sminfo_rcv.c \
 		 osm_sm_mad_ctrl.c \
diff --git a/osm/opensm/osm_sa.c b/osm/opensm/osm_sa.c
index 60dffd7..42a38aa 100644
--- a/osm/opensm/osm_sa.c
+++ b/osm/opensm/osm_sa.c
@@ -82,58 +82,25 @@ osm_sa_construct(
   p_sa->state = OSM_SA_STATE_INIT;
   p_sa->sa_trans_id = OSM_SA_INITIAL_TID_VALUE;
 
-  osm_sa_mad_ctrl_construct( &p_sa->mad_ctrl );
   osm_sa_resp_construct( &p_sa->resp );
-
   osm_nr_rcv_construct( &p_sa->nr_rcv);
-  osm_nr_rcv_ctrl_construct( &p_sa->nr_rcv_ctrl );
-
   osm_pir_rcv_construct( &p_sa->pir_rcv );
-  osm_pir_rcv_ctrl_construct( &p_sa->pir_rcv_ctrl );
-
   osm_gir_rcv_construct( &p_sa->gir_rcv );
-  osm_gir_rcv_ctrl_construct( &p_sa->gir_rcv_ctrl );
-
   osm_lr_rcv_construct( &p_sa->lr_rcv );
-  osm_lr_rcv_ctrl_construct( &p_sa->lr_rcv_ctrl );
-
   osm_pr_rcv_construct( &p_sa->pr_rcv );
-  osm_pr_rcv_ctrl_construct( &p_sa->pr_rcv_ctrl );
-
 #if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
   osm_mpr_rcv_construct( &p_sa->mpr_rcv );
-  osm_mpr_rcv_ctrl_construct( &p_sa->mpr_rcv_ctrl );
 #endif
-
   osm_smir_rcv_construct( &p_sa->smir_rcv );
-  osm_smir_ctrl_construct( &p_sa->smir_ctrl );
-
   osm_mcmr_rcv_construct(&p_sa->mcmr_rcv );
-  osm_mcmr_rcv_ctrl_construct(&p_sa->mcmr_rcv_ctlr);
-
   osm_sr_rcv_construct( &p_sa->sr_rcv );
-  osm_sr_rcv_ctrl_construct( &p_sa->sr_rcv_ctrl );
-
   osm_infr_rcv_construct( &p_sa->infr_rcv );
-  osm_infr_rcv_ctrl_construct( &p_sa->infr_rcv_ctrl );
-
   osm_vlarb_rec_rcv_construct( &p_sa->vlarb_rec_rcv );
-  osm_vlarb_rec_rcv_ctrl_construct( &p_sa->vlarb_rec_rcv_ctrl );
-
   osm_slvl_rec_rcv_construct( &p_sa->slvl_rec_rcv );
-  osm_slvl_rec_rcv_ctrl_construct( &p_sa->slvl_rec_rcv_ctrl );
-
   osm_pkey_rec_rcv_construct( &p_sa->pkey_rec_rcv );
-  osm_pkey_rec_rcv_ctrl_construct( &p_sa->pkey_rec_rcv_ctrl );
-
   osm_lftr_rcv_construct( &p_sa->lftr_rcv );
-  osm_lftr_rcv_ctrl_construct( &p_sa->lftr_rcv_ctrl );
-
   osm_sir_rcv_construct( &p_sa->sir_rcv );
-  osm_sir_rcv_ctrl_construct( &p_sa->sir_rcv_ctrl );
-
   osm_mftr_rcv_construct( &p_sa->mftr_rcv );
-  osm_mftr_rcv_ctrl_construct( &p_sa->mftr_rcv_ctrl );
 }
 
 /**********************************************************************
@@ -149,24 +116,25 @@ osm_sa_shutdown(
   status = osm_sa_mad_ctrl_unbind( &p_sa->mad_ctrl );
 
   /* remove any registered dispatcher message */
-  osm_nr_rcv_ctrl_destroy( &p_sa->nr_rcv_ctrl );
-  osm_pir_rcv_ctrl_destroy( &p_sa->pir_rcv_ctrl );
-  osm_gir_rcv_ctrl_destroy( &p_sa->gir_rcv_ctrl );
-  osm_lr_rcv_ctrl_destroy( &p_sa->lr_rcv_ctrl );
-  osm_pr_rcv_ctrl_destroy( &p_sa->pr_rcv_ctrl );
+  cl_disp_unregister( p_sa->nr_disp_h );
+  cl_disp_unregister( p_sa->pir_disp_h );
+  cl_disp_unregister( p_sa->gir_disp_h );
+  cl_disp_unregister( p_sa->lr_disp_h );
+  cl_disp_unregister( p_sa->pr_disp_h );
 #if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
-  osm_mpr_rcv_ctrl_destroy( &p_sa->mpr_rcv_ctrl );
+  cl_disp_unregister( p_sa->mpr_disp_h );
 #endif
-  osm_smir_ctrl_destroy( &p_sa->smir_ctrl );
-  osm_mcmr_rcv_ctrl_destroy( &p_sa->mcmr_rcv_ctlr);
-  osm_sr_rcv_ctrl_destroy( &p_sa->sr_rcv_ctrl );
-  osm_infr_rcv_ctrl_destroy( &p_sa->infr_rcv_ctrl );
-  osm_vlarb_rec_rcv_ctrl_destroy( &p_sa->vlarb_rec_rcv_ctrl );
-  osm_slvl_rec_rcv_ctrl_destroy( &p_sa->slvl_rec_rcv_ctrl );
-  osm_pkey_rec_rcv_ctrl_destroy( &p_sa->pkey_rec_rcv_ctrl );
-  osm_lftr_rcv_ctrl_destroy( &p_sa->lftr_rcv_ctrl );
-  osm_sir_rcv_ctrl_destroy( &p_sa->sir_rcv_ctrl );
-  osm_mftr_rcv_ctrl_destroy( &p_sa->mftr_rcv_ctrl );
+  cl_disp_unregister( p_sa->smir_disp_h );
+  cl_disp_unregister( p_sa->mcmr_disp_h);
+  cl_disp_unregister( p_sa->sr_disp_h );
+  cl_disp_unregister( p_sa->infr_disp_h );
+  cl_disp_unregister( p_sa->infir_disp_h );
+  cl_disp_unregister( p_sa->vlarb_disp_h );
+  cl_disp_unregister( p_sa->slvl_disp_h );
+  cl_disp_unregister( p_sa->pkey_disp_h );
+  cl_disp_unregister( p_sa->lft_disp_h );
+  cl_disp_unregister( p_sa->sir_disp_h );
+  cl_disp_unregister( p_sa->mft_disp_h );
   osm_sa_mad_ctrl_destroy( &p_sa->mad_ctrl );
 
   OSM_LOG_EXIT( p_sa->p_log );
@@ -260,14 +228,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_cpi_rcv_ctrl_init(
-    &p_sa->cpi_rcv_ctrl,
-    &p_sa->cpi_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_nr_rcv_init(
     &p_sa->nr_rcv,
     &p_sa->resp,
@@ -278,14 +238,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_nr_rcv_ctrl_init(
-    &p_sa->nr_rcv_ctrl,
-    &p_sa->nr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_pir_rcv_init(
     &p_sa->pir_rcv,
     &p_sa->resp,
@@ -296,14 +248,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_pir_rcv_ctrl_init(
-    &p_sa->pir_rcv_ctrl,
-    &p_sa->pir_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_gir_rcv_init(
     &p_sa->gir_rcv,
     &p_sa->resp,
@@ -314,14 +258,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_gir_rcv_ctrl_init(
-    &p_sa->gir_rcv_ctrl,
-    &p_sa->gir_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_lr_rcv_init(
     &p_sa->lr_rcv,
     &p_sa->resp,
@@ -332,14 +268,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_lr_rcv_ctrl_init(
-    &p_sa->lr_rcv_ctrl,
-    &p_sa->lr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_pr_rcv_init(
     &p_sa->pr_rcv,
     &p_sa->resp,
@@ -350,14 +278,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_pr_rcv_ctrl_init(
-    &p_sa->pr_rcv_ctrl,
-    &p_sa->pr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
 #if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
   status = osm_mpr_rcv_init(
     &p_sa->mpr_rcv,
@@ -368,14 +288,6 @@ osm_sa_init(
     p_lock );
   if( status != IB_SUCCESS )
     goto Exit;
-
-  status = osm_mpr_rcv_ctrl_init(
-    &p_sa->mpr_rcv_ctrl,
-    &p_sa->mpr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
 #endif
 
   status = osm_smir_rcv_init(
@@ -389,14 +301,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_smir_ctrl_init(
-    &p_sa->smir_ctrl,
-    &p_sa->smir_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_mcmr_rcv_init(
     p_sm,
     &p_sa->mcmr_rcv,
@@ -408,14 +312,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_mcmr_rcv_ctrl_init(
-    &p_sa->mcmr_rcv_ctlr,
-    &p_sa->mcmr_rcv,
-    p_log,
-    p_disp);
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_sr_rcv_init(
     &p_sa->sr_rcv,
     &p_sa->resp,
@@ -426,14 +322,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_sr_rcv_ctrl_init(
-    &p_sa->sr_rcv_ctrl,
-    &p_sa->sr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_infr_rcv_init(
     &p_sa->infr_rcv,
     &p_sa->resp,
@@ -444,14 +332,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_infr_rcv_ctrl_init(
-    &p_sa->infr_rcv_ctrl,
-    &p_sa->infr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_vlarb_rec_rcv_init(
     &p_sa->vlarb_rec_rcv,
     &p_sa->resp,
@@ -462,14 +342,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_vlarb_rec_rcv_ctrl_init(
-    &p_sa->vlarb_rec_rcv_ctrl,
-    &p_sa->vlarb_rec_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_slvl_rec_rcv_init(
     &p_sa->slvl_rec_rcv,
     &p_sa->resp,
@@ -480,14 +352,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_slvl_rec_rcv_ctrl_init(
-    &p_sa->slvl_rec_rcv_ctrl,
-    &p_sa->slvl_rec_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_pkey_rec_rcv_init(
     &p_sa->pkey_rec_rcv,
     &p_sa->resp,
@@ -498,14 +362,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_pkey_rec_rcv_ctrl_init(
-    &p_sa->pkey_rec_rcv_ctrl,
-    &p_sa->pkey_rec_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_lftr_rcv_init(
     &p_sa->lftr_rcv,
     &p_sa->resp,
@@ -516,14 +372,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_lftr_rcv_ctrl_init(
-    &p_sa->lftr_rcv_ctrl,
-    &p_sa->lftr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_sir_rcv_init(
     &p_sa->sir_rcv,
     &p_sa->resp,
@@ -534,14 +382,6 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_sir_rcv_ctrl_init(
-    &p_sa->sir_rcv_ctrl,
-    &p_sa->sir_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
-    goto Exit;
-
   status = osm_mftr_rcv_init(
     &p_sa->mftr_rcv,
     &p_sa->resp,
@@ -552,12 +392,99 @@ osm_sa_init(
   if( status != IB_SUCCESS )
     goto Exit;
 
-  status = osm_mftr_rcv_ctrl_init(
-    &p_sa->mftr_rcv_ctrl,
-    &p_sa->mftr_rcv,
-    p_log,
-    p_disp );
-  if( status != IB_SUCCESS )
+  p_sa->cpi_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_CLASS_PORT_INFO,
+                                      osm_cpi_rcv_process, &p_sa->cpi_rcv);
+  if( p_sa->cpi_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->nr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_NODE_RECORD,
+                                     osm_nr_rcv_process, &p_sa->nr_rcv);
+  if( p_sa->nr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->pir_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_PORTINFO_RECORD,
+                                      osm_pir_rcv_process, &p_sa->pir_rcv);
+  if( p_sa->pir_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->gir_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_GUIDINFO_RECORD,
+                                      osm_gir_rcv_process, &p_sa->gir_rcv);
+  if( p_sa->gir_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->lr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_LINK_RECORD,
+                                     osm_lr_rcv_process, &p_sa->lr_rcv);
+  if( p_sa->lr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->pr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_PATH_RECORD,
+                                     osm_pr_rcv_process, &p_sa->pr_rcv);
+  if( p_sa->pr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+#if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
+  p_sa->mpr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_MULTIPATH_RECORD,
+                                      osm_mpr_rcv_process, &p_sa->mpr_rcv);
+  if( p_sa->mpr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+#endif
+
+  p_sa->smir_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_SMINFO_RECORD,
+                                       osm_smir_rcv_process, &p_sa->smir_rcv);
+  if( p_sa->smir_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->mcmr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_MCMEMBER_RECORD,
+                                       osm_mcmr_rcv_process, &p_sa->mcmr_rcv);
+  if( p_sa->mcmr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->sr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_SERVICE_RECORD,
+                                     osm_sr_rcv_process, &p_sa->sr_rcv);
+  if( p_sa->sr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->infr_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_INFORM_INFO,
+                                       osm_infr_rcv_process, &p_sa->infr_rcv);
+  if( p_sa->infr_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->infir_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_INFORM_INFO_RECORD,
+                                        osm_infir_rcv_process, &p_sa->infr_rcv);
+  if( p_sa->infir_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->vlarb_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_VL_ARB_RECORD,
+                                        osm_vlarb_rec_rcv_process,
+                                        &p_sa->vlarb_rec_rcv);
+  if( p_sa->vlarb_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->slvl_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_SLVL_TBL_RECORD,
+                                       osm_slvl_rec_rcv_process,
+                                       &p_sa->slvl_rec_rcv);
+  if( p_sa->slvl_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->pkey_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_PKEY_TBL_RECORD,
+                                       osm_pkey_rec_rcv_process,
+                                       &p_sa->pkey_rec_rcv);
+  if( p_sa->pkey_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->lft_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_LFT_RECORD,
+                                      osm_lftr_rcv_process, &p_sa->lftr_rcv);
+  if( p_sa->lft_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->sir_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_SWITCH_INFO_RECORD,
+                                      osm_sir_rcv_process, &p_sa->sir_rcv);
+  if( p_sa->sir_disp_h == CL_DISP_INVALID_HANDLE )
+    goto Exit;
+
+  p_sa->mft_disp_h = cl_disp_register(p_disp, OSM_MSG_MAD_MFT_RECORD,
+                                      osm_mftr_rcv_process, &p_sa->mftr_rcv);
+  if( p_sa->mft_disp_h == CL_DISP_INVALID_HANDLE )
     goto Exit;
 
  Exit:
diff --git a/osm/opensm/osm_sa_class_port_info.c b/osm/opensm/osm_sa_class_port_info.c
index 84fa016..da107ee 100644
--- a/osm/opensm/osm_sa_class_port_info.c
+++ b/osm/opensm/osm_sa_class_port_info.c
@@ -242,9 +242,11 @@ __osm_cpi_rcv_respond(
  **********************************************************************/
 void
 osm_cpi_rcv_process(
-  IN osm_cpi_rcv_t*        const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_cpi_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   const ib_path_rec_t*     p_pr;
   const ib_sa_mad_t*    p_sa_mad;
 
diff --git a/osm/opensm/osm_sa_class_port_info_ctrl.c b/osm/opensm/osm_sa_class_port_info_ctrl.c
deleted file mode 100644
index 9197c0a..0000000
--- a/osm/opensm/osm_sa_class_port_info_ctrl.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_pr_rcv_ctrl_t.
- * This object represents the ClassPortInfo request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.3 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_class_port_info_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_cpi_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_cpi_rcv_process( ((osm_cpi_rcv_ctrl_t*)context)->p_rcv,
-                       (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_cpi_rcv_ctrl_construct(
-  IN osm_cpi_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_cpi_rcv_ctrl_destroy(
-  IN osm_cpi_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_cpi_rcv_ctrl_init(
-  IN osm_cpi_rcv_ctrl_t* const p_ctrl,
-  IN osm_cpi_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_cpi_rcv_ctrl_init );
-
-  osm_cpi_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_CLASS_PORT_INFO,
-    __osm_cpi_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_cpi_rcv_ctrl_init: ERR 1501: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_sa_guidinfo_record.c b/osm/opensm/osm_sa_guidinfo_record.c
index 5d7c4ba..10fac3c 100644
--- a/osm/opensm/osm_sa_guidinfo_record.c
+++ b/osm/opensm/osm_sa_guidinfo_record.c
@@ -392,9 +392,11 @@ __osm_sa_gir_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_gir_rcv_process(
-  IN osm_gir_rcv_t*        const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_gir_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_guidinfo_record_t* p_rcvd_rec;
   cl_qlist_t               rec_list;
diff --git a/osm/opensm/osm_sa_guidinfo_record_ctrl.c b/osm/opensm/osm_sa_guidinfo_record_ctrl.c
deleted file mode 100644
index df1a230..0000000
--- a/osm/opensm/osm_sa_guidinfo_record_ctrl.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_gir_rcv_ctrl_t.
- * This object represents the GUIDInfoRecord request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_guidinfo_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_gir_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_gir_rcv_process( ((osm_gir_rcv_ctrl_t*)context)->p_rcv,
-                       (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_gir_rcv_ctrl_construct(
-  IN osm_gir_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_gir_rcv_ctrl_destroy(
-  IN osm_gir_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_gir_rcv_ctrl_init(
-  IN osm_gir_rcv_ctrl_t* const p_ctrl,
-  IN osm_gir_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_gir_rcv_ctrl_init );
-
-  osm_gir_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_GUIDINFO_RECORD,
-    __osm_gir_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_gir_rcv_ctrl_init: ERR 5201: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_informinfo.c b/osm/opensm/osm_sa_informinfo.c
index e427d5a..340a7f1 100644
--- a/osm/opensm/osm_sa_informinfo.c
+++ b/osm/opensm/osm_sa_informinfo.c
@@ -858,9 +858,11 @@ osm_infr_rcv_process_set_method(
 **********************************************************************/
 void
 osm_infr_rcv_process(
-  IN osm_infr_rcv_t*       const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_infr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   ib_sa_mad_t *p_sa_mad;
 
   OSM_LOG_ENTER( p_rcv->p_log, osm_infr_rcv_process );
@@ -891,9 +893,11 @@ osm_infr_rcv_process(
 **********************************************************************/
 void
 osm_infir_rcv_process(
-  IN osm_infr_rcv_t*       const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_infr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   ib_sa_mad_t *p_sa_mad;
     
   OSM_LOG_ENTER( p_rcv->p_log, osm_infr_rcv_process );
diff --git a/osm/opensm/osm_sa_informinfo_ctrl.c b/osm/opensm/osm_sa_informinfo_ctrl.c
deleted file mode 100644
index 1637155..0000000
--- a/osm/opensm/osm_sa_informinfo_ctrl.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- *    Implementation of osm_infr_rcv_ctrl_t.
- * This object represents the InformInfo set request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_informinfo_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_infr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_infr_rcv_process( ((osm_infr_rcv_ctrl_t*)context)->p_rcv,
-                        (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_infir_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_infir_rcv_process( ((osm_infr_rcv_ctrl_t*)context)->p_rcv,
-                         (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_infr_rcv_ctrl_construct(
-  IN osm_infr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-  p_ctrl->h_disp2 = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_infr_rcv_ctrl_destroy(
-  IN osm_infr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp2 );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_infr_rcv_ctrl_init(
-  IN osm_infr_rcv_ctrl_t* const p_ctrl,
-  IN osm_infr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_infr_rcv_ctrl_init );
-
-  osm_infr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_INFORM_INFO,
-    __osm_infr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_infr_rcv_ctrl_init: ERR 1701: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
-  p_ctrl->h_disp2 = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_INFORM_INFO_RECORD,
-    __osm_infir_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp2 == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_infr_rcv_ctrl_init: ERR 1702: "
-             "Dispatcher registration failed\n" );
-    cl_disp_unregister( p_ctrl->h_disp );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_lft_record.c b/osm/opensm/osm_sa_lft_record.c
index 46bebf2..b6333e7 100644
--- a/osm/opensm/osm_sa_lft_record.c
+++ b/osm/opensm/osm_sa_lft_record.c
@@ -298,9 +298,11 @@ __osm_lftr_rcv_by_comp_mask(
  **********************************************************************/
 void
 osm_lftr_rcv_process(
-  IN osm_lftr_rcv_t*        const p_rcv,
-  IN const osm_madw_t*      const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_lftr_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*        p_rcvd_mad;
   const ib_lft_record_t*    p_rcvd_rec;
   ib_lft_record_t*          p_resp_rec;
diff --git a/osm/opensm/osm_sa_lft_record_ctrl.c b/osm/opensm/osm_sa_lft_record_ctrl.c
deleted file mode 100644
index 250e8e3..0000000
--- a/osm/opensm/osm_sa_lft_record_ctrl.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- *    Implementation of osm_lftr_rcv_ctrl_t.
- * This object represents the LinearForwardingTable request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_lft_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_lftr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_lftr_rcv_process( ((osm_lftr_rcv_ctrl_t*)context)->p_rcv,
-                        (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_lftr_rcv_ctrl_construct(
-  IN osm_lftr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_lftr_rcv_ctrl_destroy(
-  IN osm_lftr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_lftr_rcv_ctrl_init(
-  IN osm_lftr_rcv_ctrl_t* const p_ctrl,
-  IN osm_lftr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_lftr_rcv_ctrl_init );
-
-  osm_lftr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_LFT_RECORD,
-    __osm_lftr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_lftr_rcv_ctrl_init: ERR 4501: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_link_record.c b/osm/opensm/osm_sa_link_record.c
index e9518f4..169e75e 100644
--- a/osm/opensm/osm_sa_link_record.c
+++ b/osm/opensm/osm_sa_link_record.c
@@ -697,9 +697,11 @@ __osm_lr_rcv_respond(
  **********************************************************************/
 void
 osm_lr_rcv_process(
-  IN osm_lr_rcv_t*         const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_lr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   const ib_link_record_t*  p_lr;
   const ib_sa_mad_t*       p_sa_mad;
   const osm_port_t*        p_src_port;
diff --git a/osm/opensm/osm_sa_link_record_ctrl.c b/osm/opensm/osm_sa_link_record_ctrl.c
deleted file mode 100644
index d95c8e3..0000000
--- a/osm/opensm/osm_sa_link_record_ctrl.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_lr_rcv_ctrl_t.
- * This object represents the link record controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_link_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_lr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_lr_rcv_process( ((osm_lr_rcv_ctrl_t*)context)->p_rcv,
-                      (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_lr_rcv_ctrl_construct(
-  IN osm_lr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_lr_rcv_ctrl_destroy(
-  IN osm_lr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_lr_rcv_ctrl_init(
-  IN osm_lr_rcv_ctrl_t* const p_ctrl,
-  IN osm_lr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_lr_rcv_ctrl_init );
-
-  osm_lr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_LINK_RECORD,
-    __osm_lr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_lr_rcv_ctrl_init: ERR 1901: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
-
diff --git a/osm/opensm/osm_sa_mcmember_record.c b/osm/opensm/osm_sa_mcmember_record.c
index 819a2da..2c55198 100644
--- a/osm/opensm/osm_sa_mcmember_record.c
+++ b/osm/opensm/osm_sa_mcmember_record.c
@@ -2276,9 +2276,11 @@ __osm_mcmr_query_mgrp(IN osm_mcmr_recv_t*  const p_rcv,
  **********************************************************************/
 void
 osm_mcmr_rcv_process(
-  IN osm_mcmr_recv_t* const p_rcv,
-  const IN osm_madw_t* const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_mcmr_recv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   ib_sa_mad_t *p_sa_mad;
   ib_net16_t sa_status = IB_SA_MAD_STATUS_REQ_INVALID;
   ib_member_rec_t *p_recvd_mcmember_rec;
diff --git a/osm/opensm/osm_sa_mcmember_record_ctrl.c b/osm/opensm/osm_sa_mcmember_record_ctrl.c
deleted file mode 100644
index 75f1d7e..0000000
--- a/osm/opensm/osm_sa_mcmember_record_ctrl.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_mcmr_rcv_ctrl_t.
- * This object represents the Multicast member record controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <complib/cl_qmap.h>
-#include <complib/cl_passivelock.h>
-#include <iba/ib_types.h>
-#include <opensm/osm_sa_mcmember_record_ctrl.h>
-#include <opensm/osm_sa_mcmember_record.h>
-#include <opensm/osm_madw.h>
-#include <opensm/osm_log.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_mcmr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_mcmr_rcv_process( ((osm_mcmr_rcv_ctrl_t*)context)->p_rcv,
-                        (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mcmr_rcv_ctrl_construct(
-  IN osm_mcmr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mcmr_rcv_ctrl_destroy(
-  IN osm_mcmr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_mcmr_rcv_ctrl_init(
-  IN osm_mcmr_rcv_ctrl_t* const p_ctrl,
-  IN osm_mcmr_recv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_mcmr_rcv_ctrl_init );
-
-  osm_mcmr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_MCMEMBER_RECORD,
-    __osm_mcmr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_mcmr_rcv_ctrl_init: ERR 1C01: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_sa_mft_record.c b/osm/opensm/osm_sa_mft_record.c
index 3d85739..005c9bd 100644
--- a/osm/opensm/osm_sa_mft_record.c
+++ b/osm/opensm/osm_sa_mft_record.c
@@ -330,9 +330,11 @@ __osm_mftr_rcv_by_comp_mask(
  **********************************************************************/
 void
 osm_mftr_rcv_process(
-  IN osm_mftr_rcv_t*        const p_rcv,
-  IN const osm_madw_t*      const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_mftr_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*        p_rcvd_mad;
   const ib_mft_record_t*    p_rcvd_rec;
   ib_mft_record_t*          p_resp_rec;
diff --git a/osm/opensm/osm_sa_mft_record_ctrl.c b/osm/opensm/osm_sa_mft_record_ctrl.c
deleted file mode 100644
index cf433a9..0000000
--- a/osm/opensm/osm_sa_mft_record_ctrl.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- *    Implementation of osm_mftr_rcv_ctrl_t.
- * This object represents the MulticastForwardingTable request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_mft_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_mftr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_mftr_rcv_process( ((osm_mftr_rcv_ctrl_t*)context)->p_rcv,
-                        (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mftr_rcv_ctrl_construct(
-  IN osm_mftr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mftr_rcv_ctrl_destroy(
-  IN osm_mftr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_mftr_rcv_ctrl_init(
-  IN osm_mftr_rcv_ctrl_t* const p_ctrl,
-  IN osm_mftr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_mftr_rcv_ctrl_init );
-
-  osm_mftr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_MFT_RECORD,
-    __osm_mftr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_mftr_rcv_ctrl_init: ERR 4A01: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_multipath_record.c b/osm/opensm/osm_sa_multipath_record.c
index 2f61fb8..c268f48 100644
--- a/osm/opensm/osm_sa_multipath_record.c
+++ b/osm/opensm/osm_sa_multipath_record.c
@@ -1554,9 +1554,11 @@ __osm_mpr_rcv_respond(
  **********************************************************************/
 void
 osm_mpr_rcv_process(
-  IN osm_mpr_rcv_t*		const p_rcv,
-  IN osm_madw_t*		const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_mpr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   const ib_multipath_rec_t*	p_mpr;
   const ib_sa_mad_t*		p_sa_mad;
   osm_port_t*			requester_port;
diff --git a/osm/opensm/osm_sa_multipath_record_ctrl.c b/osm/opensm/osm_sa_multipath_record_ctrl.c
deleted file mode 100644
index cf83a07..0000000
--- a/osm/opensm/osm_sa_multipath_record_ctrl.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_mpr_rcv_ctrl_t.
- * This object represents the MultiPathRecord request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- */
-
-#if defined (VENDOR_RMPP_SUPPORT) && defined (DUAL_SIDED_RMPP)
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_multipath_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_mpr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_mpr_rcv_process( ((osm_mpr_rcv_ctrl_t*)context)->p_rcv,
-                      (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mpr_rcv_ctrl_construct(
-  IN osm_mpr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_mpr_rcv_ctrl_destroy(
-  IN osm_mpr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_mpr_rcv_ctrl_init(
-  IN osm_mpr_rcv_ctrl_t* const p_ctrl,
-  IN osm_mpr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_mpr_rcv_ctrl_init );
-
-  osm_mpr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_MULTIPATH_RECORD,
-    __osm_mpr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_mpr_rcv_ctrl_init: ERR 4B01: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
-#endif
diff --git a/osm/opensm/osm_sa_node_record.c b/osm/opensm/osm_sa_node_record.c
index e8ea45a..892582e 100644
--- a/osm/opensm/osm_sa_node_record.c
+++ b/osm/opensm/osm_sa_node_record.c
@@ -394,9 +394,11 @@ __osm_nr_rcv_by_comp_mask(
  **********************************************************************/
 void
 osm_nr_rcv_process(
-  IN osm_nr_rcv_t*         const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_nr_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_node_record_t*  p_rcvd_rec;
   ib_node_record_t*        p_resp_rec;
diff --git a/osm/opensm/osm_sa_node_record_ctrl.c b/osm/opensm/osm_sa_node_record_ctrl.c
deleted file mode 100644
index f101df7..0000000
--- a/osm/opensm/osm_sa_node_record_ctrl.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_nr_rcv_ctrl_t.
- * This object represents the Node Record controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_node_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_nr_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_nr_rcv_process( ((osm_nr_rcv_ctrl_t*)context)->p_rcv,
-                      (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_nr_rcv_ctrl_construct(
-  IN osm_nr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_nr_rcv_ctrl_destroy(
-  IN osm_nr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_nr_rcv_ctrl_init(
-  IN osm_nr_rcv_ctrl_t* const p_ctrl,
-  IN osm_nr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_nr_rcv_ctrl_init );
-
-  osm_nr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_NODE_RECORD,
-    __osm_nr_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_nr_rcv_ctrl_init: ERR 1E01: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_path_record.c b/osm/opensm/osm_sa_path_record.c
index 7707f52..a0dbb07 100644
--- a/osm/opensm/osm_sa_path_record.c
+++ b/osm/opensm/osm_sa_path_record.c
@@ -1893,9 +1893,11 @@ __osm_pr_rcv_respond(
  **********************************************************************/
 void
 osm_pr_rcv_process(
-  IN osm_pr_rcv_t*         const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_pr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   const ib_path_rec_t*     p_pr;
   const ib_sa_mad_t*       p_sa_mad;
   const osm_port_t*        p_src_port;
diff --git a/osm/opensm/osm_sa_path_record_ctrl.c b/osm/opensm/osm_sa_path_record_ctrl.c
deleted file mode 100644
index 461b32c..0000000
--- a/osm/opensm/osm_sa_path_record_ctrl.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_pr_rcv_ctrl_t.
- * This object represents the PathRecord request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_path_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_pr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_pr_rcv_process( ((osm_pr_rcv_ctrl_t*)context)->p_rcv,
-                      (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pr_rcv_ctrl_construct(
-  IN osm_pr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pr_rcv_ctrl_destroy(
-  IN osm_pr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_pr_rcv_ctrl_init(
-  IN osm_pr_rcv_ctrl_t* const p_ctrl,
-  IN osm_pr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_pr_rcv_ctrl_init );
-
-  osm_pr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_PATH_RECORD,
-    __osm_pr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_pr_rcv_ctrl_init: ERR 2001: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_sa_pkey_record.c b/osm/opensm/osm_sa_pkey_record.c
index 8e56c6c..5eb15df 100644
--- a/osm/opensm/osm_sa_pkey_record.c
+++ b/osm/opensm/osm_sa_pkey_record.c
@@ -308,9 +308,11 @@ __osm_sa_pkey_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_pkey_rec_rcv_process(
-  IN osm_pkey_rec_rcv_t*   const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_pkey_rec_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_pkey_table_record_t*   p_rcvd_rec;
   const cl_ptr_vector_t*   p_tbl;
diff --git a/osm/opensm/osm_sa_pkey_record_ctrl.c b/osm/opensm/osm_sa_pkey_record_ctrl.c
deleted file mode 100644
index e0d1bb7..0000000
--- a/osm/opensm/osm_sa_pkey_record_ctrl.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_pkey_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_pkey_rec_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_pkey_rec_rcv_process( ((osm_pkey_rec_rcv_ctrl_t*)context)->p_rcv,
-                            (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pkey_rec_rcv_ctrl_construct(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pkey_rec_rcv_ctrl_destroy(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_pkey_rec_rcv_ctrl_init(
-  IN osm_pkey_rec_rcv_ctrl_t* const p_ctrl,
-  IN osm_pkey_rec_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_pkey_rec_rcv_ctrl_init );
-
-  osm_pkey_rec_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_PKEY_TBL_RECORD,
-    __osm_pkey_rec_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_pkey_rec_rcv_ctrl_init: ERR 4701: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_sa_portinfo_record.c b/osm/opensm/osm_sa_portinfo_record.c
index 300d536..5d9b1b2 100644
--- a/osm/opensm/osm_sa_portinfo_record.c
+++ b/osm/opensm/osm_sa_portinfo_record.c
@@ -592,9 +592,11 @@ __osm_sa_pir_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_pir_rcv_process(
-  IN osm_pir_rcv_t*        const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_pir_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_portinfo_record_t* p_rcvd_rec;
   const cl_ptr_vector_t*   p_tbl;
diff --git a/osm/opensm/osm_sa_portinfo_record_ctrl.c b/osm/opensm/osm_sa_portinfo_record_ctrl.c
deleted file mode 100644
index e2a8208..0000000
--- a/osm/opensm/osm_sa_portinfo_record_ctrl.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_pir_rcv_ctrl_t.
- * This object represents the PortInfoRecord request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_portinfo_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_pir_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_pir_rcv_process( ((osm_pir_rcv_ctrl_t*)context)->p_rcv,
-                       (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pir_rcv_ctrl_construct(
-  IN osm_pir_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_pir_rcv_ctrl_destroy(
-  IN osm_pir_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_pir_rcv_ctrl_init(
-  IN osm_pir_rcv_ctrl_t* const p_ctrl,
-  IN osm_pir_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_pir_rcv_ctrl_init );
-
-  osm_pir_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_PORTINFO_RECORD,
-    __osm_pir_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_pir_rcv_ctrl_init: ERR 2201: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_service_record.c b/osm/opensm/osm_sa_service_record.c
index faa4af7..b23a12d 100644
--- a/osm/opensm/osm_sa_service_record.c
+++ b/osm/opensm/osm_sa_service_record.c
@@ -1051,9 +1051,11 @@ osm_sr_rcv_process_delete_method(
  **********************************************************************/
 void
 osm_sr_rcv_process(
-  IN osm_sr_rcv_t*         const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *context,
+  IN void *data )
 {
+  osm_sr_rcv_t *p_rcv = context;
+  osm_madw_t *p_madw = data;
   ib_sa_mad_t *            p_sa_mad;
   ib_net16_t               sa_status = IB_SA_MAD_STATUS_REQ_INVALID;
   boolean_t                valid;
diff --git a/osm/opensm/osm_sa_service_record_ctrl.c b/osm/opensm/osm_sa_service_record_ctrl.c
deleted file mode 100644
index 5fad783..0000000
--- a/osm/opensm/osm_sa_service_record_ctrl.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_sr_rcv_ctrl_t.
- * This object represents the ServiceRecord request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_service_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-static void
-__osm_sr_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_sr_rcv_process( ((osm_sr_rcv_ctrl_t*)context)->p_rcv,
-                      (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_sr_rcv_ctrl_construct(
-  IN osm_sr_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_sr_rcv_ctrl_destroy(
-  IN osm_sr_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_sr_rcv_ctrl_init(
-  IN osm_sr_rcv_ctrl_t* const p_ctrl,
-  IN osm_sr_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_sr_rcv_ctrl_init );
-
-  osm_sr_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_SERVICE_RECORD,
-    __osm_sr_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_sr_rcv_ctrl_init: ERR 2501: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_slvl_record.c b/osm/opensm/osm_sa_slvl_record.c
index b9146b0..d831ffd 100644
--- a/osm/opensm/osm_sa_slvl_record.c
+++ b/osm/opensm/osm_sa_slvl_record.c
@@ -292,9 +292,11 @@ __osm_sa_slvl_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_slvl_rec_rcv_process(
-  IN osm_slvl_rec_rcv_t*         const p_rcv,
-  IN const osm_madw_t*           const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_slvl_rec_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*             p_rcvd_mad;
   const ib_slvl_table_record_t*  p_rcvd_rec;
   const cl_ptr_vector_t*         p_tbl;
diff --git a/osm/opensm/osm_sa_slvl_record_ctrl.c b/osm/opensm/osm_sa_slvl_record_ctrl.c
deleted file mode 100644
index 76fff0e..0000000
--- a/osm/opensm/osm_sa_slvl_record_ctrl.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_slvl_rec_rcv_ctrl_t.
- * This object represents the SLtoVL Map Record SA request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_slvl_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_slvl_rec_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_slvl_rec_rcv_process( ((osm_slvl_rec_rcv_ctrl_t*)context)->p_rcv,
-                            (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_slvl_rec_rcv_ctrl_construct(
-  IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_slvl_rec_rcv_ctrl_destroy(
-  IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_slvl_rec_rcv_ctrl_init(
-  IN osm_slvl_rec_rcv_ctrl_t* const p_ctrl,
-  IN osm_slvl_rec_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_slvl_rec_rcv_ctrl_init );
-
-  osm_slvl_rec_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_SLVL_TBL_RECORD,
-    __osm_slvl_rec_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_slvl_rec_rcv_ctrl_init: ERR 2701: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_sa_sminfo_record.c b/osm/opensm/osm_sa_sminfo_record.c
index 3f3ae27..5e15f52 100644
--- a/osm/opensm/osm_sa_sminfo_record.c
+++ b/osm/opensm/osm_sa_sminfo_record.c
@@ -257,9 +257,11 @@ __osm_sa_smir_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_smir_rcv_process(
-  IN osm_smir_rcv_t*        const p_rcv,
-  IN const osm_madw_t*      const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_smir_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*        p_rcvd_mad;
   const ib_sminfo_record_t* p_rcvd_rec;
   const cl_qmap_t*          p_tbl;
diff --git a/osm/opensm/osm_sa_sminfo_record_ctrl.c b/osm/opensm/osm_sa_sminfo_record_ctrl.c
deleted file mode 100644
index 09cc99a..0000000
--- a/osm/opensm/osm_sa_sminfo_record_ctrl.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_smir_ctrl_t.
- * This object represents the SMInfo request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.5 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_sminfo_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_smir_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_smir_rcv_process( ((osm_smir_ctrl_t*)context)->p_rcv,
-                        (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_smir_ctrl_construct(
-  IN osm_smir_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_smir_ctrl_destroy(
-  IN osm_smir_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_smir_ctrl_init(
-  IN osm_smir_ctrl_t* const p_ctrl,
-  IN osm_smir_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_smir_ctrl_init );
-
-  osm_smir_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_SMINFO_RECORD,
-    __osm_smir_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_smir_ctrl_init: ERR 2901: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_sw_info_record.c b/osm/opensm/osm_sa_sw_info_record.c
index d60f237..da65864 100644
--- a/osm/opensm/osm_sa_sw_info_record.c
+++ b/osm/opensm/osm_sa_sw_info_record.c
@@ -328,9 +328,11 @@ Exit:
  **********************************************************************/
 void
 osm_sir_rcv_process(
-  IN osm_sir_rcv_t*        const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_sir_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_switch_info_record_t*  p_rcvd_rec;
   ib_switch_info_record_t*        p_resp_rec;
diff --git a/osm/opensm/osm_sa_sw_info_record_ctrl.c b/osm/opensm/osm_sa_sw_info_record_ctrl.c
deleted file mode 100644
index daf55cc..0000000
--- a/osm/opensm/osm_sa_sw_info_record_ctrl.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-/*
- * Abstract:
- *    Implementation of osm_sir_rcv_ctrl_t.
- * This object represents the SwitchInfo Record controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_sw_info_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_sir_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_sir_rcv_process( ((osm_sir_rcv_ctrl_t*)context)->p_rcv,
-                       (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_sir_rcv_ctrl_construct(
-  IN osm_sir_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_sir_rcv_ctrl_destroy(
-  IN osm_sir_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_sir_rcv_ctrl_init(
-  IN osm_sir_rcv_ctrl_t* const p_ctrl,
-  IN osm_sir_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_sir_rcv_ctrl_init );
-
-  osm_sir_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_SWITCH_INFO_RECORD,
-    __osm_sir_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_sir_rcv_ctrl_init: ERR 5301: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
diff --git a/osm/opensm/osm_sa_vlarb_record.c b/osm/opensm/osm_sa_vlarb_record.c
index d7f341e..f0ff957 100644
--- a/osm/opensm/osm_sa_vlarb_record.c
+++ b/osm/opensm/osm_sa_vlarb_record.c
@@ -312,9 +312,11 @@ __osm_sa_vl_arb_by_comp_mask_cb(
  **********************************************************************/
 void
 osm_vlarb_rec_rcv_process(
-  IN osm_vlarb_rec_rcv_t*  const p_rcv,
-  IN const osm_madw_t*     const p_madw )
+  IN void *ctx,
+  IN void *data )
 {
+  osm_vlarb_rec_rcv_t *p_rcv = ctx;
+  osm_madw_t *p_madw = data;
   const ib_sa_mad_t*       p_rcvd_mad;
   const ib_vl_arb_table_record_t*   p_rcvd_rec;
   const cl_ptr_vector_t*   p_tbl;
diff --git a/osm/opensm/osm_sa_vlarb_record_ctrl.c b/osm/opensm/osm_sa_vlarb_record_ctrl.c
deleted file mode 100644
index b399276..0000000
--- a/osm/opensm/osm_sa_vlarb_record_ctrl.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
- * Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved.
- * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-
-/*
- * Abstract:
- *    Implementation of osm_vlarb_rec_rcv_ctrl_t.
- * This object represents the VL Arbitration Record SA request controller object.
- * This object is part of the opensm family of objects.
- *
- * Environment:
- *    Linux User Mode
- *
- * $Revision: 1.4 $
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#include <opensm/osm_sa_vlarb_record_ctrl.h>
-#include <opensm/osm_msgdef.h>
-
-/**********************************************************************
- **********************************************************************/
-void
-__osm_vlarb_rec_rcv_ctrl_disp_callback(
-  IN  void *context,
-  IN  void *p_data )
-{
-  /* ignore return status when invoked via the dispatcher */
-  osm_vlarb_rec_rcv_process( ((osm_vlarb_rec_rcv_ctrl_t*)context)->p_rcv,
-                             (osm_madw_t*)p_data );
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_vlarb_rec_rcv_ctrl_construct(
-  IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl )
-{
-  memset( p_ctrl, 0, sizeof(*p_ctrl) );
-  p_ctrl->h_disp = CL_DISP_INVALID_HANDLE;
-}
-
-/**********************************************************************
- **********************************************************************/
-void
-osm_vlarb_rec_rcv_ctrl_destroy(
-  IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl )
-{
-  CL_ASSERT( p_ctrl );
-  cl_disp_unregister( p_ctrl->h_disp );
-}
-
-/**********************************************************************
- **********************************************************************/
-ib_api_status_t
-osm_vlarb_rec_rcv_ctrl_init(
-  IN osm_vlarb_rec_rcv_ctrl_t* const p_ctrl,
-  IN osm_vlarb_rec_rcv_t* const p_rcv,
-  IN osm_log_t* const p_log,
-  IN cl_dispatcher_t* const p_disp )
-{
-  ib_api_status_t status = IB_SUCCESS;
-
-  OSM_LOG_ENTER( p_log, osm_vlarb_rec_rcv_ctrl_init );
-
-  osm_vlarb_rec_rcv_ctrl_construct( p_ctrl );
-  p_ctrl->p_log = p_log;
-  p_ctrl->p_rcv = p_rcv;
-  p_ctrl->p_disp = p_disp;
-
-  p_ctrl->h_disp = cl_disp_register(
-    p_disp,
-    OSM_MSG_MAD_VL_ARB_RECORD,
-    __osm_vlarb_rec_rcv_ctrl_disp_callback,
-    p_ctrl );
-
-  if( p_ctrl->h_disp == CL_DISP_INVALID_HANDLE )
-  {
-    osm_log( p_log, OSM_LOG_ERROR,
-             "osm_vlarb_rec_rcv_ctrl_init: ERR 2B01: "
-             "Dispatcher registration failed\n" );
-    status = IB_INSUFFICIENT_RESOURCES;
-    goto Exit;
-  }
-
- Exit:
-  OSM_LOG_EXIT( p_log );
-  return( status );
-}
-
diff --git a/osm/opensm/osm_state_mgr.c b/osm/opensm/osm_state_mgr.c
index 4f43a0d..16297c9 100644
--- a/osm/opensm/osm_state_mgr.c
+++ b/osm/opensm/osm_state_mgr.c
@@ -66,6 +66,7 @@
 #include <opensm/osm_pkey_mgr.h>
 #include <vendor/osm_vendor_api.h>
 #include <opensm/osm_sm_state_mgr.h>
+#include <opensm/osm_inform.h>
 #include <opensm/osm_opensm.h>
 
 #define SUBNET_LIST_FILENAME "/osm-subnet.lst"
-- 
1.4.4.2.gfc82d





More information about the general mailing list