All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jim Schutt" <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
To: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
Cc: "linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v3 01/17] opensm: Prepare for routing engine input to path record SL lookup and SL2VL map setup.
Date: Wed, 7 Jul 2010 11:57:40 -0600	[thread overview]
Message-ID: <1278525460.4812.22.camel@sale659.sandia.gov> (raw)
In-Reply-To: <20100707170630.GN22860@me>

Hi Sasha:

On Wed, 2010-07-07 at 11:06 -0600, Sasha Khapyorsky wrote:
> Hi Jim,
> 
> On 13:53 Tue 15 Jun     , Jim Schutt wrote:
> > diff --git a/opensm/opensm/osm_opensm.c b/opensm/opensm/osm_opensm.c
> > index d3dc02e..5614240 100644
> > --- a/opensm/opensm/osm_opensm.c
> > +++ b/opensm/opensm/osm_opensm.c
> > @@ -147,7 +147,8 @@ static void append_routing_engine(osm_opensm_t *osm,
> >  	r->next = routing_engine;
> >  }
> >  
> > -static void setup_routing_engine(osm_opensm_t *osm, const char *name)
> > +static struct osm_routing_engine *setup_routing_engine(osm_opensm_t *osm,
> > +						       const char *name)
> >  {
> >  	struct osm_routing_engine *re;
> >  	const struct routing_engine_module *m;
> > @@ -158,47 +159,53 @@ static void setup_routing_engine(osm_opensm_t *osm, const char *name)
> >  			if (!re) {
> >  				OSM_LOG(&osm->log, OSM_LOG_VERBOSE,
> >  					"memory allocation failed\n");
> > -				return;
> > +				return NULL;
> >  			}
> >  			memset(re, 0, sizeof(struct osm_routing_engine));
> >  
> >  			re->name = m->name;
> > +			re->type = osm_routing_engine_type(m->name);
> >  			if (m->setup(re, osm)) {
> >  				OSM_LOG(&osm->log, OSM_LOG_VERBOSE,
> >  					"setup of routing"
> >  					" engine \'%s\' failed\n", name);
> > -				return;
> > +				free(re);
> > +				return NULL;
> >  			}
> >  			OSM_LOG(&osm->log, OSM_LOG_DEBUG,
> >  				"\'%s\' routing engine set up\n", re->name);
> > -			append_routing_engine(osm, re);
> > -			return;
> > +			if (re->type == OSM_ROUTING_ENGINE_TYPE_MINHOP)
> > +				osm->default_routing_engine = re;
> > +			return re;
> >  		}
> >  	}
> >  
> >  	OSM_LOG(&osm->log, OSM_LOG_ERROR,
> >  		"cannot find or setup routing engine \'%s\'\n", name);
> > +	return NULL;
> >  }
> >  
> >  static void setup_routing_engines(osm_opensm_t *osm, const char *engine_names)
> >  {
> >  	char *name, *str, *p;
> > +	struct osm_routing_engine *re;
> >  
> > -	if (!engine_names || !*engine_names) {
> > -		setup_routing_engine(osm, "minhop");
> > -		return;
> > +	if (engine_names && *engine_names) {
> > +		str = strdup(engine_names);
> > +		name = strtok_r(str, ", \t\n", &p);
> > +		while (name && *name) {
> > +			re = setup_routing_engine(osm, name);
> > +			if (re)
> > +				append_routing_engine(osm, re);
> > +			name = strtok_r(NULL, ", \t\n", &p);
> > +		}
> > +		free(str);
> >  	}
> > -
> > -	str = strdup(engine_names);
> > -	name = strtok_r(str, ", \t\n", &p);
> > -	while (name && *name) {
> > -		setup_routing_engine(osm, name);
> > -		name = strtok_r(NULL, ", \t\n", &p);
> > +	if (!osm->default_routing_engine) {
> > +		re = setup_routing_engine(osm, "minhop");
> > +		if (!osm->routing_engine_list && re)
> > +			append_routing_engine(osm, re);
> 
> Shouldn't here be:
> 
> 		osm->default_routing_engine = re;
> 
> too?

I think above call to setup_routing_engine(osm, "minhop")
does that, because we're explicitly calling it for minhop?

But now that I look at this again, I'm confused why I
thought I needed to append a minhop routing engine to
the routing engine list when the list was empty and there 
was no default routing engine.

I was trying to exactly duplicate old functionality, where
minhop is only in the routing engine list if explicitly
configured, but always called if no routing engines are
configured or all configured engines fail.
   
So I think the end of the above chunk only needs to be

-
-	str = strdup(engine_names);
-	name = strtok_r(str, ", \t\n", &p);
-	while (name && *name) {
-		setup_routing_engine(osm, name);
-		name = strtok_r(NULL, ", \t\n", &p);
- 	}
+	if (!osm->default_routing_engine)
+		setup_routing_engine(osm, "minhop");

-- Jim

> 
> 
> >  	}
> > -	free(str);
> > -
> > -	if (!osm->routing_engine_list)
> > -		setup_routing_engine(osm, "minhop");
> >  }
> >  
> >  void osm_opensm_construct(IN osm_opensm_t * p_osm)
> 
> 
> So that this chunk in osm_ucast_mgr_process() (below) will not break
> over NULL pointer?
> 
> > -	if (p_osm->routing_engine_used == OSM_ROUTING_ENGINE_TYPE_NONE) {
> > +	if (!p_osm->routing_engine_used) {
> >  		/* If configured routing algorithm failed, use default MinHop */
> > -		osm_ucast_mgr_build_lid_matrices(p_mgr);
> > -		ucast_mgr_build_lfts(p_mgr);
> > +		struct osm_routing_engine *r = p_osm->default_routing_engine;
> > +
> > +		r->build_lid_matrices(r->context);
> > +		r->ucast_build_fwd_tables(r->context);
> > +		p_osm->routing_engine_used = r;
> >  		osm_ucast_mgr_set_fwd_tables(p_mgr);
> > -		p_osm->routing_engine_used = OSM_ROUTING_ENGINE_TYPE_MINHOP;
> >  	}
> 
> Sasha
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2010-07-07 17:57 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-15 19:53 [PATCH v3 00/17] opensm: Add new torus routing engine: torus-2QoS Jim Schutt
     [not found] ` <1276631604-29230-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-06-15 19:53   ` [PATCH v3 01/17] opensm: Prepare for routing engine input to path record SL lookup and SL2VL map setup Jim Schutt
     [not found]     ` <1276631604-29230-2-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-07-07 17:06       ` Sasha Khapyorsky
2010-07-07 17:57         ` Jim Schutt [this message]
     [not found]           ` <1278525460.4812.22.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
2010-07-07 21:03             ` Sasha Khapyorsky
2010-06-15 19:53   ` [PATCH v3 02/17] opensm: Allow the routing engine to influence SL2VL calculations Jim Schutt
2010-06-15 19:53   ` [PATCH v3 03/17] opensm: Allow the routing engine to participate in path SL calculations Jim Schutt
     [not found]     ` <1276631604-29230-4-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-07-13 18:36       ` Sasha Khapyorsky
2010-07-13 20:12         ` Jim Schutt
2010-06-15 19:53   ` [PATCH v3 04/17] opensm: Track the minimum value in the fabric of data VLs supported Jim Schutt
2010-06-15 19:53   ` [PATCH v3 05/17] opensm: Add struct osm_routing_engine callback to build spanning trees for multicast Jim Schutt
2010-06-15 19:53   ` [PATCH v3 06/17] opensm: Make mcast_mgr_purge_tree() available outside osm_mcast_mgr.c Jim Schutt
2010-06-15 19:53   ` [PATCH v3 07/17] opensm: Add torus-2QoS routing engine, part 1 Jim Schutt
2010-06-15 19:53   ` [PATCH v3 09/17] opensm: Add torus-2QoS routing engine, part 3 Jim Schutt
2010-06-15 19:53   ` [PATCH v3 10/17] opensm: Update documentation to describe torus-2QoS Jim Schutt
2010-06-15 19:53   ` [PATCH v3 11/17] opensm: Enable torus-2QoS routing engine Jim Schutt
2010-06-15 19:53   ` [PATCH v3 12/17] opensm: Add opensm option to specify file name for extra torus-2QoS configuration information Jim Schutt
2010-06-15 19:53   ` [PATCH v3 13/17] opensm: Do not require -Q option for torus-2QoS routing engine Jim Schutt
2010-06-15 19:53   ` [PATCH v3 14/17] opensm: Make it possible to configure no fallback " Jim Schutt
2010-06-15 19:53   ` [PATCH v3 15/17] opensm: Avoid havoc in minhop caused by torus-2QoS persistent use of osm_port_t:priv Jim Schutt
2010-06-15 19:53   ` [PATCH v3 16/17] opensm: Avoid havoc in dump_ucast_routes() " Jim Schutt
2010-06-15 19:53   ` [PATCH v3 17/17] opensm: Cause status of unicast routing attempt to propogate to callers of osm_ucast_mgr_process() Jim Schutt
2010-06-16 14:11   ` [PATCH v3 08/17] opensm: Add new torus routing engine: torus-2QoS, part 2 Jim Schutt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1278525460.4812.22.camel@sale659.sandia.gov \
    --to=jaschut-4ohpyypu0djtx7qsmkvirg@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.