This unifies SM managers initializers, now instead of bunch of parameters
only reference to SM object is passed to the initializers.

Signed-off-by: Sasha Khapyorsky <[EMAIL PROTECTED]>
---

This patch is for master only yet.

 opensm/include/opensm/osm_drop_mgr.h        |   31 ++++-------
 opensm/include/opensm/osm_lid_mgr.h         |   27 +++-------
 opensm/include/opensm/osm_link_mgr.h        |   23 +++-----
 opensm/include/opensm/osm_mcast_mgr.h       |   23 +++-----
 opensm/include/opensm/osm_sm_state_mgr.h    |   22 ++++----
 opensm/include/opensm/osm_state_mgr.h       |   74 ++++----------------------
 opensm/include/opensm/osm_sweep_fail_ctrl.h |   24 +--------
 opensm/include/opensm/osm_ucast_mgr.h       |   23 +++-----
 opensm/opensm/osm_drop_mgr.c                |   17 +++---
 opensm/opensm/osm_lid_mgr.c                 |   28 ++++-------
 opensm/opensm/osm_link_mgr.c                |   21 +++-----
 opensm/opensm/osm_mcast_mgr.c               |   21 +++-----
 opensm/opensm/osm_sm.c                      |   40 +++------------
 opensm/opensm/osm_sm_state_mgr.c            |   21 +++----
 opensm/opensm/osm_state_mgr.c               |   57 ++++++--------------
 opensm/opensm/osm_sweep_fail_ctrl.c         |   18 +++----
 opensm/opensm/osm_ucast_mgr.c               |   21 +++-----
 17 files changed, 150 insertions(+), 341 deletions(-)

diff --git a/opensm/include/opensm/osm_drop_mgr.h 
b/opensm/include/opensm/osm_drop_mgr.h
index 0f929e0..c9d881c 100644
--- a/opensm/include/opensm/osm_drop_mgr.h
+++ b/opensm/include/opensm/osm_drop_mgr.h
@@ -81,6 +81,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: Drop Manager/osm_drop_mgr_t
 * NAME
 *      osm_drop_mgr_t
@@ -94,6 +95,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_drop_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_log_t *p_log;
        osm_req_t *p_req;
@@ -102,6 +104,9 @@ typedef struct _osm_drop_mgr {
 } osm_drop_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -188,38 +193,24 @@ void osm_drop_mgr_destroy(IN osm_drop_mgr_t * const 
p_mgr);
 *
 * SYNOPSIS
 */
-ib_api_status_t osm_drop_mgr_init(IN osm_drop_mgr_t * const p_mgr,
-                                 IN osm_subn_t * const p_subn,
-                                 IN osm_log_t * const p_log,
-                                 IN osm_req_t * const p_req,
-                                 IN cl_plock_t * const p_lock);
+ib_api_status_t
+osm_drop_mgr_init(IN osm_drop_mgr_t * const p_mgr, struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_drop_mgr_t object to initialize.
 *
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
-*      p_req
-*              [in] Pointer to an osm_req_t object.
-*
-*      p_lock
-*              [in] Pointer to the OpenSM serializing lock.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
-*      IB_SUCCESS if the Drop Manager object was initialized
-*      successfully.
+*      IB_SUCCESS if the Drop Manager object was initialized successfully.
 *
 * NOTES
 *      Allows calling other Drop Manager methods.
 *
 * SEE ALSO
-*      Drop Manager object, osm_drop_mgr_construct,
-*      osm_drop_mgr_destroy
+*      Drop Manager object, osm_drop_mgr_construct, osm_drop_mgr_destroy
 *********/
 
 /****f* OpenSM: Drop Manager/osm_drop_mgr_process
diff --git a/opensm/include/opensm/osm_lid_mgr.h 
b/opensm/include/opensm/osm_lid_mgr.h
index 9a7d0e3..d76cf56 100644
--- a/opensm/include/opensm/osm_lid_mgr.h
+++ b/opensm/include/opensm/osm_lid_mgr.h
@@ -83,6 +83,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: LID Manager/osm_lid_mgr_t
 * NAME
 *      osm_lid_mgr_t
@@ -96,6 +97,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_lid_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_db_t *p_db;
        osm_req_t *p_req;
@@ -108,6 +110,9 @@ typedef struct _osm_lid_mgr {
 } osm_lid_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -214,30 +219,14 @@ void osm_lid_mgr_destroy(IN osm_lid_mgr_t * const p_mgr);
 * SYNOPSIS
 */
 ib_api_status_t
-osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr,
-                IN osm_req_t * const p_req,
-                IN osm_subn_t * const p_subn,
-                IN osm_db_t * const p_db,
-                IN osm_log_t * const p_log, IN cl_plock_t * const p_lock);
+osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr, IN struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_lid_mgr_t object to initialize.
 *
