[openib-general] Questions about SMI

Hal Rosenstock
Tue Oct 12 10:39:07 PDT 2004


On Tue, 2004-10-12 at 13:20, Roland Dreier wrote:
> I'm reading over the SMI implementation, and I have a few questions.
> 
> First of all, I don't see how LID-routed SMPs or PMA MADs are handled
> correctly.  As far as I can tell, what ends up happening for a LR-SMP
> or PMA query is:
> 
>   smi_recv_handler() gets MAD and just calls
>     smi_recv_smp(), which will call
>       smi_handle_smp_recv() which just returns 1
>     so smi_recv_smp() goes on to call
>       smi_check_forward_smp(), which just returns 1
>     so smi_recv_smp() calls smi_send_smp()
> 
> etc.
> 
> Am I wrong or is this completely b0rken?

No, it's not broken (of course depending on one's definition) and yes,
this can be bypassed and is on my TODO list. I have been focusing more
on functionality right now.

> Also, it seems very confusing that PMA queries end up going through
> functions named "smi_recv_handler()" and so on (since they are using
> GSI, not SMI).  

Understand the evolution of the code. It started with just being DR SMP
and evolved to support LR SMP and then PerfMgt. I will change the
routine names and code flow so it is more intuitive.

> In the same vein, having port_priv->mad_agent and
> port_priv->mad_agent2 is less than enlightening; it would make more
> sense to use either more descriptive names or an array of agents.

OK.

> Finally, what's the plan for handling device-specific things like
> Tavor-generated MADs (to recap: when Tavor needs to send a trap to the
> SM, the trap shows up as a receive on the local QP0 with source LID 0;
> this MAD needs to be forwarded to the SM)?

How important is this ? Things seem to run fine without it right now as
far as I can tell.

In any case, I can make this the next item on my list (putting the code
restructure and renaming as well as more SMI work below this in
priority). I should be able to start on this later today or early
tomorrow.

-- Hal



More information about the openib-general mailing list