[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