On Thu, Jun 18, 2009 at 3:12 PM, Sasha Khapyorsky<[email protected]> wrote: > > All sweep component processors (aka managers) will return its status > value instead of OSM_SIGNAL_DONE|OSM_SIGNAL_DONE_PENDING status - > waiting for outstanding MAD responses are automated now in > wait_for_pending_transaction() function.
Some possible simplifications and some other comments below. -- Hal > > Signed-off-by: Sasha Khapyorsky <[email protected]> > --- > opensm/include/opensm/osm_base.h | 4 -- > opensm/include/opensm/osm_lid_mgr.h | 18 ++------ > opensm/opensm/osm_lid_mgr.c | 77 > +++++++++++++---------------------- > opensm/opensm/osm_link_mgr.c | 56 ++++++++++++------------- > opensm/opensm/osm_mcast_mgr.c | 36 ++++++---------- > opensm/opensm/osm_pkey_mgr.c | 74 ++++++++++++++++------------------ > opensm/opensm/osm_qos.c | 33 ++++++++------- > opensm/opensm/osm_state_mgr.c | 10 ++-- > 8 files changed, 130 insertions(+), 178 deletions(-) > > diff --git a/opensm/include/opensm/osm_base.h > b/opensm/include/opensm/osm_base.h > index bca1133..03eed79 100644 > --- a/opensm/include/opensm/osm_base.h > +++ b/opensm/include/opensm/osm_base.h > @@ -793,10 +793,6 @@ typedef enum _osm_thread_state { > #define OSM_SIGNAL_PERFMGR_SWEEP 3 > #define OSM_SIGNAL_MAX 3 > > -/* status values for sweep managers - can be removed later */ > -#define OSM_SIGNAL_DONE 16 > -#define OSM_SIGNAL_DONE_PENDING 17 > - > typedef unsigned int osm_signal_t; > /***********/ > > diff --git a/opensm/include/opensm/osm_lid_mgr.h > b/opensm/include/opensm/osm_lid_mgr.h > index d6d1ab8..7e41c0c 100644 > --- a/opensm/include/opensm/osm_lid_mgr.h > +++ b/opensm/include/opensm/osm_lid_mgr.h > @@ -96,7 +96,6 @@ typedef struct osm_lid_mgr { > osm_db_t *p_db; > osm_log_t *p_log; > cl_plock_t *p_lock; > - boolean_t send_set_reqs; > osm_db_domain_t *p_g2l; > cl_qlist_t free_ranges; > uint8_t used_lids[IB_LID_UCAST_END_HO + 1]; > @@ -118,9 +117,6 @@ typedef struct osm_lid_mgr { > * p_lock > * Pointer to the serializing lock. > * > -* send_set_reqs > -* Boolean to indicate whether any set requests sent. > -* > * p_g2l > * Pointer to the database domain storing guid to lid mapping. > * > @@ -239,17 +235,14 @@ osm_lid_mgr_init(IN osm_lid_mgr_t * const p_mgr, IN > struct osm_sm * sm); > * > * SYNOPSIS > */ > -osm_signal_t osm_lid_mgr_process_sm(IN osm_lid_mgr_t * const p_mgr); > +int osm_lid_mgr_process_sm(IN osm_lid_mgr_t * const p_mgr); > /* > * PARAMETERS > * p_mgr > * [in] Pointer to an osm_lid_mgr_t object. > * > * RETURN VALUES > -* Returns the appropriate signal to the caller: > -* OSM_SIGNAL_DONE - operation is complete > -* OSM_SIGNAL_DONE_PENDING - local operations are complete, but > -* transactions are still pending on the wire. > +* Returns 0 on success and non-zero value otherwise. > * > * NOTES > * > @@ -267,17 +260,14 @@ osm_signal_t osm_lid_mgr_process_sm(IN osm_lid_mgr_t * > const p_mgr); > * > * SYNOPSIS > */ > -osm_signal_t osm_lid_mgr_process_subnet(IN osm_lid_mgr_t * const p_mgr); > +int osm_lid_mgr_process_subnet(IN osm_lid_mgr_t * const p_mgr); > /* > * PARAMETERS > * p_mgr > * [in] Pointer to an osm_lid_mgr_t object. > * > * RETURN VALUES > -* Returns the appropriate signal to the caller: > -* OSM_SIGNAL_DONE - operation is complete > -* OSM_SIGNAL_DONE_PENDING - local operations are complete, but > -* transactions are still pending on the wire. > +* Returns 0 on success and non-zero value otherwise. > * > * NOTES > * > diff --git a/opensm/opensm/osm_lid_mgr.c b/opensm/opensm/osm_lid_mgr.c > index e1d5106..34625ba 100644 > --- a/opensm/opensm/osm_lid_mgr.c > +++ b/opensm/opensm/osm_lid_mgr.c > @@ -821,10 +821,10 @@ static void lid_mgr_set_remote_pi_state_to_init(IN > osm_lid_mgr_t * p_mgr, > > /********************************************************************** > **********************************************************************/ > -static boolean_t lid_mgr_set_physp_pi(IN osm_lid_mgr_t * p_mgr, > - IN osm_port_t * p_port, > - IN osm_physp_t * p_physp, > - IN ib_net16_t const lid) > +static int lid_mgr_set_physp_pi(IN osm_lid_mgr_t * p_mgr, > + IN osm_port_t * p_port, > + IN osm_physp_t * p_physp, > + IN ib_net16_t const lid) > { > uint8_t payload[IB_SMP_DATA_SIZE]; > ib_port_info_t *p_pi = (ib_port_info_t *) payload; > @@ -836,6 +836,7 @@ static boolean_t lid_mgr_set_physp_pi(IN osm_lid_mgr_t * > p_mgr, > uint8_t op_vls; > uint8_t port_num; > boolean_t send_set = FALSE; > + int ret = 0; > > OSM_LOG_ENTER(p_mgr->p_log); > > @@ -1068,31 +1069,31 @@ static boolean_t lid_mgr_set_physp_pi(IN > osm_lid_mgr_t * p_mgr, > if (p_mgr->p_subn->first_time_master_sweep == TRUE) > send_set = TRUE; > > - if (send_set) { > - p_mgr->send_set_reqs = TRUE; > - status = osm_req_set(p_mgr->sm, > - osm_physp_get_dr_path_ptr(p_physp), > - payload, sizeof(payload), > - IB_MAD_ATTR_PORT_INFO, > - > cl_hton32(osm_physp_get_port_num(p_physp)), > - CL_DISP_MSGID_NONE, &context); > - } > + if (!send_set) > + goto Exit; > + > + status = osm_req_set(p_mgr->sm, osm_physp_get_dr_path_ptr(p_physp), > + payload, sizeof(payload), IB_MAD_ATTR_PORT_INFO, > + cl_hton32(osm_physp_get_port_num(p_physp)), > + CL_DISP_MSGID_NONE, &context); > + if (status != IB_SUCCESS) > + ret = -1; > > Exit: > OSM_LOG_EXIT(p_mgr->p_log); > - return send_set; > + return ret; > } > > /********************************************************************** > Processes our own node > Lock must already be held. > **********************************************************************/ > -static boolean_t lid_mgr_process_our_sm_node(IN osm_lid_mgr_t * p_mgr) > +static int lid_mgr_process_our_sm_node(IN osm_lid_mgr_t * p_mgr) > { > osm_port_t *p_port; > uint16_t min_lid_ho; > uint16_t max_lid_ho; > - boolean_t res = TRUE; > + int ret; > > OSM_LOG_ENTER(p_mgr->p_log); > > @@ -1105,7 +1106,7 @@ static boolean_t lid_mgr_process_our_sm_node(IN > osm_lid_mgr_t * p_mgr) > OSM_LOG(p_mgr->p_log, OSM_LOG_ERROR, "ERR 0308: " > "Can't acquire SM's port object, GUID 0x%016" PRIx64 > "\n", cl_ntoh64(p_mgr->p_subn->sm_port_guid)); > - res = FALSE; > + ret = -1; > goto Exit; > } > > @@ -1134,19 +1135,19 @@ static boolean_t lid_mgr_process_our_sm_node(IN > osm_lid_mgr_t * p_mgr) > /* > Set the PortInfo the Physical Port associated with this Port. > */ > - lid_mgr_set_physp_pi(p_mgr, p_port, p_port->p_physp, > - cl_hton16(min_lid_ho)); > + ret = lid_mgr_set_physp_pi(p_mgr, p_port, p_port->p_physp, > + cl_hton16(min_lid_ho)); > > Exit: > OSM_LOG_EXIT(p_mgr->p_log); > - return res; > + return ret; > } > > /********************************************************************** > **********************************************************************/ > -osm_signal_t osm_lid_mgr_process_sm(IN osm_lid_mgr_t * p_mgr) > +int osm_lid_mgr_process_sm(IN osm_lid_mgr_t * p_mgr) > { > - osm_signal_t signal = OSM_SIGNAL_DONE_PENDING; > + int ret; > > OSM_LOG_ENTER(p_mgr->p_log); > > @@ -1158,21 +1159,12 @@ osm_signal_t osm_lid_mgr_process_sm(IN osm_lid_mgr_t > * p_mgr) > persistent db */ > lid_mgr_init_sweep(p_mgr); > > - /* Set the send_set_reqs of the p_mgr to FALSE, and > - we'll see if any set requests were sent. If not - > - can signal OSM_SIGNAL_DONE */ > - p_mgr->send_set_reqs = FALSE; > - if (lid_mgr_process_our_sm_node(p_mgr) == FALSE) > - /* The initialization failed */ > - signal = OSM_SIGNAL_DONE; > - > - if (p_mgr->send_set_reqs == FALSE) > - signal = OSM_SIGNAL_DONE; > + ret = lid_mgr_process_our_sm_node(p_mgr); > > CL_PLOCK_RELEASE(p_mgr->p_lock); > > OSM_LOG_EXIT(p_mgr->p_log); > - return (signal); > + return ret; > } > > /********************************************************************** > @@ -1181,14 +1173,13 @@ osm_signal_t osm_lid_mgr_process_sm(IN osm_lid_mgr_t > * p_mgr) > 1.2 if a change is required send the port info > 2 if any change send the signal PENDING... > **********************************************************************/ > -osm_signal_t osm_lid_mgr_process_subnet(IN osm_lid_mgr_t * p_mgr) > +int osm_lid_mgr_process_subnet(IN osm_lid_mgr_t * p_mgr) > { > - osm_signal_t signal; > cl_qmap_t *p_port_guid_tbl; > osm_port_t *p_port; > ib_net64_t port_guid; > + int lid_changed, ret = 0; > uint16_t min_lid_ho, max_lid_ho; > - int lid_changed; > > CL_ASSERT(p_mgr); > > @@ -1198,11 +1189,6 @@ osm_signal_t osm_lid_mgr_process_subnet(IN > osm_lid_mgr_t * p_mgr) > > CL_ASSERT(p_mgr->p_subn->sm_port_guid); > > - /* Set the send_set_reqs of the p_mgr to FALSE, and > - we'll see if any set requests were sent. If not - > - can signal OSM_SIGNAL_DONE */ > - p_mgr->send_set_reqs = FALSE; > - > p_port_guid_tbl = &p_mgr->p_subn->port_guid_tbl; > > for (p_port = (osm_port_t *) cl_qmap_head(p_port_guid_tbl); > @@ -1244,19 +1230,14 @@ osm_signal_t osm_lid_mgr_process_subnet(IN > osm_lid_mgr_t * p_mgr) > /* the proc returns the fact it sent a set port info */ > if (lid_mgr_set_physp_pi(p_mgr, p_port, p_port->p_physp, > cl_hton16(min_lid_ho))) > - p_mgr->send_set_reqs = TRUE; > + ret = -1; > } /* all ports */ > > /* store the guid to lid table in persistent db */ > osm_db_store(p_mgr->p_g2l); > > - if (p_mgr->send_set_reqs == FALSE) > - signal = OSM_SIGNAL_DONE; > - else > - signal = OSM_SIGNAL_DONE_PENDING; > - > CL_PLOCK_RELEASE(p_mgr->p_lock); > > OSM_LOG_EXIT(p_mgr->p_log); > - return (signal); > + return ret; > } > diff --git a/opensm/opensm/osm_link_mgr.c b/opensm/opensm/osm_link_mgr.c > index d189471..285096c 100644 > --- a/opensm/opensm/osm_link_mgr.c > +++ b/opensm/opensm/osm_link_mgr.c > @@ -93,8 +93,8 @@ static uint8_t link_mgr_get_smsl(IN osm_sm_t * sm, IN > osm_physp_t * p_physp) > > /********************************************************************** > **********************************************************************/ > -static boolean_t link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * > p_physp, > - IN uint8_t port_state) > +static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp, > + IN uint8_t port_state) > { > uint8_t payload[IB_SMP_DATA_SIZE]; > ib_port_info_t *p_pi = (ib_port_info_t *) payload; > @@ -102,13 +102,10 @@ static boolean_t link_mgr_set_physp_pi(osm_sm_t * sm, > IN osm_physp_t * p_physp, > osm_madw_context_t context; > osm_node_t *p_node; > ib_api_status_t status; > - uint8_t port_num; > - uint8_t mtu; > - uint8_t smsl = OSM_DEFAULT_SL; > - uint8_t op_vls; > - boolean_t esp0 = FALSE; > - boolean_t send_set = FALSE; > + uint8_t port_num, mtu, op_vls, smsl = OSM_DEFAULT_SL; > + boolean_t esp0 = FALSE, send_set = FALSE; > osm_physp_t *p_remote_physp; > + int ret = 0; > > OSM_LOG_ENTER(sm->p_log); > > @@ -391,28 +388,29 @@ Send: > && sm->p_subn->first_time_master_sweep == TRUE) > send_set = TRUE; > > - if (send_set) > - status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p_physp), > - payload, sizeof(payload), > - IB_MAD_ATTR_PORT_INFO, > - cl_hton32(port_num), > - CL_DISP_MSGID_NONE, &context); > + if (!send_set) > + goto Exit; > + > + status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p_physp), > + payload, sizeof(payload), IB_MAD_ATTR_PORT_INFO, > + cl_hton32(port_num), CL_DISP_MSGID_NONE, > &context); > + if (status) > + ret = -1; > > Exit: > OSM_LOG_EXIT(sm->p_log); > - return send_set; > + return ret; > } > > /********************************************************************** > **********************************************************************/ > -static osm_signal_t link_mgr_process_node(osm_sm_t * sm, IN osm_node_t * > p_node, > - IN const uint8_t link_state) > +static int link_mgr_process_node(osm_sm_t * sm, IN osm_node_t * p_node, > + IN const uint8_t link_state) > { > - uint32_t i; > - uint32_t num_physp; > osm_physp_t *p_physp; > + uint32_t i, num_physp; > + int ret = 0; > uint8_t current_state; > - osm_signal_t signal = OSM_SIGNAL_DONE; > > OSM_LOG_ENTER(sm->p_log); > > @@ -453,20 +451,20 @@ static osm_signal_t link_mgr_process_node(osm_sm_t * > sm, IN osm_node_t * p_node, > p_physp->port_num, > ib_get_port_state_str(current_state)); > else if (link_mgr_set_physp_pi(sm, p_physp, link_state)) > - signal = OSM_SIGNAL_DONE_PENDING; > + ret = -1; Simpler as: else ret = link_mgr_set_physp_pi() ? > } > > OSM_LOG_EXIT(sm->p_log); > - return (signal); > + return ret; > } > > /********************************************************************** > **********************************************************************/ > -osm_signal_t osm_link_mgr_process(osm_sm_t * sm, IN const uint8_t link_state) > +int osm_link_mgr_process(osm_sm_t * sm, IN const uint8_t link_state) > { > cl_qmap_t *p_node_guid_tbl; > osm_node_t *p_node; > - osm_signal_t signal = OSM_SIGNAL_DONE; > + int ret = 0; > > OSM_LOG_ENTER(sm->p_log); > > @@ -476,14 +474,12 @@ osm_signal_t osm_link_mgr_process(osm_sm_t * sm, IN > const uint8_t link_state) > > for (p_node = (osm_node_t *) cl_qmap_head(p_node_guid_tbl); > p_node != (osm_node_t *) cl_qmap_end(p_node_guid_tbl); > - p_node = (osm_node_t *) cl_qmap_next(&p_node->map_item)) { > - if (link_mgr_process_node(sm, p_node, link_state) == > - OSM_SIGNAL_DONE_PENDING) > - signal = OSM_SIGNAL_DONE_PENDING; > - } > + p_node = (osm_node_t *) cl_qmap_next(&p_node->map_item)) > + if (link_mgr_process_node(sm, p_node, link_state)) > + ret = -1; Simpler as: ret = link_mgr_process_node() ? > > CL_PLOCK_RELEASE(sm->p_lock); > > OSM_LOG_EXIT(sm->p_log); > - return (signal); > + return ret; > } > diff --git a/opensm/opensm/osm_mcast_mgr.c b/opensm/opensm/osm_mcast_mgr.c > index de0a8a5..ea49588 100644 > --- a/opensm/opensm/osm_mcast_mgr.c > +++ b/opensm/opensm/osm_mcast_mgr.c > @@ -321,7 +321,7 @@ static osm_switch_t *mcast_mgr_find_root_switch(osm_sm_t > * sm, > > /********************************************************************** > **********************************************************************/ > -static osm_signal_t mcast_mgr_set_tbl(osm_sm_t * sm, IN osm_switch_t * p_sw) > +static int mcast_mgr_set_tbl(osm_sm_t * sm, IN osm_switch_t * p_sw) > { > osm_node_t *p_node; > osm_dr_path_t *p_path; > @@ -333,7 +333,7 @@ static osm_signal_t mcast_mgr_set_tbl(osm_sm_t * sm, IN > osm_switch_t * p_sw) > uint32_t max_position; > osm_mcast_tbl_t *p_tbl; > ib_net16_t block[IB_MCAST_BLOCK_SIZE]; > - osm_signal_t signal = OSM_SIGNAL_DONE; > + int ret = 0; > > CL_ASSERT(sm); > > @@ -375,10 +375,9 @@ static osm_signal_t mcast_mgr_set_tbl(osm_sm_t * sm, IN > osm_switch_t * p_sw) > OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 0A02: " > "Sending multicast fwd. tbl. block failed > (%s)\n", > ib_get_err_str(status)); > + ret = -1; > } > > - signal = OSM_SIGNAL_DONE_PENDING; > - > if (++position > max_position) { > position = 0; > block_num++; > @@ -386,7 +385,7 @@ static osm_signal_t mcast_mgr_set_tbl(osm_sm_t * sm, IN > osm_switch_t * p_sw) > } > > OSM_LOG_EXIT(sm->p_log); > - return signal; > + return ret; > } > > /********************************************************************** > @@ -1104,15 +1103,13 @@ Exit: > > /********************************************************************** > **********************************************************************/ > -osm_signal_t osm_mcast_mgr_process(osm_sm_t * sm) > +int osm_mcast_mgr_process(osm_sm_t * sm) > { > - osm_signal_t signal; > osm_switch_t *p_sw; > cl_qmap_t *p_sw_tbl; > cl_qlist_t *p_list = &sm->mgrp_list; > osm_mgrp_t *p_mgrp; > - boolean_t pending_transactions = FALSE; > - int i; > + int i, ret = 0; > > OSM_LOG_ENTER(sm->p_log); > > @@ -1142,9 +1139,8 @@ osm_signal_t osm_mcast_mgr_process(osm_sm_t * sm) > */ > p_sw = (osm_switch_t *) cl_qmap_head(p_sw_tbl); > while (p_sw != (osm_switch_t *) cl_qmap_end(p_sw_tbl)) { > - signal = mcast_mgr_set_tbl(sm, p_sw); > - if (signal == OSM_SIGNAL_DONE_PENDING) > - pending_transactions = TRUE; > + if (mcast_mgr_set_tbl(sm, p_sw)) > + ret = -1; Simpler as: ret = mcast_mgr_set_tbl() ? > p_sw = (osm_switch_t *) cl_qmap_next(&p_sw->map_item); > } > > @@ -1157,25 +1153,22 @@ osm_signal_t osm_mcast_mgr_process(osm_sm_t * sm) > > OSM_LOG_EXIT(sm->p_log); > > - if (pending_transactions == TRUE) > - return (OSM_SIGNAL_DONE_PENDING); > - else > - return (OSM_SIGNAL_DONE); > + return ret; > } > > /********************************************************************** > This is the function that is invoked during idle time to handle the > process request for mcast groups where join/leave/delete was required. > **********************************************************************/ > -osm_signal_t osm_mcast_mgr_process_mgroups(osm_sm_t * sm) > +int osm_mcast_mgr_process_mgroups(osm_sm_t * sm) > { > cl_qlist_t *p_list = &sm->mgrp_list; > osm_switch_t *p_sw; > cl_qmap_t *p_sw_tbl; > osm_mgrp_t *p_mgrp; > ib_net16_t mlid; > - osm_signal_t ret, signal = OSM_SIGNAL_DONE; > osm_mcast_mgr_ctxt_t *ctx; > + int ret = 0; > > OSM_LOG_ENTER(sm->p_log); > > @@ -1219,9 +1212,8 @@ osm_signal_t osm_mcast_mgr_process_mgroups(osm_sm_t * > sm) > p_sw_tbl = &sm->p_subn->sw_guid_tbl; > p_sw = (osm_switch_t *) cl_qmap_head(p_sw_tbl); > while (p_sw != (osm_switch_t *) cl_qmap_end(p_sw_tbl)) { > - ret = mcast_mgr_set_tbl(sm, p_sw); > - if (ret == OSM_SIGNAL_DONE_PENDING) > - signal = ret; > + if (mcast_mgr_set_tbl(sm, p_sw)) > + ret = -1; > p_sw = (osm_switch_t *) cl_qmap_next(&p_sw->map_item); > } > > @@ -1229,5 +1221,5 @@ osm_signal_t osm_mcast_mgr_process_mgroups(osm_sm_t * > sm) > > CL_PLOCK_RELEASE(sm->p_lock); > OSM_LOG_EXIT(sm->p_log); > - return signal; > + return ret; > } > diff --git a/opensm/opensm/osm_pkey_mgr.c b/opensm/opensm/osm_pkey_mgr.c > index 9b76ed7..6b23b27 100644 > --- a/opensm/opensm/osm_pkey_mgr.c > +++ b/opensm/opensm/osm_pkey_mgr.c > @@ -189,7 +189,7 @@ pkey_mgr_update_pkey_entry(IN osm_sm_t * sm, > > /********************************************************************** > **********************************************************************/ > -static boolean_t > +static ib_api_status_t > pkey_mgr_enforce_partition(IN osm_log_t * p_log, osm_sm_t * sm, > IN osm_physp_t * p_physp, IN const boolean_t > enforce) > { > @@ -207,7 +207,7 @@ pkey_mgr_enforce_partition(IN osm_log_t * p_log, osm_sm_t > * sm, > cl_ntoh64(osm_node_get_node_guid > (osm_physp_get_node_ptr(p_physp))), > osm_physp_get_port_num(p_physp)); > - return FALSE; > + return IB_SUCCESS; > } > > memset(payload, 0, IB_SMP_DATA_SIZE); > @@ -233,28 +233,26 @@ pkey_mgr_enforce_partition(IN osm_log_t * p_log, > osm_sm_t * sm, > IB_MAD_ATTR_PORT_INFO, > cl_hton32(osm_physp_get_port_num(p_physp)), > CL_DISP_MSGID_NONE, &context); > - if (status != IB_SUCCESS) { > + if (status != IB_SUCCESS) > OSM_LOG(p_log, OSM_LOG_ERROR, "ERR 0511: " > "Failed to set PortInfo for " > "node 0x%016" PRIx64 " port %u\n", > cl_ntoh64(osm_node_get_node_guid > (osm_physp_get_node_ptr(p_physp))), > osm_physp_get_port_num(p_physp)); > - return FALSE; > - } else { > + else > OSM_LOG(p_log, OSM_LOG_DEBUG, > "Set PortInfo for node 0x%016" PRIx64 " port %u\n", > cl_ntoh64(osm_node_get_node_guid > (osm_physp_get_node_ptr(p_physp))), > osm_physp_get_port_num(p_physp)); > - return TRUE; > - } > + return status; > } > > /********************************************************************** > **********************************************************************/ > -static boolean_t pkey_mgr_update_port(osm_log_t * p_log, osm_sm_t * sm, > - const osm_port_t * const p_port) > +static int pkey_mgr_update_port(osm_log_t * p_log, osm_sm_t * sm, > + const osm_port_t * const p_port) > { > osm_physp_t *p_physp; > osm_node_t *p_node; > @@ -267,10 +265,10 @@ static boolean_t pkey_mgr_update_port(osm_log_t * > p_log, osm_sm_t * sm, > uint16_t num_of_blocks; > uint16_t max_num_of_blocks; > ib_api_status_t status; > - boolean_t ret_val = FALSE; > osm_pending_pkey_t *p_pending; > boolean_t found; > ib_pkey_table_t empty_block; > + int ret = 0; > > memset(&empty_block, 0, sizeof(ib_pkey_table_t)); > > @@ -360,32 +358,32 @@ static boolean_t pkey_mgr_update_port(osm_log_t * > p_log, osm_sm_t * sm, > status = > pkey_mgr_update_pkey_entry(sm, p_physp, new_block, > block_index); > - if (status == IB_SUCCESS) { > + if (status == IB_SUCCESS) > OSM_LOG(p_log, OSM_LOG_DEBUG, > "Updated pkey table block %d for node 0x%016" > PRIx64 " port %u\n", block_index, > cl_ntoh64(osm_node_get_node_guid(p_node)), > osm_physp_get_port_num(p_physp)); > - ret_val = TRUE; > - } else { > + else { > OSM_LOG(p_log, OSM_LOG_ERROR, "ERR 0506: " > "pkey_mgr_update_pkey_entry() failed to update > " > "pkey table block %d for node 0x%016" PRIx64 > " port %u\n", block_index, > cl_ntoh64(osm_node_get_node_guid(p_node)), > osm_physp_get_port_num(p_physp)); > + ret = -1; > } > } > > - return ret_val; > + return ret; > } > > /********************************************************************** > **********************************************************************/ > -static boolean_t > -pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * sm, > - const osm_subn_t * p_subn, > - const osm_port_t * const p_port, boolean_t enforce) > +static int pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * sm, > + const osm_subn_t * p_subn, > + const osm_port_t * const p_port, > + boolean_t enforce) > { > osm_physp_t *p_physp, *peer; > osm_node_t *p_node; > @@ -396,21 +394,20 @@ pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * > sm, > uint16_t num_of_blocks; > uint16_t peer_max_blocks; > ib_api_status_t status = IB_SUCCESS; > - boolean_t ret_val = FALSE; > - boolean_t port_info_set = FALSE; > ib_pkey_table_t empty_block; > + int ret = 0; > > memset(&empty_block, 0, sizeof(ib_pkey_table_t)); > > p_physp = p_port->p_physp; > if (!p_physp) > - return FALSE; > + return -1; > peer = osm_physp_get_remote(p_physp); > if (!peer) > - return FALSE; > + return -1; > p_node = osm_physp_get_node_ptr(peer); > if (!p_node->sw || !p_node->sw->switch_info.enforce_cap) > - return FALSE; > + return 0; Why are the FALSEs above changed inconsistently ? > p_pkey_tbl = osm_physp_get_pkey_tbl(p_physp); > p_peer_pkey_tbl = &peer->pkeys; > @@ -424,13 +421,14 @@ pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * > sm, > cl_ntoh64(osm_node_get_node_guid(p_node)), > osm_physp_get_port_num(peer)); > enforce = FALSE; > + ret = -1; > } > > if (pkey_mgr_enforce_partition(p_log, sm, peer, enforce)) > - port_info_set = TRUE; > + ret = -1; Simpler as: ret = pkey_mgr_enforce_partition() ? > if (enforce == FALSE) > - return port_info_set; > + return ret; > > p_peer_pkey_tbl->used_blocks = p_pkey_tbl->used_blocks; > for (block_index = 0; block_index < p_pkey_tbl->used_blocks; > @@ -443,12 +441,9 @@ pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * > sm, > osm_pkey_tbl_block_get(p_peer_pkey_tbl, block_index); > if (!peer_block > || memcmp(peer_block, block, sizeof(*peer_block))) { > - status = > - pkey_mgr_update_pkey_entry(sm, peer, block, > - block_index); > - if (status == IB_SUCCESS) > - ret_val = TRUE; > - else > + status = pkey_mgr_update_pkey_entry(sm, peer, block, > + block_index); > + if (status != IB_SUCCESS) { > OSM_LOG(p_log, OSM_LOG_ERROR, "ERR 0509: " > "pkey_mgr_update_pkey_entry() failed > to update " > "pkey table block %d for node 0x%016" > @@ -456,19 +451,19 @@ pkey_mgr_update_peer_port(osm_log_t * p_log, osm_sm_t * > sm, > cl_ntoh64(osm_node_get_node_guid > (p_node)), > osm_physp_get_port_num(peer)); > + ret = -1; > + } > } > } > > - if (ret_val) > + if (!ret) > OSM_LOG(p_log, OSM_LOG_DEBUG, > "Pkey table was updated for node 0x%016" PRIx64 > " port %u\n", > cl_ntoh64(osm_node_get_node_guid(p_node)), > osm_physp_get_port_num(peer)); > > - if (port_info_set) > - return TRUE; > - return ret_val; > + return ret; > } > > /********************************************************************** > @@ -479,7 +474,7 @@ osm_signal_t osm_pkey_mgr_process(IN osm_opensm_t * p_osm) > cl_map_item_t *p_next; > osm_prtn_t *p_prtn; > osm_port_t *p_port; > - osm_signal_t signal = OSM_SIGNAL_DONE; > + int ret = 0; > > CL_ASSERT(p_osm); > > @@ -490,6 +485,7 @@ osm_signal_t osm_pkey_mgr_process(IN osm_opensm_t * p_osm) > if (osm_prtn_make_partitions(&p_osm->log, &p_osm->subn) != IB_SUCCESS) > { > OSM_LOG(&p_osm->log, OSM_LOG_ERROR, "ERR 0510: " > "osm_prtn_make_partitions() failed\n"); > + ret = -1; > goto _err; > } > > @@ -512,17 +508,17 @@ osm_signal_t osm_pkey_mgr_process(IN osm_opensm_t * > p_osm) > p_port = (osm_port_t *) p_next; > p_next = cl_qmap_next(p_next); > if (pkey_mgr_update_port(&p_osm->log, &p_osm->sm, p_port)) > - signal = OSM_SIGNAL_DONE_PENDING; > + ret = -1; Simpler as: ret = pkey_mgr_update_port() ? > if ((osm_node_get_type(p_port->p_node) != IB_NODE_TYPE_SWITCH) > && pkey_mgr_update_peer_port(&p_osm->log, &p_osm->sm, > &p_osm->subn, p_port, > !p_osm->subn.opt. > no_partition_enforcement)) > - signal = OSM_SIGNAL_DONE_PENDING; > + ret = -1; Simpler as: if (osm_node_get_type()) ret = pkey_mgr_update_peer_port() ? > } > > _err: > CL_PLOCK_RELEASE(&p_osm->lock); > OSM_LOG_EXIT(&p_osm->log); > - return (signal); > + return ret; > } > diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c > index d0aa866..e3dfb58 100644 > --- a/opensm/opensm/osm_qos.c > +++ b/opensm/opensm/osm_qos.c > @@ -222,10 +222,10 @@ static ib_api_status_t sl2vl_update(osm_sm_t * sm, > osm_port_t * p_port, > return IB_SUCCESS; > } > > -static ib_api_status_t qos_physp_setup(osm_log_t * p_log, osm_sm_t * sm, > - osm_port_t * p_port, osm_physp_t * p, > - uint8_t port_num, unsigned > force_update, > - const struct qos_config *qcfg) > +static int qos_physp_setup(osm_log_t * p_log, osm_sm_t * sm, > + osm_port_t * p_port, osm_physp_t * p, > + uint8_t port_num, unsigned force_update, > + const struct qos_config *qcfg) > { > ib_api_status_t status; > > @@ -241,7 +241,7 @@ static ib_api_status_t qos_physp_setup(osm_log_t * p_log, > osm_sm_t * sm, > "failed to update VLArbitration tables " > "for port %" PRIx64 " #%d\n", > cl_ntoh64(p->port_guid), port_num); > - return status; > + return -1; > } > > /* setup SL2VL tables */ > @@ -251,13 +251,13 @@ static ib_api_status_t qos_physp_setup(osm_log_t * > p_log, osm_sm_t * sm, > "failed to update SL2VLMapping tables " > "for port %" PRIx64 " #%d\n", > cl_ntoh64(p->port_guid), port_num); > - return status; > + return -1; > } > > - return IB_SUCCESS; > + return 0; > } > > -osm_signal_t osm_qos_setup(osm_opensm_t * p_osm) > +int osm_qos_setup(osm_opensm_t * p_osm) > { > struct qos_config ca_config, sw0_config, swe_config, rtr_config; > struct qos_config *cfg; > @@ -267,12 +267,12 @@ osm_signal_t osm_qos_setup(osm_opensm_t * p_osm) > uint32_t num_physp; > osm_physp_t *p_physp; > osm_node_t *p_node; > - ib_api_status_t status; > unsigned force_update; > + int ret = 0; > uint8_t i; > > if (!p_osm->subn.opt.qos) > - return OSM_SIGNAL_DONE; > + return 0; > > OSM_LOG_ENTER(&p_osm->log); > > @@ -305,10 +305,10 @@ osm_signal_t osm_qos_setup(osm_opensm_t * p_osm) > continue; > force_update = p_physp->need_update || > p_osm->subn.need_update; > - status = > - qos_physp_setup(&p_osm->log, &p_osm->sm, > + if (qos_physp_setup(&p_osm->log, &p_osm->sm, > p_port, p_physp, i, > - force_update, > &swe_config); > + force_update, > &swe_config)) > + ret = -1; Simpler as: ret = qos_physp_setup() ? > } > /* skip base port 0 */ > if (!ib_switch_info_is_enhanced_port0 > @@ -326,14 +326,15 @@ osm_signal_t osm_qos_setup(osm_opensm_t * p_osm) > continue; > > force_update = p_physp->need_update || p_osm->subn.need_update; > - status = qos_physp_setup(&p_osm->log, &p_osm->sm, p_port, > - p_physp, 0, force_update, cfg); > + if (qos_physp_setup(&p_osm->log, &p_osm->sm, p_port, p_physp, > + 0, force_update, cfg)) > + ret = -1; Simpler as: ret = qos_physp_setup() ? > } > > cl_plock_release(&p_osm->lock); > OSM_LOG_EXIT(&p_osm->log); > > - return OSM_SIGNAL_DONE; > + return ret; > } > > /* > diff --git a/opensm/opensm/osm_state_mgr.c b/opensm/opensm/osm_state_mgr.c > index a3e3609..adc39a0 100644 > --- a/opensm/opensm/osm_state_mgr.c > +++ b/opensm/opensm/osm_state_mgr.c > @@ -64,11 +64,11 @@ > #include <opensm/osm_opensm.h> > > extern void osm_drop_mgr_process(IN osm_sm_t * sm); > -extern osm_signal_t osm_qos_setup(IN osm_opensm_t * p_osm); > -extern osm_signal_t osm_pkey_mgr_process(IN osm_opensm_t * p_osm); > -extern osm_signal_t osm_mcast_mgr_process(IN osm_sm_t * sm); > -extern osm_signal_t osm_mcast_mgr_process_mgroups(IN osm_sm_t * sm); > -extern osm_signal_t osm_link_mgr_process(IN osm_sm_t * sm, IN uint8_t state); > +extern int osm_qos_setup(IN osm_opensm_t * p_osm); > +extern int osm_pkey_mgr_process(IN osm_opensm_t * p_osm); > +extern int osm_mcast_mgr_process(IN osm_sm_t * sm); > +extern int osm_mcast_mgr_process_mgroups(IN osm_sm_t * sm); > +extern int osm_link_mgr_process(IN osm_sm_t * sm, IN uint8_t state); > > /********************************************************************** > **********************************************************************/ > -- > 1.6.3.1 > > _______________________________________________ > 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 >
_______________________________________________ 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
