[ofa-general] Re: OpenSM handling of defunct SMs
Sasha Khapyorsky
sashak at voltaire.com
Mon Nov 17 22:04:38 PST 2008
Hi Hal,
On 10:59 Mon 17 Nov , Hal Rosenstock wrote:
>
> 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 ?
It looks like a bug.
>
> 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);
Yes, I guess it should be something like this. Would you care about the
patch?
Sasha
More information about the general
mailing list