[openib-general] [PATCH] agent: Fix agent_mad_send PCI mapping and gather address and length

Roland Dreier roland at topspin.com
Tue Nov 9 20:55:46 PST 2004


    Roland> OK, I think I understand the problem, but I'm not sure
    Roland> what the correct solution is.  When a DR SMP arrives at a
    Roland> CA from the SM, hop_cnt == hop_ptr == number of hops in
    Roland> the directed route,

    Hal> What was the number ?

For one port it was 4 and for another it was 6.  It could really be
anything (it's just how many hops away the SM is).

    Hal> I integrated this patch and checked it back in. I don't think
    Hal> this is the solution for all cases (and something else is
    Hal> broken).

Could be.  I had a hard time checking the code in smi.c (which is
split between smi_handle_dr_smp_recv() and smi_handle_dr_smp_send() as
well as smi_check_forward_dr_smp(), but which has outgoing and
returning DR handling mixed together) against the IB spec (which
splits outgoing and returning DR handling).

    Hal> The second call to smi_handle_dr_smp_recv was to validate the
    Hal> DR in the response packet before sending it. The response
    Hal> would be a returning DR packet (D bit 1). If hop_cnt ==
    Hal> hop_ptr,

I guess the problem with calling smi_handle_dr_smp_recv() twice on the
same packet is that the function may alter the packet.

 - R.



More information about the general mailing list