From: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
To: Hal Rosenstock <hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Eli Dorfman <elid-smomgflXvOZWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH] opensm/osm_qos.c: split switch external and end ports setup
Date: Tue, 12 Jan 2010 12:43:58 +0200 [thread overview]
Message-ID: <20100112104358.GJ26089@me> (raw)
In-Reply-To: <f0e08f231001070540y26b69cb3v82dddc1d7b7134b9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On 08:40 Thu 07 Jan , Hal Rosenstock wrote:
> On Tue, Jan 5, 2010 at 6:10 AM, Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org> wrote:
> >
> > This splits QoS related port parameters setup over switch external ports
> > and end ports. Such separation leaves us with simpler code and saves
> > some repeated flows in case of switch external ports (actually required
> > per switch and not per port).
>
> Not sure what you mean by required in this statement. What are you
> referring to as required per switch rather than per port ?
Duplicated per switch external port setup detection of common (per
switch) data - such as: number of ports, Sl2VL mapping capability
p0->port_info.capability_mask.
>
> > Another advantages: Optimized Sl2VL Mapping procedure can be implemented
> > easier using this model. A low level port QoS related parameters setup
> > infrastructure is ready for supporting per port QoS related configuration
> > (which hopefully will be implemented some days).
> >
> > Signed-off-by: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
> > ---
> > opensm/opensm/osm_qos.c | 137 +++++++++++++++++++++--------------------------
> > 1 files changed, 61 insertions(+), 76 deletions(-)
> >
> > diff --git a/opensm/opensm/osm_qos.c b/opensm/opensm/osm_qos.c
> > index afeaa11..f54e995 100644
> > --- a/opensm/opensm/osm_qos.c
> > +++ b/opensm/opensm/osm_qos.c
> > @@ -77,6 +77,7 @@ static ib_api_status_t vlarb_update_table_block(osm_sm_t * sm,
> > osm_madw_context_t context;
> > uint32_t attr_mod;
> > unsigned vl_mask, i;
> > + ib_api_status_t status;
> >
> > vl_mask = (1 << (ib_port_info_get_op_vls(&p->port_info) - 1)) - 1;
> >
> > @@ -96,10 +97,17 @@ static ib_api_status_t vlarb_update_table_block(osm_sm_t * sm,
> > context.vla_context.set_method = TRUE;
> > attr_mod = ((block_num + 1) << 16) | port_num;
> >
> > - return osm_req_set(sm, osm_physp_get_dr_path_ptr(p),
> > - (uint8_t *) & block, sizeof(block),
> > - IB_MAD_ATTR_VL_ARBITRATION, cl_hton32(attr_mod),
> > - CL_DISP_MSGID_NONE, &context);
> > + status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p),
> > + (uint8_t *) & block, sizeof(block),
> > + IB_MAD_ATTR_VL_ARBITRATION, cl_hton32(attr_mod),
> > + CL_DISP_MSGID_NONE, &context);
> > + if (status != IB_SUCCESS)
> > + OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 6202 : "
> > + "failed to update VLArbitration tables "
> > + "for port %" PRIx64 " block %u\n",
> > + cl_ntoh64(p->port_guid), block_num);
> > +
> > + return status;
> > }
> >
> > static ib_api_status_t vlarb_update(osm_sm_t * sm, osm_physp_t * p,
> > @@ -157,6 +165,7 @@ static ib_api_status_t sl2vl_update_table(osm_sm_t * sm, osm_physp_t * p,
> > ib_slvl_table_t tbl, *p_tbl;
> > osm_node_t *p_node = osm_physp_get_node_ptr(p);
> > uint32_t attr_mod;
> > + ib_api_status_t status;
> > unsigned vl_mask;
> > uint8_t vl1, vl2;
> > int i;
> > @@ -181,70 +190,65 @@ static ib_api_status_t sl2vl_update_table(osm_sm_t * sm, osm_physp_t * p,
> > context.slvl_context.port_guid = osm_physp_get_port_guid(p);
> > context.slvl_context.set_method = TRUE;
> > attr_mod = in_port << 8 | out_port;
> > - return osm_req_set(sm, osm_physp_get_dr_path_ptr(p),
> > - (uint8_t *) & tbl, sizeof(tbl),
> > - IB_MAD_ATTR_SLVL_TABLE, cl_hton32(attr_mod),
> > - CL_DISP_MSGID_NONE, &context);
> > + status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p),
> > + (uint8_t *) & tbl, sizeof(tbl),
> > + IB_MAD_ATTR_SLVL_TABLE, cl_hton32(attr_mod),
> > + CL_DISP_MSGID_NONE, &context);
> > + if (status != IB_SUCCESS)
> > + OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 6203 : "
> > + "failed to update SL2VLMapping tables "
> > + "for port %" PRIx64 "i, attr_mod 0x%x\n",
> > + cl_ntoh64(p->port_guid), attr_mod);
> > + return status;
> > }
> >
> > -static ib_api_status_t sl2vl_update(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_extports_setup(osm_sm_t * sm, osm_node_t *node,
> > + const struct qos_config *qcfg)
> > {
> > - ib_api_status_t status;
> > - uint8_t i, num_ports;
> > - ib_port_info_t *pi = &p_port->p_physp->port_info;
> > -
> > - if (!(pi->capability_mask & IB_PORT_CAP_HAS_SL_MAP))
> > - return IB_SUCCESS;
> > + osm_physp_t *p0, *p;
> > + unsigned force_update;
> > + unsigned num_ports = osm_node_get_num_physp(node);
> > + int ret = 0;
> > + unsigned i, j;
> >
> > - if (osm_node_get_type(osm_physp_get_node_ptr(p)) == IB_NODE_TYPE_SWITCH)
> > - num_ports = osm_node_get_num_physp(osm_physp_get_node_ptr(p));
> > - else
> > - num_ports = 1;
> > + for (i = 1; i < num_ports; i++) {
> > + p = osm_node_get_physp_ptr(node, i);
> > + force_update = p->need_update || sm->p_subn->need_update;
> > + p->vl_high_limit = qcfg->vl_high_limit;
> > + if (vlarb_update(sm, p, p->port_num, force_update, qcfg))
> > + ret = -1;
> > + }
> >
> > - for (i = 0; i < num_ports; i++) {
> > - status = sl2vl_update_table(sm, p, i, port_num, force_update,
> > - &qcfg->sl2vl);
> > - if (status != IB_SUCCESS)
> > - return status;
> > + p0 = osm_node_get_physp_ptr(node, 0);
> > + if (!(p0->port_info.capability_mask & IB_PORT_CAP_HAS_SL_MAP))
> > + return ret;
>
> Same comment on this as previous osm_qos patch comment on merging the
> SL2VL mapping capability check.
I answered there.
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
next prev parent reply other threads:[~2010-01-12 10:43 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-01 19:41 [PATCHv3] opensm: Add support for optimized SLtoVLMappingTable programming Hal Rosenstock
[not found] ` <20091201194110.GA26753-Wuw85uim5zDR7s880joybQ@public.gmane.org>
2009-12-29 15:05 ` [PATCH] opensm/osm_slvl_map_rcv.c: fix port parsing on BE machine Sasha Khapyorsky
2009-12-29 15:07 ` [PATCH] opensm/osm_slvl_map_rcv.c: verify port number values received from network Sasha Khapyorsky
2009-12-30 16:09 ` Hal Rosenstock
[not found] ` <f0e08f230912300809l7c794daat9490c64a2cf63525-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-12-30 16:27 ` Sasha Khapyorsky
2009-12-30 16:56 ` Hal Rosenstock
[not found] ` <f0e08f230912300856v188d5900u9d82c94f5f9ae4a6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-12-30 19:43 ` Sasha Khapyorsky
2009-12-31 14:48 ` Hal Rosenstock
[not found] ` <f0e08f230912310648m4b03b9bdq92394a61866f0e26-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-03 17:02 ` Sasha Khapyorsky
2010-01-04 19:12 ` Hal Rosenstock
[not found] ` <f0e08f231001041112k4cb7742bwb5ae7cade8704082-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-04 20:03 ` Sasha Khapyorsky
2010-01-04 19:31 ` Hal Rosenstock
2009-12-29 15:06 ` [PATCH] opensm/osm_slvl_map_rcv.c: fix mutex double release bug Sasha Khapyorsky
2009-12-29 16:29 ` [PATCHv3] opensm: Add support for optimized SLtoVLMappingTable programming Sasha Khapyorsky
2009-12-30 16:08 ` Hal Rosenstock
2010-01-04 17:01 ` [PATCH] opensm/osm_qos.c: merge SL2VL mapping capability check Sasha Khapyorsky
2010-01-05 11:10 ` [PATCH] opensm/osm_qos.c: split switch external and end ports setup Sasha Khapyorsky
2010-01-07 13:40 ` Hal Rosenstock
[not found] ` <f0e08f231001070540y26b69cb3v82dddc1d7b7134b9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-12 10:43 ` Sasha Khapyorsky [this message]
2010-01-13 20:15 ` Hal Rosenstock
2010-01-07 13:38 ` [PATCH] opensm/osm_qos.c: merge SL2VL mapping capability check Hal Rosenstock
[not found] ` <f0e08f231001070538q78453f91kd47c931087dfa735-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-12 10:35 ` Sasha Khapyorsky
2010-01-13 20:13 ` Hal Rosenstock
[not found] ` <f0e08f231001131213r4a743d6boc1b07e9fadc773ac-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-16 20:27 ` Sasha Khapyorsky
2010-01-23 12:25 ` Hal Rosenstock
[not found] ` <f0e08f231001230425j28ced479if608a75bb4216186-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-25 15:20 ` Sasha Khapyorsky
2010-01-25 20:19 ` Hal Rosenstock
2010-01-05 11:18 ` [PATCHv3] opensm: Add support for optimized SLtoVLMappingTable programming Sasha Khapyorsky
2010-01-05 11:23 ` Sasha Khapyorsky
2010-01-07 13:35 ` Hal Rosenstock
[not found] ` <f0e08f231001070535l382f1d54t7f6290607e52b196-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-12 10:55 ` Sasha Khapyorsky
2010-01-13 20:14 ` Hal Rosenstock
[not found] ` <f0e08f231001131214w790b1f34s46cbbda8b6454ac3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-16 20:33 ` Sasha Khapyorsky
2010-01-23 12:26 ` Hal Rosenstock
[not found] ` <f0e08f231001230426t2e48aa58pbcb2d3f1323c6e56-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-25 17:41 ` Sasha Khapyorsky
2010-01-07 13:34 ` Hal Rosenstock
2010-01-06 19:13 ` Sasha Khapyorsky
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=20100112104358.GJ26089@me \
--to=sashak-smomgflxvozwk0htik3j/w@public.gmane.org \
--cc=elid-smomgflXvOZWk0Htik3J/w@public.gmane.org \
--cc=hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox