[ofa-general] OpenSM handling of defunct SMs
Hal Rosenstock
hal.rosenstock at gmail.com
Mon Nov 17 07:59:13 PST 2008
Sasha,
What I observe is that OpenSM 3.2.2 continues to poll/retry SMInfo for
a now defunct SM which spams the OpenSM log.
It looks like SMs are removed from the sm_guid_tbl only when the port
is dropped/removed. Shouldn't it also be removed subsequent to a trap
144 which is indicating that the capability mask changed (and the new
capability no longer include IsSM) ? I don't see this anywhere in the
code. Am I missing something ?
If so, should osm_port_info_rcv.c:__osm_pi_rcv_process_endport remove
these so rather than:
p_sm_tbl = &sm->p_subn->sm_guid_tbl;
p_sm = (osm_remote_sm_t *) cl_qmap_get(p_sm_tbl, port_guid);
if (p_sm != (osm_remote_sm_t *) cl_qmap_end(p_sm_tbl))
/* clean it up */
p_sm->smi.pri_state = 0xF0 & p_sm->smi.pri_state;
if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
it should be something like:
p_sm_tbl = &sm->p_subn->sm_guid_tbl;
if (p_pi->capability_mask & IB_PORT_CAP_IS_SM) {
p_sm = (osm_remote_sm_t *) cl_qmap_get(p_sm_tbl, port_guid);
if (p_sm != (osm_remote_sm_t *) cl_qmap_end(p_sm_tbl))
/* clean it up */
p_sm->smi.pri_state = 0xF0 & p_sm->smi.pri_state;
...
} else
p_sm = (osm_remote_sm_t *)
cl_qmap_remove(p_sm_tbl, port_guid);
-- Hal
More information about the general
mailing list