<!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>