<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:v = 
"urn:schemas-microsoft-com:vml"><HEAD><!--[if !mso]>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<STYLE>v\:* {
        BEHAVIOR: url(#default#VML)
}
o\:* {
        BEHAVIOR: url(#default#VML)
}
w\:* {
        BEHAVIOR: url(#default#VML)
}
.shape {
        BEHAVIOR: url(#default#VML)
}
</STYLE>
<![endif]-->
<STYLE>@font-face {
        font-family: Tahoma;
}
@page Section1 {size: 612.0pt 792.0pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.EmailStyle17 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal-reply
}
DIV.Section1 {
        page: Section1
}
</STYLE>

<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY lang=EN-US vLink=blue link=blue>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff size=2>1) How 
do you force your servers to use IGMP v2?</FONT></SPAN></DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff size=2>2) 
Will your method interop with Linux as well? I'm looking in the spec to find a 
much between ipv4 multicast addresses and IB multicast GID but with no 
success.</FONT></SPAN></DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff size=2>In any 
case, even if there is no enforcement in the spec, I'm afraid that if they are 
using different mgids than things won't work.</FONT></SPAN></DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff 
size=2>Thanks</FONT></SPAN></DIV>
<DIV><SPAN class=567542709-04112008><FONT face=Arial color=#0000ff 
size=2>Tzachi</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> Slava Strebkov 
  [mailto:slavas@voltaire.com] <BR><B>Sent:</B> Tuesday, November 04, 2008 11:12 
  AM<BR><B>To:</B> Tzachi Dar; ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: 
  Problem on multicast flow<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV class=Section1>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Hi,<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">The attached test was 
  compiled and run on server 2003 x64 and server 2008 
  x86.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I used IPoIB without 
  your patch, as is.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I got at the end 
  <o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Pass percentage: 
  100.000000 on both sides, which mean no problem (Am I 
  right?).<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">We changed 
  <o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">  mcast_req.member_rec.mgid.raw[12] 
  = mac.addr[1];<BR>instead of<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">mcast_req.member_rec.mgid.raw[12] 
  = 0;<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">to avoid different IP to be mapped 
  onto same mac.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Using igmpv3 is not recommended 
  since IB join is always made on 224.0.0.22, but not to actual mcast group 
  (e.g. 239.0.0.2).<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In our tests we force the servers 
  to use igmp v2.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Please check same test with igmp 
  v2 on both sides.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Slava<o:p></o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
  <DIV>
  <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
  face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
  <HR tabIndex=-1 align=center width="100%" SIZE=3>
  </SPAN></FONT></DIV>
  <P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
  face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> Tzachi 
  Dar [mailto:tzachid@mellanox.co.il] <BR><B><SPAN 
  style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, November 03, 2008 7:20 
  PM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> 
  ofw@lists.openfabrics.org; Slava Strebkov<BR><B><SPAN 
  style="FONT-WEIGHT: bold">Subject:</SPAN></B> FW: Problem on multicast 
  flow</SPAN></FONT><o:p></o:p></P></DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
  <DIV>
  <P class=MsoNormal><FONT face=Arial color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial">Resending without the 
  executables attached (due to antivirus 
  enforcement)</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial">Any one who wants the 
  executables please call me directly.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial">Thanks</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial color=blue size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial">Tzachi</SPAN></FONT><o:p></o:p></P></DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
  <DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT 
  face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
  <HR tabIndex=-1 align=center width="100%" SIZE=3>
  </SPAN></FONT></DIV>
  <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><B><FONT face=Tahoma 
  size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT 
  face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> Tzachi 
  Dar <BR><B><SPAN style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, November 
  03, 2008 7:16 PM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> 
  ofw@lists.openfabrics.org; 'slavas@voltaire.com'<BR><B><SPAN 
  style="FONT-WEIGHT: bold">Subject:</SPAN></B> Problem on multicast 
  flow</SPAN></FONT><o:p></o:p></P>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hi Voltaire and anyone who can 
  help !</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">On the last day we have been 
  working on a problem of a simple multicast test that doesn't 
  work.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Test is attached at the end of the 
  mail.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">This test has used to work in the 
  past but not any more.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Looking at the current state of 
  things, it seems that changes that were done on chekin 
  1450</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">are the root of the 
  problem.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">It seems that the mechanism that 
  maps Mac addresses and ip addresses into IB multicast was 
  broken.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">This was done when 
  ipoib_port_join_mcast has changed from:</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">  mcast_req.member_rec.mgid.raw[12] 
  <FONT color=red><SPAN style="COLOR: red">= 
  0;//mac.addr[1];<BR></SPAN></FONT>  mcast_req.member_rec.mgid.raw[13] 
  = mac.addr[3];<BR>  mcast_req.member_rec.mgid.raw[14] = 
  mac.addr[4];<BR>  mcast_req.member_rec.mgid.raw[15] = 
  mac.addr[5];</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">to 
  <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">  mcast_req.member_rec.mgid.raw[12] 
  = mac.addr[1];<BR>  mcast_req.member_rec.mgid.raw[13] = 
  mac.addr[3];<BR>  mcast_req.member_rec.mgid.raw[14] = 
  mac.addr[4];<BR>  mcast_req.member_rec.mgid.raw[15] = 
  mac.addr[5];</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">It seems that now mac_addr[1] is 
  not always 0 as it used to be. Instead this data is being taken from the ip 
  addresses.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">More than that, it seems that on 
  the function ipoib_refresh_mcast the lines </SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">   if ( ( 
  p_mac_array[i].addr[0] == 1 && p_mac_array[i].addr[1] == 0 && 
  p_mac_array[i].addr[2] == 0x5e 
  &&<BR>       p_mac_array[i].addr[3] == 0 
  && p_mac_array[i].addr[4] == 0 && p_mac_array[i].addr[5] == 1 
  ) ||<BR>      !( p_mac_array[i].addr[0] == 1 
  && p_mac_array[i].addr[1] == 0 && p_mac_array[i].addr[2] == 
  0x5e )</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">that were added actually means 
  that for normal multicast addresses (starting with 01-00-5e) no multicast 
  group will be created.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The attached patch, fixes my 
  specific test, but might cause problems to other scenarios. It is not a fix, 
  but rather trying to show the problem more 
  clearly.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">A few more interesting 
  points:</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">1) IP multicast addresses are 
  wider than Mac addresses. We need to decide what encoding we want to use. see 
  <A 
  href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/intwork/inaf_mul_wrfn.mspx?mfr=true">http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/intwork/inaf_mul_wrfn.mspx?mfr=true</A> for 
  example.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Please note that it might be that 
  some ip multicast address will have to share the same Mac 
  addresses.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">2) On the same machine when 
  running on Broadcom cards IGMP<FONT color=red><SPAN style="COLOR: red"> 
  v2</SPAN></FONT> is used. On ipoib cards IGMP <FONT color=red><SPAN 
  style="COLOR: red">v3</SPAN></FONT> is used</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">To run the 
  test:</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">reciver: mcastrcv.exe 11.4.12.85 
  19007 239.0.0.2 25 406 99</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">sender: mcastsnd.exe 11.4.12.86 
  19007 239.0.0.2 25 406 100</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Please replace the ip 11.4.12.85/6 
  with the local IPOIB addreses.</SPAN></FONT><o:p></o:p></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN 
  style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
  <DIV>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Index: 
  ipoib_adapter.c<BR>===================================================================<BR>--- 
  ipoib_adapter.c (revision 3408)<BR>+++ ipoib_adapter.c (working 
  copy)<BR>@@ -817,6 +817,18 @@<BR>  uint8_t    i, 
  j;<BR>  ipoib_port_t  *p_port = 
  NULL;<BR> <BR>+    for (i=0; i< num_macs; i++) 
  {<BR>+        DbgPrint("entry %d, mac = 
  %d-%d-%d-%d-%d-%d\n", i, 
  <BR>+            
  p_mac_array[i].addr[0],<BR>+            
  p_mac_array[i].addr[1],<BR>+            
  p_mac_array[i].addr[2],<BR>+            
  p_mac_array[i].addr[3],<BR>+            
  p_mac_array[i].addr[4],<BR>+            
  p_mac_array[i].addr[5]<BR>+        
  );<BR>+    }<BR>+<BR>+<BR>  IPOIB_ENTER( 
  IPOIB_DBG_MCAST );<BR>  cl_obj_lock( &p_adapter->obj 
  );<BR>  if( p_adapter->state == IB_PNP_PORT_ACTIVE )<BR>@@ 
  -859,11 +871,15 @@<BR> <BR>    if( j != 
  p_adapter->mcast_array_size 
  )<BR>     continue;<BR>+/*<BR>    if 
  ( ( p_mac_array[i].addr[0] == 1 && p_mac_array[i].addr[1] == 0 
  && p_mac_array[i].addr[2] == 0x5e 
  &&<BR>        
  p_mac_array[i].addr[3] == 0 && p_mac_array[i].addr[4] == 0 && 
  p_mac_array[i].addr[5] == 1 ) ||<BR>       !( 
  p_mac_array[i].addr[0] == 1 && p_mac_array[i].addr[1] == 0 && 
  p_mac_array[i].addr[2] == 0x5e 
  )<BR>-    )<BR>+    )*/<BR>+    <BR>    {<BR>+ IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,("\n"));<BR>+   <BR>     ipoib_port_join_mcast( 
  p_port, p_mac_array[i], IB_MC_REC_STATE_FULL_MEMBER 
  );<BR>    }<BR>   }<BR>@@ -877,6 +893,8 
  @@<BR>  if( p_port )<BR>   ipoib_port_deref( p_port, 
  ref_refresh_mcast );<BR> <BR>+DbgPrint("ipoib_refresh_mcast 
  exiting\n");<BR>+<BR>  IPOIB_EXIT( IPOIB_DBG_MCAST 
  );<BR> }<BR> <BR>@@ -1109,6 +1127,7 @@<BR>   /* Join 
  all programmed multicast groups. */<BR>   for( i = 0; i < 
  p_adapter->mcast_array_size; i++ 
  )<BR>   {<BR>+   IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,("\n"));<BR>    ipoib_port_join_mcast(<BR>     p_adapter->p_port, 
  p_adapter->mcast_array[i] 
  ,IB_MC_REC_STATE_FULL_MEMBER);<BR>   }<BR>Index: 
  ipoib_driver.c<BR>===================================================================<BR>--- 
  ipoib_driver.c (revision 3408)<BR>+++ ipoib_driver.c (working 
  copy)<BR>@@ -1731,24 +1731,25 @@<BR> <BR>  /* Required Ethernet 
  operational characteristics */<BR>  case 
  OID_802_3_MULTICAST_LIST:<BR>+        
  DbgPrint("OID_802_3_MULTICAST_LIST 
  called\n");<BR>   IPOIB_PRINT(TRACE_LEVEL_INFORMATION, 
  IPOIB_DBG_OID,<BR>    ("Port %d received set for 
  OID_802_3_MULTICAST_LIST\n", port_num) );<BR>   if( 
  info_buf_len > MAX_MCAST * sizeof(mac_addr_t) 
  )<BR>   {<BR>-   IPOIB_PRINT( 
  TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,<BR>+   IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,<BR>     ("Port %d 
  OID_802_3_MULTICAST_LIST - Multicast list full.\n", port_num) 
  );<BR>    status = 
  NDIS_STATUS_MULTICAST_FULL;<BR>    *p_bytes_needed = 
  MAX_MCAST * 
  sizeof(mac_addr_t);<BR>   }<BR>   else if( 
  info_buf_len % sizeof(mac_addr_t) 
  )<BR>   {<BR>-   IPOIB_PRINT( 
  TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,<BR>+   IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,<BR>     ("Port %d 
  OID_802_3_MULTICAST_LIST - Invalid input buffer.\n", port_num) 
  );<BR>    status = 
  NDIS_STATUS_INVALID_DATA;<BR>   }<BR>   else if( 
  !info_buf && info_buf_len 
  )<BR>   {<BR>-   IPOIB_PRINT( 
  TRACE_LEVEL_INFORMATION,IPOIB_DBG_OID,<BR>+   IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,<BR>     ("Port %d 
  OID_802_3_MULTICAST_LIST - Invalid input buffer.\n", port_num) 
  );<BR>    status = 
  NDIS_STATUS_INVALID_DATA;<BR>   }<BR>Index: 
  ipoib_port.c<BR>===================================================================<BR>--- 
  ipoib_port.c (revision 3411)<BR>+++ ipoib_port.c (working 
  copy)<BR>@@ -3243,7 +3243,7 @@<BR> <BR>  IPOIB_ENTER( 
  IPOIB_DBG_SEND );<BR> <BR>- IPOIB_PRINT( TRACE_LEVEL_INFORMATION, 
  IPOIB_DBG_MCAST,<BR>+ IPOIB_PRINT( TRACE_LEVEL_ERROR, 
  IPOIB_DBG_MCAST,<BR>     ("buf_len = %d,iph_options_size = 
  %d\n",(int)buf_len,(int)iph_options_size ) );<BR> <BR>  if( 
  !buf_len )<BR>@@ -3265,6 +3265,7 
  @@<BR>      ("Failed to query IGMPv2 header 
  buffer.\n") );<BR>     return 
  NDIS_STATUS_FAILURE;<BR>    }<BR>+   CL_ASSERT(iph_options_size 
  >= 
  buf_len);<BR>    iph_options_size-=buf_len;<BR>   }<BR>         
  <BR>@@ -3312,8 +3313,10 @@<BR>    Change type of mcast 
  endpt to SEND_RECV endpt. So mcast garbage collector 
  <BR>    will not delete this mcast 
  endpt.<BR>   */<BR>-  IPOIB_PRINT( 
  TRACE_LEVEL_INFORMATION, IPOIB_DBG_MCAST,<BR>-   ("Catched 
  IGMP_V2_MEMBERSHIP_REPORT message\n") );<BR>+  IPOIB_PRINT( 
  TRACE_LEVEL_ERROR, IPOIB_DBG_MCAST,<BR>+   ("Catched 
  IGMP_V2_MEMBERSHIP_REPORT message fake_addr = 
  %d-%d-%d-%d-%d-%d\n",<BR>+   fake_mcast_mac.addr[0], 
  fake_mcast_mac.addr[1], 
  fake_mcast_mac.addr[2],<BR>+   fake_mcast_mac.addr[3], 
  fake_mcast_mac.addr[4], fake_mcast_mac.addr[5]) 
  );<BR>   endpt_status = __endpt_mgr_ref( p_port, 
  fake_mcast_mac, &p_endpt );<BR>   if ( p_endpt 
  )<BR>   {<BR>@@ -3347,7 +3350,7 
  @@<BR>   break;<BR> <BR>  default:<BR>-  IPOIB_PRINT( 
  TRACE_LEVEL_INFORMATION, IPOIB_DBG_MCAST,<BR>+  IPOIB_PRINT( 
  TRACE_LEVEL_ERROR, 
  IPOIB_DBG_MCAST,<BR>         ("Send 
  Unknown IGMP message: 0x%x \n", p_igmp_v2_hdr->type ) 
  );<BR>   break;<BR>  }<BR>@@ -3815,6 +3818,7 
  @@<BR>  if( status == NDIS_STATUS_NO_ROUTE_TO_DESTINATION 
  &&<BR>   ETH_IS_MULTICAST( p_eth_hdr->dst.addr ) 
  )<BR>  {<BR>+  IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,("\n"));<BR>   if( 
  ipoib_port_join_mcast( p_port, p_eth_hdr->dst, 
  <BR>    IB_MC_REC_STATE_FULL_MEMBER) == IB_SUCCESS 
  )<BR>   {<BR>@@ -4248,6 +4252,7 
  @@<BR> <BR>    if( ETH_IS_MULTICAST( 
  p_eth_hdr->dst.addr ) 
  )<BR>    {<BR>+    IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,("\n"));<BR>     if( 
  ipoib_port_join_mcast( p_port, 
  p_eth_hdr->dst,<BR>      IB_MC_REC_STATE_FULL_MEMBER) 
  == IB_SUCCESS )<BR>     {<BR>@@ -5894,6 +5899,12 
  @@<BR> <BR>  IPOIB_ENTER( IPOIB_DBG_MCAST 
  );<BR> <BR>+ IPOIB_PRINT( 
  TRACE_LEVEL_ERROR,IPOIB_DBG_OID,<BR>+  ("ipoib_port_join_mcast 
  called MAC %d-%d-%d-%d-%d-%d \n", <BR>+  mac.addr[0], mac.addr[1], 
  mac.addr[2], <BR>+  mac.addr[3], mac.addr[4], mac.addr[5] ) 
  );<BR>+<BR>+<BR>  switch( __endpt_mgr_ref( p_port, mac, &p_endpt 
  ) )<BR>  {<BR>  case 
  NDIS_STATUS_NO_ROUTE_TO_DESTINATION:<BR>@@ -5929,7 +5940,8 
  @@<BR>    * 24 lower bits of that network-byte-ordered value 
  (assuming MSb<BR>    * is zero) and 4 lsb bits of the first 
  byte of IP address.<BR>    
  */<BR>-  mcast_req.member_rec.mgid.raw[12] = 
  mac.addr[1];<BR>+CL_ASSERT(mac.addr[1] == 0 || mac.addr[1] == 
  128);<BR>+  mcast_req.member_rec.mgid.raw[12] = 
  0;//mac.addr[1];<BR>   mcast_req.member_rec.mgid.raw[13] = 
  mac.addr[3];<BR>   mcast_req.member_rec.mgid.raw[14] = 
  mac.addr[4];<BR>   mcast_req.member_rec.mgid.raw[15] = 
  mac.addr[5];<o:p></o:p></SPAN></FONT></P></DIV></DIV></BLOCKQUOTE></BODY></HTML>