-*      p_req
-*              [in] Pointer to the attribute Requester object.
-*
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_db
-*              [in] Pointer to the database object.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
-*      p_lock
-*              [in] Pointer to the OpenSM serializing lock.
+*      sm
+*              [in] Pointer to the SM object for this subnet.
 *
 * RETURN VALUES
 *      CL_SUCCESS if the LID Manager object was initialized
diff --git a/opensm/include/opensm/osm_link_mgr.h 
b/opensm/include/opensm/osm_link_mgr.h
index 11a7352..c9cd796 100644
--- a/opensm/include/opensm/osm_link_mgr.h
+++ b/opensm/include/opensm/osm_link_mgr.h
@@ -81,6 +81,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: Link Manager/osm_link_mgr_t
 * NAME
 *      osm_link_mgr_t
@@ -94,6 +95,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_link_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_req_t *p_req;
        osm_log_t *p_log;
@@ -101,6 +103,9 @@ typedef struct _osm_link_mgr {
 } osm_link_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -188,26 +193,14 @@ void osm_link_mgr_destroy(IN osm_link_mgr_t * const 
p_mgr);
 * SYNOPSIS
 */
 ib_api_status_t
-osm_link_mgr_init(IN osm_link_mgr_t * const p_mgr,
-                 IN osm_req_t * const p_req,
-                 IN osm_subn_t * const p_subn,
-                 IN osm_log_t * const p_log, IN cl_plock_t * const p_lock);
+osm_link_mgr_init(IN osm_link_mgr_t * const p_mgr, IN struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_link_mgr_t object to initialize.
 *
-*      p_req
-*              [in] Pointer to the attribute Requester object.
-*
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
-*      p_lock
-*              [in] Pointer to the OpenSM serializing lock.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      IB_SUCCESS if the Link Manager object was initialized
diff --git a/opensm/include/opensm/osm_mcast_mgr.h 
b/opensm/include/opensm/osm_mcast_mgr.h
index 47b67ed..08e4b7a 100644
--- a/opensm/include/opensm/osm_mcast_mgr.h
+++ b/opensm/include/opensm/osm_mcast_mgr.h
@@ -83,6 +83,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: Multicast Manager/osm_mcast_mgr_t
 * NAME
 *      osm_mcast_mgr_t
@@ -96,6 +97,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_mcast_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_req_t *p_req;
        osm_log_t *p_log;
@@ -103,6 +105,9 @@ typedef struct _osm_mcast_mgr {
 } osm_mcast_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -190,26 +195,14 @@ void osm_mcast_mgr_destroy(IN osm_mcast_mgr_t * const 
p_mgr);
 * SYNOPSIS
 */
 ib_api_status_t
-osm_mcast_mgr_init(IN osm_mcast_mgr_t * const p_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_log_t * const p_log, IN cl_plock_t * const p_lock);
+osm_mcast_mgr_init(IN osm_mcast_mgr_t * const p_mgr, struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_mcast_mgr_t object to initialize.
 *
-*      p_req
-*              [in] Pointer to the attribute Requester object.
-*
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
-*      p_lock
-*              [in] Pointer to the OpenSM serializing lock.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      IB_SUCCESS if the Multicast Manager object was initialized
diff --git a/opensm/include/opensm/osm_sm_state_mgr.h 
b/opensm/include/opensm/osm_sm_state_mgr.h
index b8ee174..db05e2f 100644
--- a/opensm/include/opensm/osm_sm_state_mgr.h
+++ b/opensm/include/opensm/osm_sm_state_mgr.h
@@ -87,6 +87,7 @@ BEGIN_C_DECLS
 *      Yael Kalka, Mellanox
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: SM State Manager/osm_sm_state_mgr_t
 * NAME
 *      osm_sm_state_mgr_t
@@ -100,6 +101,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_sm_state_mgr {
+       struct osm_sm *sm;
        cl_spinlock_t state_lock;
        cl_timer_t polling_timer;
        uint32_t retry_number;
@@ -112,6 +114,9 @@ typedef struct _osm_sm_state_mgr {
 
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      state_lock
 *              Spinlock guarding the state and processes.
 *
@@ -164,8 +169,8 @@ void osm_sm_state_mgr_construct(IN osm_sm_state_mgr_t * 
const p_sm_mgr);
 * NOTES
 *      Allows osm_sm_state_mgr_destroy
 *
-*      Calling osm_sm_state_mgr_construct is a prerequisite to calling any 
other
-*      method except osm_sm_state_mgr_init.
+*      Calling osm_sm_state_mgr_construct is a prerequisite to calling any
+*      other method except osm_sm_state_mgr_init.
 *
 * SEE ALSO
 *      SM State Manager object, osm_sm_state_mgr_init,
@@ -215,21 +220,14 @@ void osm_sm_state_mgr_destroy(IN osm_sm_state_mgr_t * 
const p_sm_mgr);
 */
 ib_api_status_t
 osm_sm_state_mgr_init(IN osm_sm_state_mgr_t * const p_sm_mgr,
-                     IN osm_subn_t * const p_subn,
-                     IN osm_req_t * const p_req, IN osm_log_t * const p_log);
+                     struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_sm_mgr
 *              [in] Pointer to an osm_sm_state_mgr_t object to initialize.
 *
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_req
-*              [in] Pointer to an osm_req_t object.
-*
-*      p_log
-*              [in] Pointer to the log object.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      IB_SUCCESS if the SM State Manager object was initialized
diff --git a/opensm/include/opensm/osm_state_mgr.h 
b/opensm/include/opensm/osm_state_mgr.h
index f51593a..968f233 100644
--- a/opensm/include/opensm/osm_state_mgr.h
+++ b/opensm/include/opensm/osm_state_mgr.h
@@ -85,6 +85,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: State Manager/osm_state_mgr_t
 * NAME
 *      osm_state_mgr_t
@@ -98,6 +99,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_state_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_log_t *p_log;
        osm_lid_mgr_t *p_lid_mgr;
@@ -115,6 +117,9 @@ typedef struct _osm_state_mgr {
 } osm_state_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -139,11 +144,11 @@ typedef struct _osm_state_mgr {
 *      p_req
 *              Pointer to the Requester object sending SMPs.
 *
-*  p_stats
-*     Pointer to the OpenSM statistics block.
+*      p_stats
+*              Pointer to the OpenSM statistics block.
 *
-*  p_sm_state_mgr
-*     Pointer to the SM state mgr object.
+*      p_sm_state_mgr
+*              Pointer to the SM state mgr object.
 *
 *      p_mad_ctrl
 *              Pointer to the SM's MAD Controller object.
@@ -157,15 +162,6 @@ typedef struct _osm_state_mgr {
 *      state
 *              State of the SM.
 *
-*  state_step_mode
-*     Controls the mode of progressing to next stage:
-*     OSM_STATE_STEP_CONTINUOUS - normal automatic progress mode
-*     OSM_STATE_STEP_TAKE_ONE - do one step and stop
-*     OSM_STATE_STEP_BREAK  - stop before taking next step
-*
-*  next_stage_signal
-*     Stores the signal to be provided when running the next stage.
-*
 * SEE ALSO
 *      State Manager object
 *********/
@@ -241,60 +237,14 @@ void osm_state_mgr_destroy(IN osm_state_mgr_t * const 
p_mgr);
 * SYNOPSIS
 */
 ib_api_status_t
-osm_state_mgr_init(IN osm_state_mgr_t * const p_mgr,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_lid_mgr_t * const p_lid_mgr,
-                  IN osm_ucast_mgr_t * const p_ucast_mgr,
-                  IN osm_mcast_mgr_t * const p_mcast_mgr,
-                  IN osm_link_mgr_t * const p_link_mgr,
-                  IN osm_drop_mgr_t * const p_drop_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_stats_t * const p_stats,
-                  IN struct _osm_sm_state_mgr *const p_sm_state_mgr,
-                  IN const osm_sm_mad_ctrl_t * const p_mad_ctrl,
-                  IN cl_plock_t * const p_lock,
-                  IN cl_event_t * const p_subnet_up_event,
-                  IN osm_log_t * const p_log);
+osm_state_mgr_init(IN osm_state_mgr_t * const p_mgr, struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_state_mgr_t object to initialize.
 *
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_lid_mgr
-*              [in] Pointer to the LID Manager object.
-*
-*      p_ucast_mgr
-*              [in] Pointer to the Unicast Manager object.
-*
-*      p_mcast_mgr
-*              [in] Pointer to the Multicast Manager object.
-*
-*      p_link_mgr
-*              [in] Pointer to the Link Manager object.
-*
-*      p_drop_mgr
-*              [in] Pointer to the Drop Manager object.
-*
-*      p_req
-*              [in] Pointer to the Request Controller object.
-*
-*  p_stats
-*     [in] Pointer to the OpenSM statistics block.
-*
-*  p_sm_state_mgr
-*     [in] Pointer to the SM state mgr object.
-*
-*      p_mad_ctrl
-*              [in] Pointer to the SM's mad controller.
-*
-*      p_subnet_up_event
-*              [in] Pointer to the event to set if/when the subnet comes up.
-*
-*      p_log
-*              [in] Pointer to the log object.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      IB_SUCCESS if the State Manager object was initialized
diff --git a/opensm/include/opensm/osm_sweep_fail_ctrl.h 
b/opensm/include/opensm/osm_sweep_fail_ctrl.h
index 2fca6eb..28ae7a6 100644
--- a/opensm/include/opensm/osm_sweep_fail_ctrl.h
+++ b/opensm/include/opensm/osm_sweep_fail_ctrl.h
@@ -96,22 +96,13 @@ struct osm_sm;
 */
 typedef struct _osm_sweep_fail_ctrl {
        struct osm_sm *sm;
-       osm_log_t *p_log;
-       cl_dispatcher_t *p_disp;
        cl_disp_reg_handle_t h_disp;
-
 } osm_sweep_fail_ctrl_t;
 /*
 * FIELDS
 *      sm
 *              Pointer to the sm object.
 *
-*      p_log
-*              Pointer to the log object.
-*
-*      p_disp
-*              Pointer to the Dispatcher.
-*
 *      h_disp
 *              Handle returned from dispatcher registration.
 *
@@ -193,25 +184,14 @@ void osm_sweep_fail_ctrl_destroy(IN osm_sweep_fail_ctrl_t 
* const p_ctrl);
 */
 ib_api_status_t
 osm_sweep_fail_ctrl_init(IN osm_sweep_fail_ctrl_t * const p_ctrl,
-                        IN osm_log_t * const p_log,
-                        IN struct osm_sm * const sm,
-                        IN cl_dispatcher_t * const p_disp);
+                        IN struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_ctrl
 *              [in] Pointer to an osm_sweep_fail_ctrl_t object to initialize.
 *
-*      p_rcv
-*              [in] Pointer to an osm_sweep_fail_t object.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
 *      sm
-*              [in] Pointer to the sm object.
-*
-*      p_disp
-*              [in] Pointer to the OpenSM central Dispatcher.
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      CL_SUCCESS if the Sweep Fail Controller object was initialized
diff --git a/opensm/include/opensm/osm_ucast_mgr.h 
b/opensm/include/opensm/osm_ucast_mgr.h
index 88d8cca..1868eae 100644
--- a/opensm/include/opensm/osm_ucast_mgr.h
+++ b/opensm/include/opensm/osm_ucast_mgr.h
@@ -83,6 +83,7 @@ BEGIN_C_DECLS
 *      Steve King, Intel
 *
 *********/
+struct osm_sm;
 /****s* OpenSM: Unicast Manager/osm_ucast_mgr_t
 * NAME
 *      osm_ucast_mgr_t
@@ -96,6 +97,7 @@ BEGIN_C_DECLS
 * SYNOPSIS
 */
 typedef struct _osm_ucast_mgr {
+       struct osm_sm *sm;
        osm_subn_t *p_subn;
        osm_req_t *p_req;
        osm_log_t *p_log;
@@ -107,6 +109,9 @@ typedef struct _osm_ucast_mgr {
 } osm_ucast_mgr_t;
 /*
 * FIELDS
+*      sm
+*              Pointer to the SM object.
+*
 *      p_subn
 *              Pointer to the Subnet object for this subnet.
 *
@@ -210,26 +215,14 @@ void osm_ucast_mgr_destroy(IN osm_ucast_mgr_t * const 
p_mgr);
 * SYNOPSIS
 */
 ib_api_status_t
-osm_ucast_mgr_init(IN osm_ucast_mgr_t * const p_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_log_t * const p_log, IN cl_plock_t * const p_lock);
+osm_ucast_mgr_init(IN osm_ucast_mgr_t * const p_mgr, IN struct osm_sm * sm);
 /*
 * PARAMETERS
 *      p_mgr
 *              [in] Pointer to an osm_ucast_mgr_t object to initialize.
 *
-*      p_req
-*              [in] Pointer to the attribute Requester object.
-*
-*      p_subn
-*              [in] Pointer to the Subnet object for this subnet.
-*
-*      p_log
-*              [in] Pointer to the log object.
-*
-*      p_lock
-*              [in] Pointer to the OpenSM serializing lock.
+*      sm
+*              [in] Pointer to the SM object.
 *
 * RETURN VALUES
 *      IB_SUCCESS if the Unicast Manager object was initialized
diff --git a/opensm/opensm/osm_drop_mgr.c b/opensm/opensm/osm_drop_mgr.c
index 7ace399..202b33c 100644
--- a/opensm/opensm/osm_drop_mgr.c
+++ b/opensm/opensm/osm_drop_mgr.c
@@ -57,6 +57,7 @@
 #include <complib/cl_debug.h>
 #include <complib/cl_ptr_vector.h>
 #include <opensm/osm_drop_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_router.h>
 #include <opensm/osm_switch.h>
 #include <opensm/osm_node.h>
@@ -88,21 +89,19 @@ void osm_drop_mgr_destroy(IN osm_drop_mgr_t * const p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_drop_mgr_init(IN osm_drop_mgr_t * const p_mgr,
-                 IN osm_subn_t * const p_subn,
-                 IN osm_log_t * const p_log,
-                 IN osm_req_t * const p_req, IN cl_plock_t * const p_lock)
+osm_drop_mgr_init(IN osm_drop_mgr_t * const p_mgr, IN osm_sm_t * sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_drop_mgr_init);
+       OSM_LOG_ENTER(sm->p_log, osm_drop_mgr_init);
 
        osm_drop_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_req = p_req;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_req = &sm->req;
 
        OSM_LOG_EXIT(p_mgr->p_log);
        return (status);
diff --git a/opensm/opensm/osm_lid_mgr.c b/opensm/opensm/osm_lid_mgr.c
index 30e5713..3194f42 100644
--- a/opensm/opensm/osm_lid_mgr.c
+++ b/opensm/opensm/osm_lid_mgr.c
@@ -91,6 +91,7 @@
 #include <complib/cl_qmap.h>
 #include <complib/cl_debug.h>
 #include <opensm/osm_lid_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_log.h>
 #include <opensm/osm_node.h>
 #include <opensm/osm_switch.h>
@@ -98,7 +99,6 @@
 #include <opensm/osm_msgdef.h>
 #include <vendor/osm_vendor_api.h>
 #include <opensm/osm_db_pack.h>
-#include <stdlib.h>
 
 /**********************************************************************
   lid range item of qlist
@@ -241,28 +241,20 @@ static void __osm_lid_mgr_validate_db(IN osm_lid_mgr_t * 
p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr,
-                IN osm_req_t * const p_req,
-                IN osm_subn_t * const p_subn,
-                IN osm_db_t * const p_db,
-                IN osm_log_t * const p_log, IN cl_plock_t * const p_lock)
+osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr, IN osm_sm_t *sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_lid_mgr_init);
-
-       CL_ASSERT(p_req);
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_lock);
-       CL_ASSERT(p_db);
+       OSM_LOG_ENTER(sm->p_log, osm_lid_mgr_init);
 
        osm_lid_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_db = p_db;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_req = p_req;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_db = sm->p_db;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_req = &sm->req;
 
        /* we initialize and restore the db domain of guid to lid map */
        p_mgr->p_g2l = osm_db_domain_init(p_mgr->p_db, "/guid2lid");
@@ -280,7 +272,7 @@ osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr,
        /* we use the stored guid to lid table if not forced to reassign */
        if (!p_mgr->p_subn->opt.reassign_lids) {
                if (osm_db_restore(p_mgr->p_g2l)) {
-                       if (p_subn->opt.exit_on_fatal) {
+                       if (p_mgr->p_subn->opt.exit_on_fatal) {
                                osm_log(p_mgr->p_log, OSM_LOG_SYS,
                                        "FATAL: Error restoring Guid-to-Lid 
persistent database\n");
                                status = IB_ERROR;
diff --git a/opensm/opensm/osm_link_mgr.c b/opensm/opensm/osm_link_mgr.c
index b96b741..d5e0956 100644
--- a/opensm/opensm/osm_link_mgr.c
+++ b/opensm/opensm/osm_link_mgr.c
@@ -52,6 +52,7 @@
 #include <iba/ib_types.h>
 #include <complib/cl_debug.h>
 #include <opensm/osm_link_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_node.h>
 #include <opensm/osm_switch.h>
 #include <opensm/osm_helper.h>
@@ -76,25 +77,19 @@ void osm_link_mgr_destroy(IN osm_link_mgr_t * const p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_link_mgr_init(IN osm_link_mgr_t * const p_mgr,
-                 IN osm_req_t * const p_req,
-                 IN osm_subn_t * const p_subn,
-                 IN osm_log_t * const p_log, IN cl_plock_t * const p_lock)
+osm_link_mgr_init(IN osm_link_mgr_t * const p_mgr, IN osm_sm_t * sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_link_mgr_init);
-
-       CL_ASSERT(p_req);
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_lock);
+       OSM_LOG_ENTER(sm->p_log, osm_link_mgr_init);
 
        osm_link_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_req = p_req;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_req = &sm->req;
 
        OSM_LOG_EXIT(p_mgr->p_log);
        return (status);
diff --git a/opensm/opensm/osm_mcast_mgr.c b/opensm/opensm/osm_mcast_mgr.c
index f51a45a..3bdbd31 100644
--- a/opensm/opensm/osm_mcast_mgr.c
+++ b/opensm/opensm/osm_mcast_mgr.c
@@ -54,6 +54,7 @@
 #include <complib/cl_debug.h>
 #include <opensm/osm_opensm.h>
 #include <opensm/osm_mcast_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_multicast.h>
 #include <opensm/osm_node.h>
 #include <opensm/osm_switch.h>
@@ -374,25 +375,19 @@ void osm_mcast_mgr_destroy(IN osm_mcast_mgr_t * const 
p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_mcast_mgr_init(IN osm_mcast_mgr_t * const p_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_log_t * const p_log, IN cl_plock_t * const p_lock)
+osm_mcast_mgr_init(IN osm_mcast_mgr_t * const p_mgr, IN osm_sm_t * sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_mcast_mgr_init);
-
-       CL_ASSERT(p_req);
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_lock);
+       OSM_LOG_ENTER(sm->p_log, osm_mcast_mgr_init);
 
        osm_mcast_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_req = p_req;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_req = &sm->req;
 
        OSM_LOG_EXIT(p_mgr->p_log);
        return (status);
diff --git a/opensm/opensm/osm_sm.c b/opensm/opensm/osm_sm.c
index b60a615..af8c569 100644
--- a/opensm/opensm/osm_sm.c
+++ b/opensm/opensm/osm_sm.c
@@ -315,59 +315,35 @@ osm_sm_init(IN osm_sm_t * const p_sm,
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_lid_mgr_init(&p_sm->lid_mgr,
-                                 &p_sm->req,
-                                 p_sm->p_subn,
-                                 p_sm->p_db, p_sm->p_log, p_sm->p_lock);
+       status = osm_lid_mgr_init(&p_sm->lid_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_ucast_mgr_init(&p_sm->ucast_mgr,
-                                   &p_sm->req,
-                                   p_sm->p_subn, p_sm->p_log, p_sm->p_lock);
+       status = osm_ucast_mgr_init(&p_sm->ucast_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_link_mgr_init(&p_sm->link_mgr,
-                                  &p_sm->req,
-                                  p_sm->p_subn, p_sm->p_log, p_sm->p_lock);
+       status = osm_link_mgr_init(&p_sm->link_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_state_mgr_init(&p_sm->state_mgr,
-                                   p_sm->p_subn,
-                                   &p_sm->lid_mgr,
-                                   &p_sm->ucast_mgr,
-                                   &p_sm->mcast_mgr,
-                                   &p_sm->link_mgr,
-                                   &p_sm->drop_mgr,
-                                   &p_sm->req,
-                                   p_stats,
-                                   &p_sm->sm_state_mgr,
-                                   &p_sm->mad_ctrl,
-                                   p_sm->p_lock,
-                                   &p_sm->subnet_up_event, p_sm->p_log);
+       status = osm_state_mgr_init(&p_sm->state_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_drop_mgr_init(&p_sm->drop_mgr,
-                                  p_sm->p_subn,
-                                  p_sm->p_log, &p_sm->req, p_sm->p_lock);
+       status = osm_drop_mgr_init(&p_sm->drop_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_sweep_fail_ctrl_init(&p_sm->sweep_fail_ctrl,
-                                         p_log, p_sm, p_disp);
+       status = osm_sweep_fail_ctrl_init(&p_sm->sweep_fail_ctrl, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_sm_state_mgr_init(&p_sm->sm_state_mgr,
-                                      p_sm->p_subn, &p_sm->req, p_sm->p_log);
+       status = osm_sm_state_mgr_init(&p_sm->sm_state_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
-       status = osm_mcast_mgr_init(&p_sm->mcast_mgr,
-                                   &p_sm->req, p_subn, p_log, p_lock);
+       status = osm_mcast_mgr_init(&p_sm->mcast_mgr, p_sm);
        if (status != IB_SUCCESS)
                goto Exit;
 
diff --git a/opensm/opensm/osm_sm_state_mgr.c b/opensm/opensm/osm_sm_state_mgr.c
index c42611c..52aa199 100644
--- a/opensm/opensm/osm_sm_state_mgr.c
+++ b/opensm/opensm/osm_sm_state_mgr.c
@@ -49,10 +49,11 @@
 #endif                         /* HAVE_CONFIG_H */
 
 #include <string.h>
+#include <time.h>
 #include <iba/ib_types.h>
 #include <complib/cl_passivelock.h>
 #include <complib/cl_debug.h>
-#include <time.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_madw.h>
 #include <opensm/osm_switch.h>
 #include <opensm/osm_log.h>
@@ -392,24 +393,20 @@ void osm_sm_state_mgr_destroy(IN osm_sm_state_mgr_t * 
const p_sm_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_sm_state_mgr_init(IN osm_sm_state_mgr_t * const p_sm_mgr,
-                     IN osm_subn_t * const p_subn,
-                     IN osm_req_t * const p_req, IN osm_log_t * const p_log)
+osm_sm_state_mgr_init(IN osm_sm_state_mgr_t * const p_sm_mgr, IN osm_sm_t * sm)
 {
        cl_status_t status;
 
-       OSM_LOG_ENTER(p_log, osm_sm_state_mgr_init);
-
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_req);
+       OSM_LOG_ENTER(sm->p_log, osm_sm_state_mgr_init);
 
        osm_sm_state_mgr_construct(p_sm_mgr);
 
-       p_sm_mgr->p_log = p_log;
-       p_sm_mgr->p_req = p_req;
-       p_sm_mgr->p_subn = p_subn;
+       p_sm_mgr->sm = sm;
+       p_sm_mgr->p_log = sm->p_log;
+       p_sm_mgr->p_req = &sm->req;
+       p_sm_mgr->p_subn = sm->p_subn;
 
-       if (p_subn->opt.sm_inactive) {
+       if (p_sm_mgr->p_subn->opt.sm_inactive) {
                /* init the state of the SM to not active */
                p_sm_mgr->p_subn->sm_state = IB_SMINFO_STATE_NOTACTIVE;
                __osm_sm_state_mgr_notactive_msg(p_sm_mgr);
diff --git a/opensm/opensm/osm_state_mgr.c b/opensm/opensm/osm_state_mgr.c
index 4b7235f..5c196e3 100644
--- a/opensm/opensm/osm_state_mgr.c
+++ b/opensm/opensm/osm_state_mgr.c
@@ -55,6 +55,7 @@
 #include <complib/cl_passivelock.h>
 #include <complib/cl_debug.h>
 #include <opensm/osm_state_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_madw.h>
 #include <opensm/osm_switch.h>
 #include <opensm/osm_log.h>
@@ -93,51 +94,27 @@ void osm_state_mgr_destroy(IN osm_state_mgr_t * const p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_state_mgr_init(IN osm_state_mgr_t * const p_mgr,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_lid_mgr_t * const p_lid_mgr,
-                  IN osm_ucast_mgr_t * const p_ucast_mgr,
-                  IN osm_mcast_mgr_t * const p_mcast_mgr,
-                  IN osm_link_mgr_t * const p_link_mgr,
-                  IN osm_drop_mgr_t * const p_drop_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_stats_t * const p_stats,
-                  IN osm_sm_state_mgr_t * const p_sm_state_mgr,
-                  IN const osm_sm_mad_ctrl_t * const p_mad_ctrl,
-                  IN cl_plock_t * const p_lock,
-                  IN cl_event_t * const p_subnet_up_event,
-                  IN osm_log_t * const p_log)
+osm_state_mgr_init(IN osm_state_mgr_t * const p_mgr, IN osm_sm_t * sm)
 {
-       OSM_LOG_ENTER(p_log, osm_state_mgr_init);
-
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_lid_mgr);
-       CL_ASSERT(p_ucast_mgr);
-       CL_ASSERT(p_mcast_mgr);
-       CL_ASSERT(p_link_mgr);
-       CL_ASSERT(p_drop_mgr);
-       CL_ASSERT(p_req);
-       CL_ASSERT(p_stats);
-       CL_ASSERT(p_sm_state_mgr);
-       CL_ASSERT(p_mad_ctrl);
-       CL_ASSERT(p_lock);
+       OSM_LOG_ENTER(sm->p_log, osm_state_mgr_init);
 
        osm_state_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_lid_mgr = p_lid_mgr;
-       p_mgr->p_ucast_mgr = p_ucast_mgr;
-       p_mgr->p_mcast_mgr = p_mcast_mgr;
-       p_mgr->p_link_mgr = p_link_mgr;
-       p_mgr->p_drop_mgr = p_drop_mgr;
-       p_mgr->p_mad_ctrl = p_mad_ctrl;
-       p_mgr->p_req = p_req;
-       p_mgr->p_stats = p_stats;
-       p_mgr->p_sm_state_mgr = p_sm_state_mgr;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_lid_mgr = &sm->lid_mgr;
+       p_mgr->p_ucast_mgr = &sm->ucast_mgr;
+       p_mgr->p_mcast_mgr = &sm->mcast_mgr;
+       p_mgr->p_link_mgr = &sm->link_mgr;
+       p_mgr->p_drop_mgr = &sm->drop_mgr;
+       p_mgr->p_mad_ctrl = &sm->mad_ctrl;
+       p_mgr->p_req = &sm->req;
+       p_mgr->p_stats = &sm->p_subn->p_osm->stats;
+       p_mgr->p_sm_state_mgr = &sm->sm_state_mgr;
        p_mgr->state = OSM_SM_STATE_IDLE;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_subnet_up_event = p_subnet_up_event;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_subnet_up_event = &sm->subnet_up_event;
 
        OSM_LOG_EXIT(p_mgr->p_log);
        return IB_SUCCESS;
diff --git a/opensm/opensm/osm_sweep_fail_ctrl.c 
b/opensm/opensm/osm_sweep_fail_ctrl.c
index b46573d..92b3165 100644
--- a/opensm/opensm/osm_sweep_fail_ctrl.c
+++ b/opensm/opensm/osm_sweep_fail_ctrl.c
@@ -59,7 +59,7 @@ static void __osm_sweep_fail_ctrl_disp_callback(IN void 
*context,
 {
        osm_sweep_fail_ctrl_t *const p_ctrl = (osm_sweep_fail_ctrl_t *) context;
 
-       OSM_LOG_ENTER(p_ctrl->p_log, __osm_sweep_fail_ctrl_disp_callback);
+       OSM_LOG_ENTER(p_ctrl->sm->p_log, __osm_sweep_fail_ctrl_disp_callback);
 
        UNUSED_PARAM(p_data);
        /*
@@ -67,7 +67,7 @@ static void __osm_sweep_fail_ctrl_disp_callback(IN void 
*context,
         */
        osm_sm_signal(p_ctrl->sm, OSM_SIGNAL_LIGHT_SWEEP_FAIL);
 
-       OSM_LOG_EXIT(p_ctrl->p_log);
+       OSM_LOG_EXIT(p_ctrl->sm->p_log);
 }
 
 /**********************************************************************
@@ -90,26 +90,22 @@ void osm_sweep_fail_ctrl_destroy(IN osm_sweep_fail_ctrl_t * 
const p_ctrl)
  **********************************************************************/
 ib_api_status_t
 osm_sweep_fail_ctrl_init(IN osm_sweep_fail_ctrl_t * const p_ctrl,
-                        IN osm_log_t * const p_log,
-                        IN osm_sm_t * const sm,
-                        IN cl_dispatcher_t * const p_disp)
+                        IN osm_sm_t * const sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_sweep_fail_ctrl_init);
+       OSM_LOG_ENTER(sm->p_log, osm_sweep_fail_ctrl_init);
 
        osm_sweep_fail_ctrl_construct(p_ctrl);
-       p_ctrl->p_log = p_log;
-       p_ctrl->p_disp = p_disp;
        p_ctrl->sm = sm;
 
-       p_ctrl->h_disp = cl_disp_register(p_disp,
+       p_ctrl->h_disp = cl_disp_register(sm->p_disp,
                                          OSM_MSG_LIGHT_SWEEP_FAIL,
                                          __osm_sweep_fail_ctrl_disp_callback,
                                          p_ctrl);
 
        if (p_ctrl->h_disp == CL_DISP_INVALID_HANDLE) {
-               osm_log(p_log, OSM_LOG_ERROR,
+               osm_log(sm->p_log, OSM_LOG_ERROR,
                        "osm_sweep_fail_ctrl_init: ERR 3501: "
                        "Dispatcher registration failed\n");
                status = IB_INSUFFICIENT_RESOURCES;
@@ -117,6 +113,6 @@ osm_sweep_fail_ctrl_init(IN osm_sweep_fail_ctrl_t * const 
p_ctrl,
        }
 
       Exit:
-       OSM_LOG_EXIT(p_log);
+       OSM_LOG_EXIT(sm->p_log);
        return (status);
 }
diff --git a/opensm/opensm/osm_ucast_mgr.c b/opensm/opensm/osm_ucast_mgr.c
index 1841219..d7c045e 100644
--- a/opensm/opensm/osm_ucast_mgr.c
+++ b/opensm/opensm/osm_ucast_mgr.c
@@ -55,6 +55,7 @@
 #include <complib/cl_qmap.h>
 #include <complib/cl_debug.h>
 #include <opensm/osm_ucast_mgr.h>
+#include <opensm/osm_sm.h>
 #include <opensm/osm_log.h>
 #include <opensm/osm_node.h>
 #include <opensm/osm_switch.h>
@@ -86,25 +87,19 @@ void osm_ucast_mgr_destroy(IN osm_ucast_mgr_t * const p_mgr)
 /**********************************************************************
  **********************************************************************/
 ib_api_status_t
-osm_ucast_mgr_init(IN osm_ucast_mgr_t * const p_mgr,
-                  IN osm_req_t * const p_req,
-                  IN osm_subn_t * const p_subn,
-                  IN osm_log_t * const p_log, IN cl_plock_t * const p_lock)
+osm_ucast_mgr_init(IN osm_ucast_mgr_t * const p_mgr, IN osm_sm_t * sm)
 {
        ib_api_status_t status = IB_SUCCESS;
 
-       OSM_LOG_ENTER(p_log, osm_ucast_mgr_init);
-
-       CL_ASSERT(p_req);
-       CL_ASSERT(p_subn);
-       CL_ASSERT(p_lock);
+       OSM_LOG_ENTER(sm->p_log, osm_ucast_mgr_init);
 
        osm_ucast_mgr_construct(p_mgr);
 
-       p_mgr->p_log = p_log;
-       p_mgr->p_subn = p_subn;
-       p_mgr->p_lock = p_lock;
-       p_mgr->p_req = p_req;
+       p_mgr->sm = sm;
+       p_mgr->p_log = sm->p_log;
+       p_mgr->p_subn = sm->p_subn;
+       p_mgr->p_lock = sm->p_lock;
+       p_mgr->p_req = &sm->req;
 
        p_mgr->lft_buf = malloc(IB_LID_UCAST_END_HO + 1);
        if (!p_mgr->lft_buf)
-- 
1.5.3.4.206.g58ba4

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to