<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>RE: IB Diagnositic Tools</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Hi Fabian</FONT>
</P>

<P><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> I think this is a decent idea.  My only reservations are that it would require</FONT>
<BR><FONT SIZE=2>> everyone to learn the OSM Vendor Layer API.  It might also not allow testing</FONT>
<BR><FONT SIZE=2>> nuances in the access layer APIs, which might be useful.</FONT>
<BR><FONT SIZE=2>[EZ] This is true. But the API is simple. The MAD flow API is:</FONT>
<BR><FONT SIZE=2>bind - to get a handle for sending mads of specific class and registering callbacks</FONT>
<BR><FONT SIZE=2>send - to send a mad</FONT>
<BR><FONT SIZE=2>get_mad - to get a mad buffer</FONT>
<BR><FONT SIZE=2>put_mad - to return it to the driver</FONT>
</P>

<P><FONT SIZE=2>The rest can be found in the OpenSM repository under osm_vendor_api.h</FONT>
</P>

<P><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> So I think it would be useful to have the test run over each low level MAD API,</FONT>
<BR><FONT SIZE=2>> as well as to the OSM Vendor Layer.  I'm a bit weary of adding extra layers</FONT>
<BR><FONT SIZE=2>> between the tests and the access layer - it just creates more areas where things</FONT>
<BR><FONT SIZE=2>> can go wrong.  That said, I'm not dead set on this and could be convinced</FONT>
<BR><FONT SIZE=2>> otherwise, but I just don't know enough about the OSM Vendor Layer at the moment</FONT>
<BR><FONT SIZE=2>> and don't have many cycles to learn it.</FONT>
<BR><FONT SIZE=2>[EZ] I agree. Code testing should be done in all layers. But writing cluster debug tools is easier with a higher abstraction layer (callbacks vs. polling or blocking reads).</FONT></P>

<P><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> By system names, you mean node descriptions?</FONT>
<BR><FONT SIZE=2>[EZ] If the user provide a file describing the topology in terms of systems then the code uses the names provided in the file in its reports.</FONT></P>

<P><FONT SIZE=2>For example: Assuming you have a cluster built of a 288port switch and 288 HCAs.</FONT>
<BR><FONT SIZE=2>The topology description could then be:</FONT>
<BR><FONT SIZE=2>IBSW288 mySwitch</FONT>
<BR><FONT SIZE=2>   Leaf1/P1 -> HCA Rack1-Node1 P1</FONT>
<BR><FONT SIZE=2>   Leaf1/P2 -> HCA Rack1-Node2 P1</FONT>
<BR><FONT SIZE=2>   ...</FONT>
<BR><FONT SIZE=2>   Leaf1/P12 -> HCA Rack2-Node3 P1</FONT>
<BR><FONT SIZE=2>   Leaf2/P1 ->   HCA anyNameYouWant P2</FONT>
<BR><FONT SIZE=2>   ....</FONT>
</P>

<P><FONT SIZE=2>Then any error report can be provided in these names like:</FONT>
<BR><FONT SIZE=2>Error with cable from mySwitch/Leaf2/P1 to anyNameYouWant/P1</FONT>
</P>
<BR>

</BODY>
</HTML>