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.
_______________________________________________
openib-general mailing list
[EMAIL PROTECTED]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to