Hi Sasha,
Sasha Khapyorsky wrote:
There are some code consolidation, functionality merging and removing
intermediate lists. Also osm_port_t structure has list_item field now
which is used to maintain port order list for routing.
This is a preparation for routing port ordering based on leaf switches
reverse sorted by number of active links.
Signed-off-by: Sasha Khapyorsky <[EMAIL PROTECTED]>
---
opensm/include/opensm/osm_port.h | 4 +
opensm/include/opensm/osm_ucast_mgr.h | 5 +
opensm/opensm/osm_ucast_mgr.c | 254 ++++++---------------------------
3 files changed, 55 insertions(+), 208 deletions(-)
OpenSM crashed in cl_qlist_insert_tail() on the following assert:
CL_ASSERT(p_list_item->p_list != p_list);
See below:
-static void
-__osm_ucast_mgr_build_fwd_tables(IN osm_ucast_mgr_t * const p_mgr)
+static void add_port_to_order_list(cl_map_item_t * const p_map_item, void *ctx)
{
- struct osm_ucast_port_context ctx;
- osm_opensm_t *p_osm;
- cl_qmap_t *p_sw_guid_tbl;
- cl_qlist_t guid_routing_order_list;
- cl_qlist_t port_routing_order_list;
- unsigned int lists_created = 0;
- unsigned int use_routing_order = 0;
- int ret = 0;
+ osm_port_t *port = (osm_port_t *)p_map_item;
+ osm_ucast_mgr_t *m = ctx;
- p_osm = p_mgr->p_subn->p_osm;
- p_sw_guid_tbl = &p_mgr->p_subn->sw_guid_tbl;
Crashed during cl_qlist_insert_tail(...) here:
+ if (!port->flag)
+ cl_qlist_insert_tail(&m->port_order_list, &port->list_item);
+ else
+ port->flag = 0;
+}
...
+static void ucast_mgr_build_lfts(osm_ucast_mgr_t *p_mgr)
+{
+ cl_qlist_init(&p_mgr->port_order_list);
- OSM_LOG(&p_osm->log, OSM_LOG_DEBUG,
+ if (p_mgr->p_subn->opt.guid_routing_order_file) {
+ OSM_LOG(p_mgr->p_log, OSM_LOG_DEBUG,
"Fetching guid routing order file %s\n",
- p_osm->subn.opt.guid_routing_order_file);
-
- cl_qlist_init(&guid_routing_order_list);
- cl_qlist_init(&port_routing_order_list);
-
- lists_created++;
+ p_mgr->p_subn->opt.guid_routing_order_file);
- list_ctx.p_mgr = p_mgr;
- list_ctx.p_list = &guid_routing_order_list;
-
- ret = parse_node_map(p_osm->subn.opt.guid_routing_order_file,
- __guid_qlist_insert,
- &list_ctx);
- if (!ret && cl_qlist_count(&guid_routing_order_list)) {
- if (__port_qlist_create(p_mgr,
- &guid_routing_order_list,
- &port_routing_order_list) < 0)
- goto cleanup;
- use_routing_order++;
- }
- else
- OSM_LOG(&p_osm->log, OSM_LOG_ERROR, "ERR : "
+ if (parse_node_map(p_mgr->p_subn->opt.guid_routing_order_file,
+ add_guid_to_order_list, p_mgr))
+ OSM_LOG(p_mgr->p_log, OSM_LOG_ERROR, "ERR : "
"cannot parse guid routing order file %s\n",
- p_osm->subn.opt.guid_routing_order_file);
+ p_mgr->p_subn->opt.guid_routing_order_file);
}
- if (use_routing_order) {
- ctx.p_mgr = p_mgr;
- ctx.p_port_tbl = NULL;
- ctx.p_port_list = &port_routing_order_list;
- }
- else {
- ctx.p_mgr = p_mgr;
- ctx.p_port_tbl = &p_mgr->p_subn->port_guid_tbl;
- ctx.p_port_list = NULL;
- }
Entered to add_port_to_order_list from here:
+ cl_qmap_apply_func(&p_mgr->p_subn->port_guid_tbl,
+ add_port_to_order_list, p_mgr);
-- Yevgeny
--
Yevgeny Kliteynik
Mellanox Technologies LTD.
SW
Phone: +972 (4) 909 7200 (ext 394)
Mobile: +972 (52) 693 0010
E-mail: [EMAIL PROTECTED]
----------------------------------------------------------------------
Emails belong on computers, trees belong in forests; if you must print
this, do it on recycled paper.
http://www.greenpeace.org/international/
----------------------------------------------------------------------
Disclaimer added by CodeTwo Exchange Rules
http://www.codetwo.com
_______________________________________________
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