src_port and dst_oprt are redundant.
Signed-off-by: Alex Netes <[email protected]>
Signed-off-by: Jens Domke <[email protected]>
Signed-off-by: Hal Rosenstock <[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(-)
diff --git a/include/opensm/osm_opensm.h b/include/opensm/osm_opensm.h
index b3b7353..9f2c2fa 100644
--- a/include/opensm/osm_opensm.h
+++ b/include/opensm/osm_opensm.h
@@ -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);
diff --git a/opensm/osm_link_mgr.c b/opensm/osm_link_mgr.c
index 276dce2..a901023 100644
--- a/opensm/osm_link_mgr.c
+++ b/opensm/osm_link_mgr.c
@@ -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;
diff --git a/opensm/osm_sa_path_record.c b/opensm/osm_sa_path_record.c
index fc3b7ab..0e2dae2 100644
--- a/opensm/osm_sa_path_record.c
+++ b/opensm/osm_sa_path_record.c
@@ -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 &&
diff --git a/opensm/osm_torus.c b/opensm/osm_torus.c
index 366adad..94b978a 100644
--- a/opensm/osm_torus.c
+++ b/opensm/osm_torus.c
@@ -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);
diff --git a/opensm/osm_ucast_dfsssp.c b/opensm/osm_ucast_dfsssp.c
index d91ea40..e4cf017 100644
--- a/opensm/osm_ucast_dfsssp.c
+++ b/opensm/osm_ucast_dfsssp.c
@@ -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;
diff --git a/opensm/osm_ucast_lash.c b/opensm/osm_ucast_lash.c
index 77bdba7..648c42e 100644
--- a/opensm/osm_ucast_lash.c
+++ b/opensm/osm_ucast_lash.c
@@ -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;
--
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