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