Merge functionally almost equivalent functions: mcast_mgr_process_mgrp() and osm_mcast_mgr_process_tree().
Signed-off-by: Sasha Khapyorsky <[email protected]> --- opensm/opensm/osm_mcast_mgr.c | 59 ++++++++++++----------------------------- 1 files changed, 17 insertions(+), 42 deletions(-) diff --git a/opensm/opensm/osm_mcast_mgr.c b/opensm/opensm/osm_mcast_mgr.c index 41e837d..4dbbaa0 100644 --- a/opensm/opensm/osm_mcast_mgr.c +++ b/opensm/opensm/osm_mcast_mgr.c @@ -1019,10 +1019,11 @@ Exit: #endif /********************************************************************** - lock must already be held on entry -**********************************************************************/ -static ib_api_status_t osm_mcast_mgr_process_tree(osm_sm_t * sm, - IN osm_mgrp_t * p_mgrp) + Process the entire group. + NOTE : The lock should be held externally! + **********************************************************************/ +static ib_api_status_t mcast_mgr_process_mgrp(osm_sm_t * sm, + IN osm_mgrp_t * p_mgrp) { ib_api_status_t status = IB_SUCCESS; ib_net16_t mlid; @@ -1041,44 +1042,15 @@ static ib_api_status_t osm_mcast_mgr_process_tree(osm_sm_t * sm, */ mcast_mgr_clear(sm, cl_ntoh16(mlid)); - if (!p_mgrp->full_members) - goto Exit; - - status = mcast_mgr_build_spanning_tree(sm, p_mgrp); - if (status != IB_SUCCESS) { - OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A17: " - "Unable to create spanning tree (%s)\n", - ib_get_err_str(status)); - goto Exit; - } - -Exit: - OSM_LOG_EXIT(sm->p_log); - return (status); -} - -/********************************************************************** - Process the entire group. - NOTE : The lock should be held externally! - **********************************************************************/ -static ib_api_status_t mcast_mgr_process_mgrp(osm_sm_t * sm, - IN osm_mgrp_t * p_mgrp) -{ - ib_api_status_t status; - - OSM_LOG_ENTER(sm->p_log); - - status = osm_mcast_mgr_process_tree(sm, p_mgrp); - if (status != IB_SUCCESS) { - OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A19: " - "Unable to create spanning tree (%s)\n", - ib_get_err_str(status)); - goto Exit; - } - p_mgrp->last_tree_id = p_mgrp->last_change_id; - - /* remove MCGRP if it is marked for deletion */ - if (p_mgrp->to_be_deleted) { + if (p_mgrp->full_members) { + status = mcast_mgr_build_spanning_tree(sm, p_mgrp); + if (status != IB_SUCCESS) { + OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A17: " + "Unable to create spanning tree (%s)\n", + ib_get_err_str(status)); + goto Exit; + } + } else if (p_mgrp->to_be_deleted) { OSM_LOG(sm->p_log, OSM_LOG_DEBUG, "Destroying mgrp with lid:0x%x\n", cl_ntoh16(p_mgrp->mlid)); @@ -1087,8 +1059,11 @@ static ib_api_status_t mcast_mgr_process_mgrp(osm_sm_t * sm, cl_fmap_remove_item(&sm->p_subn->mgrp_mgid_tbl, &p_mgrp->map_item); osm_mgrp_delete(p_mgrp); + goto Exit; } + p_mgrp->last_tree_id = p_mgrp->last_change_id; + Exit: OSM_LOG_EXIT(sm->p_log); return status; -- 1.6.3.3 _______________________________________________ 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
