opensm: Changed sl_path API to include slid and dlid only
PATCH 2/3 opensm: Changed sl_path API to include slid and dlid only
src_port and dst_oprt are redundant.
Signed-off-by Jens Domke <[email protected]>
--- include/opensm/osm_opensm.h | 3 +-- opensm/osm_link_mgr.c | 8 +------- opensm/osm_sa_path_record.c | 3 +-- opensm/osm_torus.c | 15 ++++++++++++--- opensm/osm_ucast_dfsssp.c | 13 +++++++++++-- opensm/osm_ucast_lash.c | 13 +++++++++++-- 6 files changed, 37 insertions(+), 18 deletions(-)
include/opensm/osm_opensm.h +1 -2
@@ -135,8 +135,7 @@ struct osm_routing_engine { IN uint8_t in_port_num, IN uint8_t out_port_num, IN OUT ib_slvl_table_t *t); uint8_t (*path_sl)(void *context, IN uint8_t path_sl_hint, - IN const osm_port_t *src_port, IN const uint16_t slid, - IN const osm_port_t *dst_port, IN const uint16_t dlid); + IN const ib_net16_t slid, IN const ib_net16_t dlid);ib_api_status_t (*mcast_build_stree)(void *context, IN OUT osm_mgrp_box_t *mgb);void (*destroy) (void *context);
opensm/osm_link_mgr.c +1 -7
@@ -59,7 +59,6 @@ static uint8_t link_mgr_get_smsl(IN osm_sm_t * sm, IN osm_physp_t * p_physp) {osm_opensm_t *p_osm = sm->p_subn->p_osm;struct osm_routing_engine *re = p_osm->routing_engine_used; -const osm_port_t *p_sm_port, *p_src_port;ib_net16_t slid;ib_net16_t smlid;uint8_t sl;
@@ -76,16 +75,11 @@ static uint8_t link_mgr_get_smsl(IN osm_sm_t * sm, IN osm_physp_t * p_physp)return sm->p_subn->opt.sm_sl; } -/* Find osm_port of the SM itself = dest_port */ smlid = sm->p_subn->sm_base_lid; - p_sm_port =osm_get_port_by_lid (sm->p_subn, sm->p_subn->sm_base_lid); - -/* Find osm_port of the source = p_physp */ - p_src_port =osm_get_port_by_lid (sm->p_subn, slid);/* Call into routing engine to find proper SL */ sl = re->path_sl (re->context, sm->p_subn->opt.sm_sl, - p_src_port, slid, p_sm_port, smlid); + slid, smlid);OSM_LOG_EXIT (sm->p_log);return sl;
opensm/osm_sa_path_record.c +1 -2
@@ -822,8 +822,7 @@ static ib_api_status_t pr_rcv_get_path_parms(IN osm_sa_t * sa,*/ if (p_re && p_re->path_sl) sl = p_re->path_sl (p_re->context, sl, - p_src_alias_guid->p_base_port, src_lid_ho, - p_dest_alias_guid->p_base_port, dest_lid_ho); +cl_hton16 (src_lid_ho),cl_hton16 (dest_lid_ho));/* reset pkey when raw traffic */ if (comp_mask & IB_PR_COMPMASK_RAWTRAFFIC &&
opensm/osm_torus.c +12 -3
@@ -9048,17 +9048,26 @@ int route_torus(struct torus *t) }uint8_t torus_path_sl (void *context,uint8_t path_sl_hint, -const osm_port_t *osm_sport,const uint16_t slid, -const osm_port_t *osm_dport,const uint16_t dlid) +const ib_net16_t slid,const ib_net16_t dlid) {struct torus_context *ctx = context; -osm_log_t *log = &ctx->osm->log; +osm_opensm_t *p_osm = ctx->osm; +osm_log_t *log = &p_osm->log; +osm_port_t *osm_sport, *osm_dport;struct endpoint *sport, *dport;struct t_switch *ssw, *dsw;struct torus *t;guid_t guid;unsigned sl =0 ; + osm_sport =osm_get_port_by_lid (&p_osm->subn, slid); +if (!osm_sport) + goto out; + + osm_dport =osm_get_port_by_lid (&p_osm->subn, dlid); +if (!osm_dport) + goto out; + sport = osm_sport->priv;if (!(sport && sport->osm_port == osm_sport)) { sport =osm_port_relink_endpoint (osm_sport);
opensm/osm_ucast_dfsssp.c +11 -2
@@ -2059,10 +2059,11 @@ static int dfsssp_do_dijkstra_routing(void *context)the virtual lane respectively for a <s,d> pair */ static uint8_t get_dfsssp_sl (void *context,uint8_t hint_for_default_sl, -const osm_port_t * src_port,const uint16_t slid, -const osm_port_t * dest_port,const uint16_t dlid) +const ib_net16_t slid,const ib_net16_t dlid) {dfsssp_context_t *dfsssp_ctx = (dfsssp_context_t *) context; +osm_ucast_mgr_t *p_mgr = (osm_ucast_mgr_t *) dfsssp_ctx->p_mgr; +osm_port_t *src_port, *dest_port;vltable_t *srcdest2vl_table =NULL ;int32_t res =0 ;
@@ -2072,6 +2073,14 @@ static uint8_t get_dfsssp_sl(void *context, uint8_t hint_for_default_sl,else return hint_for_default_sl; + src_port =osm_get_port_by_lid (p_mgr->p_subn, slid); +if (!src_port) +return hint_for_default_sl; + + dest_port =osm_get_port_by_lid (p_mgr->p_subn, dlid); +if (!dest_port) +return hint_for_default_sl; +if (!srcdest2vl_table)return hint_for_default_sl;
opensm/osm_ucast_lash.c +11 -2
@@ -1277,19 +1277,28 @@ static void lash_delete(void *context) }static uint8_t get_lash_sl (void *context,uint8_t path_sl_hint, -const osm_port_t *p_src_port,const uint16_t slid, -const osm_port_t *p_dst_port,const uint16_t dlid) +const ib_net16_t slid,const ib_net16_t dlid) {unsigned dst_id;unsigned src_id; +osm_port_t *p_src_port, *p_dst_port;osm_switch_t *p_sw;lash_t *p_lash = context;osm_opensm_t *p_osm = p_lash->p_osm; +if (!(p_osm->routing_engine_used && p_osm->routing_engine_used->type ==OSM_ROUTING_ENGINE_TYPE_LASH ))return OSM_DEFAULT_SL ; + p_src_port =osm_get_port_by_lid (&p_osm->subn, slid); +if (!p_src_port) +return OSM_DEFAULT_SL ; + + p_dst_port =osm_get_port_by_lid (&p_osm->subn, dlid); +if (!p_dst_port) +return OSM_DEFAULT_SL ; + p_sw =get_osm_switch_from_port (p_dst_port);if (!p_sw || !p_sw->priv)return OSM_DEFAULT_SL ;
Signature · 10 lines
1.7.7.6 -- -- Alex -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html