<div dir="ltr"><div>Hi again Miljen,</div><div><br></div><div>No; there is no such API which is why sleep approach was chosen for this in mckey.</div><div><br></div><div>-- Hal<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 31, 2017 at 8:40 AM, Miljen Mikić <span dir="ltr"><<a href="mailto:miljen.mikic@mireo.hr" target="_blank">miljen.mikic@mireo.hr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="HR" vlink="purple" link="blue"><div class="m_1994312873760111286WordSection1"><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt">Hi Hal,<u></u><u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt">thanks for your answer!<u></u><u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt">I understand that we cannot determine for sure how much time would it take to refresh the state, that's why my goal is to avoid any sleep(<SOME NUMBER OF SECONDS>) call in the code while keeping fingers crossed. Is there any API function that could inform us that multicast group is ready, e.g. some event that we could listen on?<u></u><u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt">Best regards,<u></u><u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt">Miljen Mikic<u></u><u></u></span></p><p class="MsoNormal"><span style="color:rgb(31,73,125);font-family:"Calibri",sans-serif;font-size:11pt"><u></u> <u></u></span></p><p class="MsoNormal"><b><span lang="EN-US" style="font-family:"Calibri",sans-serif;font-size:11pt">From:</span></b><span lang="EN-US" style="font-family:"Calibri",sans-serif;font-size:11pt"> Hal Rosenstock [mailto:<a href="mailto:hal.rosenstock@gmail.com" target="_blank">hal.rosenstock@gmail.<wbr>com</a>] <br><b>Sent:</b> Friday, March 31, 2017 2:16 PM<br><b>To:</b> Miljen Mikić <<a href="mailto:miljen.mikic@mireo.hr" target="_blank">miljen.mikic@mireo.hr</a>><br><b>Cc:</b> <a href="mailto:users@lists.openfabrics.org" target="_blank">users@lists.openfabrics.org</a><br><b>Subject:</b> Re: [Users] Librdmacm - mckey<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">Hi,<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">In order to setup the multicast group tree (for mckey), SM must first route the MC tree and then program MulticastForwardingTables of switches that tree passes through. The amount of time depends on the topology (how many switches in subnet), processor speed of SM machine, and lastly delivering the modified forwarding tables to the IB switches involved in that multicast tree. This time is non deterministic.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><div><p class="MsoNormal">IB multicast is inherently unreliable as it is based on UD transport. Are you looking for reliable multicast mechanism for IB or is it just the startup issue that's important for your application ?<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">-- Hal<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">On Fri, Mar 31, 2017 at 6:47 AM, Miljen Mikić <<a href="mailto:miljen.mikic@mireo.hr" target="_blank">miljen.mikic@mireo.hr</a>> wrote:<u></u><u></u></p><blockquote style="border-width:medium medium medium 1pt;border-style:none none none solid;border-color:currentColor currentColor currentColor rgb(204,204,204);padding:0cm 0cm 0cm 6pt;margin-right:0cm;margin-left:4.8pt"><div><div><p class="MsoNormal">Hello,<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I went through the source code of mckey utility (available e.g. here: <a href="https://github.com/ofiwg/librdmacm/blob/master/examples/mckey.c" target="_blank">https://github.com/ofiwg/<wbr>librdmacm/blob/master/<wbr>examples/mckey.c</a> ). There is an interesting comment at the line 524:<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">/*<u></u><u></u></p><p class="MsoNormal">  *  Pause to give SM chance to configure switches. We don't want to<u></u><u></u></p><p class="MsoNormal"> *  handle reliability issue in this simple test program.<u></u><u></u></p><p class="MsoNormal">  */<u></u><u></u></p><p class="MsoNormal">  sleep(3);<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">If we remove sleep function call, mckey does not work properly anymore (receiver side does not get all messages that were sent). Does anyone know how long does it take for SM to „configure switches“, and what is the proper way to „handle reliability issue“?<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Many thanks in advance.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">Best regards,<u></u><u></u></p><p class="MsoNormal">Miljen Mikic<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p></div></div><p class="MsoNormal" style="margin-bottom:12pt"><br>______________________________<wbr>_________________<br>Users mailing list<br><a href="mailto:Users@lists.openfabrics.org" target="_blank">Users@lists.openfabrics.org</a><br><a href="http://lists.openfabrics.org/mailman/listinfo/users" target="_blank">http://lists.openfabrics.org/<wbr>mailman/listinfo/users</a><u></u><u></u></p></blockquote></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div></blockquote></div><br></div>