<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2912" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>Hi
Fab,</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=947182214-07082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>While doing some
tests on SDP and iperf which involved 5 simultaneous connections, I have found
out that there is a problem that might cause connections to fail from time to
time.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=947182214-07082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>It seems that the
problem was caused because the function ipoib_mac_to_gid was not always
returning the dest GID.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>It seems that the
problem is caused in the function __recv_arp. The main problem is that when a
new end point is accepted, we try to check that the end point that we have is
still valid. The comment says:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006> /*<BR> *
If the endpoint exists for the GID, make sure<BR> * the dlid and qpn match
the arp.<BR> */<BR>and later in the code we check the src_hw.gid and dlid
and the qp number. My problem starts from the fact that if this is only arp that
is done the dlid will be 0 (we take it from the callback of the query path
record) and therefore the endpoint is removed. A few lines later such an end
point is created, and inserted again, however there is a time window that such
an entry doesn't exist (and therfore there is no answer to the query).
</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=947182214-07082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>I have tried to
replace the check:</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=947182214-07082006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006> else if(
(((*pp_src)->dlid != p_wc->recv.ud.remote_lid)
||<BR> (*pp_src)->qpn != p_wc->recv.ud.remote_qp)
)<BR></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=947182214-07082006>with
</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN
class=947182214-07082006></SPAN></FONT> </DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial
size=2> else if( (((*pp_src)->dlid !=
p_wc->recv.ud.remote_lid) && <FONT
color=#ff0000>((*pp_src)->dlid != 0)</FONT>
||<BR> (*pp_src)->qpn != p_wc->recv.ud.remote_qp)
)</FONT></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial size=2>and it seems
to solve my problem. Please note that the exact endpoint will be created only a
few lines bellow.</FONT></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial
size=2></FONT></SPAN></FONT> </DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial size=2>So, do you see
any problem with the solution proposed? </FONT></SPAN></FONT><FONT><SPAN
class=947182214-07082006><FONT face=Arial size=2></FONT></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial
size=2>Thanks</FONT></SPAN></FONT></DIV>
<DIV><FONT><SPAN class=947182214-07082006><FONT face=Arial size=2>Tzachi</DIV>
<DIV><BR></DIV></FONT></SPAN></FONT></BODY></HTML>