<br>Hi Stan,<br><div class="gmail_quote">On Mon, Sep 26, 2011 at 12:39 PM, Leonid Keller <span dir="ltr"><<a href="mailto:leonid@mellanox.co.il">leonid@mellanox.co.il</a>></span> wrote:<br><blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
<div lang="EN-US" vlink="purple" link="blue">
<div>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">They were to be taken there.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Hal knows better.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">I’ve taken them several days before they went upstream.</span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);"></span> </p></div></div></blockquote>
<div> </div><div>I don't think this is the complete list of patches; I'm pretty sure some are missing from this list.</div><div> </div><div>Aren't you porting from the released tarball for OpenSM 3.3.11 ? If so, that's better IMO.</div>
<div> </div><div>-- Hal</div><div> </div><blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote"><div lang="EN-US" vlink="purple" link="blue">
<div><p class="MsoNormal"><span style="color: rgb(31, 73, 125);"></span> </p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><u></u> <u></u></span></p>
<div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; border-color: currentColor currentColor currentColor blue; padding: 0in 0in 0in 4pt;">
<div>
<div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentColor currentColor; padding: 3pt 0in 0in;">
<p class="MsoNormal"><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> Smith, Stan [mailto:<a href="mailto:stan.smith@intel.com" target="_blank">stan.smith@intel.com</a>]
<br>
<b>Sent:</b> Monday, September 26, 2011 7:08 PM<br>
<b>To:</b> Leonid Keller<br>
<b>Cc:</b> ofw_list<br>
<b>Subject:</b> RE: opensm patches<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Thank you Leo.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Am I correct in understanding these patches are all in OpenSM 3.3.11 release?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Are there additional FDR related patches elsewhere in the OFED for Windows stack?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Stan.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"><u></u> <u></u></span></p>
<div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; border-color: currentColor currentColor currentColor blue; padding: 0in 0in 0in 4pt;">
<div>
<div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentColor currentColor; padding: 3pt 0in 0in;">
<p class="MsoNormal"><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> Leonid Keller [mailto:<a href="mailto:leonid@mellanox.co.il" target="_blank">leonid@mellanox.co.il</a>]
<br>
<b>Sent:</b> Monday, September 26, 2011 1:22 AM<br>
<b>To:</b> Smith, Stan<br>
<b>Cc:</b> ofw_list<br>
<b>Subject:</b> FDR: opensm patches<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hi Stan,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I did porting of FDR-related opensm patches yet before they went upstream.<u></u><u></u></p>
<p class="MsoNormal">I thought, maybe you will find it interesting to look at them.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">==================================================================================================<u></u><u></u></p>
<p class="MsoNormal">Opensm FDR-related patches, done on base of the following:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">[OPENSM] FDR: Changes for FDR and FDR10 support<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">commit 480de4ae8e75b7cc6fd19f1235b8c7ed974843c0<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Wed Jul 13 19:37:01 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm: Use forward extensible and safer way to compare mkey_lmc field in PortInfo attribute<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Rather than memcmp'ing the entire field, compare the two fields ignoring the<u></u><u></u></p>
<p class="MsoNormal"> reserved field (which may some day be used). This makes SMs coded this<u></u><u></u></p>
<p class="MsoNormal"> way better handle such a future spec expansion.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> This change also gets this code closer to supporting M_KeyProtectBits.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit f999195c2b80a89d70c20295bd876db253ba771c<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Mon Jul 18 07:45:28 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OpenSM: Add infrastructure for "full" SM PortInfo and SA PortInfoRecord attributes<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> to accomodate IBA extended link speeds<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Also, some other cosmetic changes (formatting, etc.)<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit b8c7632fe0c8be2467bc3063610e528f8bc4daf6<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Tue Jul 26 08:31:13 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_[lid pkey]_mgr.c: Remove no longer needed memset<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> at the end of PortInfo as PortInfo now takes up the full size of SMP data<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit 2f32ea8526e7c14216341011be1501dcf94bdab7<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Tue Jul 26 11:23:51 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_sa_mcmember_record.c: Proper rate comparison and selection<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit 45111c29b93b14effbb024e5c72b0c163dfcfbb5<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Tue Jul 26 11:23:46 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_sa_path_record.c: Proper rate comparison and selection<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit e26fe06a942dc92de9471b110d2d8475ae3b2c2f<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Tue Jul 26 12:24:47 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_sa_multipath_record.c: Proper rate comparison and selection<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">commit f427600259f3c7b3ba6518b4ecadd5201e1b0fda<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Thu Jul 28 09:59:10 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_sa_class_port_info.c: Minor simplification to setting CapabilityMask2<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit cc7ff0751ff23ca6e7c9dc5f261c1fb865ca2c15<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Fri Jul 29 08:36:47 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm/osm_helper: Add rate related routines<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> for proper comparison and selector operation<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Rate enum was never is ascending order of actual underlying rates<u></u><u></u></p>
<p class="MsoNormal"> but even worse with newly added extended link speeds.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">commit a33a8af18c502cfb1162f4b36735a474dbc276c2<u></u><u></u></p>
<p class="MsoNormal">Author: Hal Rosenstock <<a href="mailto:hal@dev.mellanox.co.il" target="_blank">hal@dev.mellanox.co.il</a>><u></u><u></u></p>
<p class="MsoNormal">Date: Tue Aug 9 10:30:45 2011 -0400<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> opensm: Add extended link speeds support<u></u><u></u></p>
<p class="MsoNormal">==================================================================================
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_subnet.h<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_subnet.h (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_subnet.h (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -158,6 +158,7 @@<u></u><u></u></p>
<p class="MsoNormal"> boolean_t lmc_esp0;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t max_op_vls;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t force_link_speed;<u></u><u></u></p>
<p class="MsoNormal">+ uint8_t force_link_speed_ext;<u></u><u></u></p>
<p class="MsoNormal"> boolean_t reassign_lids;<u></u><u></u></p>
<p class="MsoNormal"> boolean_t ignore_other_sm;<u></u><u></u></p>
<p class="MsoNormal"> boolean_t single_thread;<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_helper.h<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_helper.h (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_helper.h (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 HNR Consulting. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal">@@ -493,7 +493,7 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> const char *osm_get_lwa_str(IN uint8_t lwa);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">-const char *osm_get_lsa_str(IN uint8_t lsa);<u></u><u></u></p>
<p class="MsoNormal">+const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /****f* IBA Base: Types/osm_get_sm_mgr_signal_str<u></u><u></u></p>
<p class="MsoNormal"> * NAME<u></u><u></u></p>
<p class="MsoNormal">@@ -541,5 +541,85 @@<u></u><u></u></p>
<p class="MsoNormal"> * SEE ALSO<u></u><u></u></p>
<p class="MsoNormal"> *********/<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+/****f* IBA Base: Types/ib_path_compare_rates<u></u><u></u></p>
<p class="MsoNormal">+* NAME<u></u><u></u></p>
<p class="MsoNormal">+* ib_path_compare_rates<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* DESCRIPTION<u></u><u></u></p>
<p class="MsoNormal">+* Compares the encoded values for two path rates and<u></u><u></u></p>
<p class="MsoNormal">+* return value is based on the ordered comparison of<u></u><u></u></p>
<p class="MsoNormal">+* the path rates (or path rate equivalents).<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SYNOPSIS<u></u><u></u></p>
<p class="MsoNormal">+*/<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_compare_rates(IN const int rate1, IN const int rate2);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/*<u></u><u></u></p>
<p class="MsoNormal">+* PARAMETERS<u></u><u></u></p>
<p class="MsoNormal">+* rate1<u></u><u></u></p>
<p class="MsoNormal">+* [in] Encoded path rate 1.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* rate2<u></u><u></u></p>
<p class="MsoNormal">+* [in] Encoded path rate 2.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* RETURN VALUES<u></u><u></u></p>
<p class="MsoNormal">+* Returns an int indicating less than (-1), equal to (0), or<u></u><u></u></p>
<p class="MsoNormal">+* greater than (1) rate1 as compared with rate2.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* NOTES<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SEE ALSO<u></u><u></u></p>
<p class="MsoNormal">+*********/<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/****f* IBA Base: Types/ib_path_rate_get_prev<u></u><u></u></p>
<p class="MsoNormal">+* NAME<u></u><u></u></p>
<p class="MsoNormal">+* ib_path_rate_get_prev<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* DESCRIPTION<u></u><u></u></p>
<p class="MsoNormal">+* Obtains encoded rate for the rate previous to the one requested.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SYNOPSIS<u></u><u></u></p>
<p class="MsoNormal">+*/<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_rate_get_prev(IN const int rate);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/*<u></u><u></u></p>
<p class="MsoNormal">+* PARAMETERS<u></u><u></u></p>
<p class="MsoNormal">+* rate<u></u><u></u></p>
<p class="MsoNormal">+* [in] Encoded path rate.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* RETURN VALUES<u></u><u></u></p>
<p class="MsoNormal">+* Returns an int indicating encoded rate or<u></u><u></u></p>
<p class="MsoNormal">+* 0 if none can be found.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* NOTES<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SEE ALSO<u></u><u></u></p>
<p class="MsoNormal">+*********/<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/****f* IBA Base: Types/ib_path_rate_get_next<u></u><u></u></p>
<p class="MsoNormal">+* NAME<u></u><u></u></p>
<p class="MsoNormal">+* ib_path_rate_get_next<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* DESCRIPTION<u></u><u></u></p>
<p class="MsoNormal">+* Obtains encoded rate for the rate subsequent to the one requested.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SYNOPSIS<u></u><u></u></p>
<p class="MsoNormal">+*/<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_rate_get_next(IN const int rate);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/*<u></u><u></u></p>
<p class="MsoNormal">+* PARAMETERS<u></u><u></u></p>
<p class="MsoNormal">+* rate<u></u><u></u></p>
<p class="MsoNormal">+* [in] Encoded path rate.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* RETURN VALUES<u></u><u></u></p>
<p class="MsoNormal">+* Returns an int indicating encoded rate or<u></u><u></u></p>
<p class="MsoNormal">+* 0 if none can be found.<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* NOTES<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SEE ALSO<u></u><u></u></p>
<p class="MsoNormal">+*********/<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> END_C_DECLS<u></u><u></u></p>
<p class="MsoNormal"> #endif /* _OSM_HELPER_H_ */<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_base.h<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_base.h (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/include/opensm/osm_base.h (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -806,6 +806,30 @@<u></u><u></u></p>
<p class="MsoNormal"> #define OSM_CAP2_IS_HIERARCHY_SUPPORTED (1 << 4)<u></u><u></u></p>
<p class="MsoNormal"> /***********/<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+/****d* OpenSM: Base/OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED<u></u><u></u></p>
<p class="MsoNormal">+* Name<u></u><u></u></p>
<p class="MsoNormal">+* OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* DESCRIPTION<u></u><u></u></p>
<p class="MsoNormal">+* Full PortInfoRecords supported<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SYNOPSIS<u></u><u></u></p>
<p class="MsoNormal">+*/<u></u><u></u></p>
<p class="MsoNormal">+#define OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED (1 << 6)<u></u><u></u></p>
<p class="MsoNormal">+/***********/<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+/****d* OpenSM: Base/OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED<u></u><u></u></p>
<p class="MsoNormal">+* Name<u></u><u></u></p>
<p class="MsoNormal">+* OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* DESCRIPTION<u></u><u></u></p>
<p class="MsoNormal">+* Extended Link Speeds supported<u></u><u></u></p>
<p class="MsoNormal">+*<u></u><u></u></p>
<p class="MsoNormal">+* SYNOPSIS<u></u><u></u></p>
<p class="MsoNormal">+*/<u></u><u></u></p>
<p class="MsoNormal">+#define OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED (1 << 7)<u></u><u></u></p>
<p class="MsoNormal">+/***********/<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> /****d* OpenSM: Base/osm_signal_t<u></u><u></u></p>
<p class="MsoNormal"> * NAME<u></u><u></u></p>
<p class="MsoNormal"> * osm_signal_t<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/libopensm/osm_helper.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/libopensm/osm_helper.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/libopensm/osm_helper.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -632,10 +632,10 @@<u></u><u></u></p>
<p class="MsoNormal"> "IB_PORT_CAP_RESV13\n", &total_len ) != IB_SUCCESS )<u></u><u></u></p>
<p class="MsoNormal"> return;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">- if( p_pi->capability_mask & IB_PORT_CAP_RESV14 )<u></u><u></u></p>
<p class="MsoNormal">+ if( p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS )<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal"> if( osm_dbg_do_line( &p_local, buf_size, p_prefix_str,<u></u><u></u></p>
<p class="MsoNormal">- "IB_PORT_CAP_RESV14\n", &total_len ) != IB_SUCCESS )<u></u><u></u></p>
<p class="MsoNormal">+ "IB_PORT_CAP_HAS_EXT_SPEEDS\n", &total_len ) != IB_SUCCESS )<u></u><u></u></p>
<p class="MsoNormal"> return;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> if( p_pi->capability_mask & IB_PORT_CAP_RESV15 )<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_multipath_record.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_multipath_record.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_multipath_record.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2006-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal"> * This software is available to you under a choice of one of two<u></u><u></u></p>
<p class="MsoNormal">@@ -156,11 +156,11 @@<u></u><u></u></p>
<p class="MsoNormal"> OUT osm_path_parms_t * p_parms)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal"> const osm_node_t *p_node;<u></u><u></u></p>
<p class="MsoNormal">- const osm_physp_t *p_physp;<u></u><u></u></p>
<p class="MsoNormal">+ const osm_physp_t *p_physp, *p_physp0;<u></u><u></u></p>
<p class="MsoNormal"> const osm_physp_t *p_src_physp;<u></u><u></u></p>
<p class="MsoNormal"> const osm_physp_t *p_dest_physp;<u></u><u></u></p>
<p class="MsoNormal"> const osm_prtn_t *p_prtn = NULL;<u></u><u></u></p>
<p class="MsoNormal">- const ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal">+ const ib_port_info_t *p_pi, *p_pi0;<u></u><u></u></p>
<p class="MsoNormal"> ib_slvl_table_t *p_slvl_tbl;<u></u><u></u></p>
<p class="MsoNormal"> ib_api_status_t status = IB_SUCCESS;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t mtu;<u></u><u></u></p>
<p class="MsoNormal">@@ -188,7 +188,8 @@<u></u><u></u></p>
<p class="MsoNormal"> p_pi = &p_physp->port_info;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> Mellanox Tavor device performance is better using 1K MTU.<u></u><u></u></p>
<p class="MsoNormal">@@ -360,8 +361,12 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr((osm_node_t *)p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0 = &p_physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> Continue with the egress port on this switch.<u></u><u></u></p>
<p class="MsoNormal">@@ -383,8 +388,12 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr((osm_node_t *)p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0 = &p_physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (sa->p_subn->opt.qos) {<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal">@@ -416,8 +425,10 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(sa->p_log, OSM_LOG_DEBUG,<u></u><u></u></p>
<p class="MsoNormal"> "Path min MTU = %u, min rate = %u\n", mtu, rate);<u></u><u></u></p>
<p class="MsoNormal">@@ -442,7 +453,7 @@<u></u><u></u></p>
<p class="MsoNormal"> mtu = p_qos_level->mtu_limit;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (p_qos_level->rate_limit_set<u></u><u></u></p>
<p class="MsoNormal">- && (rate > p_qos_level->rate_limit))<u></u><u></u></p>
<p class="MsoNormal">+ && (ib_path_compare_rates(rate, p_qos_level->rate_limit) > 0))<u></u><u></u></p>
<p class="MsoNormal"> rate = p_qos_level->rate_limit;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (p_qos_level->sl_set) {<u></u><u></u></p>
<p class="MsoNormal">@@ -506,23 +517,22 @@<u></u><u></u></p>
<p class="MsoNormal"> required_rate = ib_multipath_rec_rate(p_mpr);<u></u><u></u></p>
<p class="MsoNormal"> switch (ib_multipath_rec_rate_sel(p_mpr)) {<u></u><u></u></p>
<p class="MsoNormal"> case 0: /* must be greater than */<u></u><u></u></p>
<p class="MsoNormal">- if (rate <= required_rate)<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate) <= 0)<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> case 1: /* must be less than */<u></u><u></u></p>
<p class="MsoNormal">- if (rate >= required_rate) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate) >= 0) {<u></u><u></u></p>
<p class="MsoNormal"> /* adjust the rate to use the highest rate<u></u><u></u></p>
<p class="MsoNormal"> lower then the required one */<u></u><u></u></p>
<p class="MsoNormal">- if (required_rate > 2)<u></u><u></u></p>
<p class="MsoNormal">- rate = required_rate - 1;<u></u><u></u></p>
<p class="MsoNormal">- else<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_path_rate_get_prev(required_rate);<u></u><u></u></p>
<p class="MsoNormal">+ if (!rate)<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> case 2: /* exact match */<u></u><u></u></p>
<p class="MsoNormal">- if (rate < required_rate)<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate))<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> else<u></u><u></u></p>
<p class="MsoNormal"> rate = required_rate;<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_subnet.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_subnet.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_subnet.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2008 Xsigo Systems Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 System Fabric Works, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">@@ -309,6 +309,7 @@<u></u><u></u></p>
<p class="MsoNormal"> { "lmc_esp0", OPT_OFFSET(lmc_esp0), opts_parse_boolean, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal"> { "max_op_vls", OPT_OFFSET(max_op_vls), opts_parse_uint8, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal"> { "force_link_speed", OPT_OFFSET(force_link_speed), opts_parse_uint8, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal">+ { "force_link_speed_ext", OPT_OFFSET(force_link_speed_ext), opts_parse_uint8, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal"> { "reassign_lids", OPT_OFFSET(reassign_lids), opts_parse_boolean, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal"> { "ignore_other_sm", OPT_OFFSET(ignore_other_sm), opts_parse_boolean, NULL, 1 },<u></u><u></u></p>
<p class="MsoNormal"> { "single_thread", OPT_OFFSET(single_thread), opts_parse_boolean, NULL, 0 },<u></u><u></u></p>
<p class="MsoNormal">@@ -686,6 +687,7 @@<u></u><u></u></p>
<p class="MsoNormal"> p_opt->lmc_esp0 = FALSE;<u></u><u></u></p>
<p class="MsoNormal"> p_opt->max_op_vls = OSM_DEFAULT_MAX_OP_VLS;<u></u><u></u></p>
<p class="MsoNormal"> p_opt->force_link_speed = 15;<u></u><u></u></p>
<p class="MsoNormal">+ p_opt->force_link_speed_ext = 31;<u></u><u></u></p>
<p class="MsoNormal"> p_opt->reassign_lids = FALSE;<u></u><u></u></p>
<p class="MsoNormal"> p_opt->ignore_other_sm = FALSE;<u></u><u></u></p>
<p class="MsoNormal"> p_opt->single_thread = FALSE;<u></u><u></u></p>
<p class="MsoNormal">@@ -1070,6 +1072,14 @@<u></u><u></u></p>
<p class="MsoNormal"> p_opts->force_link_speed = IB_PORT_LINK_SPEED_ENABLED_MASK;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ if ((31 < p_opts->force_link_speed_ext) ||<u></u><u></u></p>
<p class="MsoNormal">+ (p_opts->force_link_speed_ext > 3 && p_opts->force_link_speed_ext < 30)) {<u></u><u></u></p>
<p class="MsoNormal">+ log_report(" Invalid Cached Option Value:force_link_speed_ext = %u:"<u></u><u></u></p>
<p class="MsoNormal">+ "Using Default:%u\n", p_opts->force_link_speed_ext,<u></u><u></u></p>
<p class="MsoNormal">+ 31);<u></u><u></u></p>
<p class="MsoNormal">+ p_opts->force_link_speed_ext = 31;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> if (p_opts->max_wire_smps == 0)<u></u><u></u></p>
<p class="MsoNormal"> p_opts->max_wire_smps = 0x7FFFFFFF;<u></u><u></u></p>
<p class="MsoNormal"> else if (p_opts->max_wire_smps > 0x7FFFFFFF) {<u></u><u></u></p>
<p class="MsoNormal">@@ -1320,6 +1330,16 @@<u></u><u></u></p>
<p class="MsoNormal"> "# 2,4,6,8-14 Reserved\n"<u></u><u></u></p>
<p class="MsoNormal"> "# Default 15: set to PortInfo:LinkSpeedSupported\n"<u></u><u></u></p>
<p class="MsoNormal"> "force_link_speed %u\n\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# Force PortInfo:LinkSpeedExtEnabled on ports\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# If 0, don't modify PortInfo:LinkSpeedExtEnabled on port\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# Otherwise, use value for PortInfo:LinkSpeedExtEnabled on port\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# Values are (MgtWG RefID #4722)\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# 1: 14.0625 Gbps\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# 2: 25.78125 Gbps\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# 3: 14.0625 Gbps or 25.78125 Gbps\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# 30: Disable extended link speeds\n"<u></u><u></u></p>
<p class="MsoNormal">+ "# Default 31: set to PortInfo:LinkSpeedExtSupported\n"<u></u><u></u></p>
<p class="MsoNormal">+ "force_link_speed_ext %u\n\n"<u></u><u></u></p>
<p class="MsoNormal"> "# The subnet_timeout code that will be set for all the ports\n"<u></u><u></u></p>
<p class="MsoNormal"> "# The actual timeout is 4.096usec * 2^<subnet_timeout>\n"<u></u><u></u></p>
<p class="MsoNormal"> "subnet_timeout %u\n\n"<u></u><u></u></p>
<p class="MsoNormal">@@ -1343,6 +1363,7 @@<u></u><u></u></p>
<p class="MsoNormal"> p_opts->leaf_head_of_queue_lifetime,<u></u><u></u></p>
<p class="MsoNormal"> p_opts->max_op_vls,<u></u><u></u></p>
<p class="MsoNormal"> p_opts->force_link_speed,<u></u><u></u></p>
<p class="MsoNormal">+ p_opts->force_link_speed_ext,<u></u><u></u></p>
<p class="MsoNormal"> p_opts->subnet_timeout,<u></u><u></u></p>
<p class="MsoNormal"> p_opts->local_phy_errors_threshold,<u></u><u></u></p>
<p class="MsoNormal"> p_opts->overrun_errors_threshold);<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_dump.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_dump.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_dump.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,7 +1,7 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal"> * This software is available to you under a choice of one of two<u></u><u></u></p>
<p class="MsoNormal">@@ -365,6 +365,7 @@<u></u><u></u></p>
<p class="MsoNormal"> osm_node_t *p_nbnode;<u></u><u></u></p>
<p class="MsoNormal"> osm_physp_t *p_physp, *p_default_physp, *p_rphysp;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t link_speed_act;<u></u><u></u></p>
<p class="MsoNormal">+ char *link_speed_act_str;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (!p_node->node_info.num_ports)<u></u><u></u></p>
<p class="MsoNormal"> return;<u></u><u></u></p>
<p class="MsoNormal">@@ -441,7 +442,26 @@<u></u><u></u></p>
<p class="MsoNormal"> port_state = ib_port_info_get_port_state(&p_physp->port_info);<u></u><u></u></p>
<p class="MsoNormal"> link_speed_act =<u></u><u></u></p>
<p class="MsoNormal"> ib_port_info_get_link_speed_active(&p_physp->port_info);<u></u><u></u></p>
<p class="MsoNormal">+ if (link_speed_act == IB_LINK_SPEED_ACTIVE_2_5)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "2.5";<u></u><u></u></p>
<p class="MsoNormal">+ else if (link_speed_act == IB_LINK_SPEED_ACTIVE_5)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "5";<u></u><u></u></p>
<p class="MsoNormal">+ else if (link_speed_act == IB_LINK_SPEED_ACTIVE_10)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "10";<u></u><u></u></p>
<p class="MsoNormal">+ else<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "??";<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ if (p_default_physp->port_info.capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) {<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act =<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_active(&p_physp->port_info);<u></u><u></u></p>
<p class="MsoNormal">+ if (link_speed_act == IB_LINK_SPEED_EXT_ACTIVE_14)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "14";<u></u><u></u></p>
<p class="MsoNormal">+ else if (link_speed_act == IB_LINK_SPEED_EXT_ACTIVE_25)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "25";<u></u><u></u></p>
<p class="MsoNormal">+ else if (link_speed_act != IB_LINK_SPEED_EXT_ACTIVE_NONE)<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str = "??";<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> fprintf(file, "PHY=%s LOG=%s SPD=%s\n",<u></u><u></u></p>
<p class="MsoNormal"> p_physp->port_info.link_width_active == 1 ? "1x" :<u></u><u></u></p>
<p class="MsoNormal"> p_physp->port_info.link_width_active == 2 ? "4x" :<u></u><u></u></p>
<p class="MsoNormal">@@ -450,9 +470,7 @@<u></u><u></u></p>
<p class="MsoNormal"> port_state == IB_LINK_ACTIVE ? "ACT" :<u></u><u></u></p>
<p class="MsoNormal"> port_state == IB_LINK_ARMED ? "ARM" :<u></u><u></u></p>
<p class="MsoNormal"> port_state == IB_LINK_INIT ? "INI" : "DWN",<u></u><u></u></p>
<p class="MsoNormal">- link_speed_act == 1 ? "2.5" :<u></u><u></u></p>
<p class="MsoNormal">- link_speed_act == 2 ? "5" :<u></u><u></u></p>
<p class="MsoNormal">- link_speed_act == 4 ? "10" : "??");<u></u><u></u></p>
<p class="MsoNormal">+ link_speed_act_str);<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">@@ -511,7 +529,9 @@<u></u><u></u></p>
<p class="MsoNormal"> (ib_port_info_get_neighbor_mtu(p_pi)),<u></u><u></u></p>
<p class="MsoNormal"> osm_get_lwa_str(p_pi->link_width_active),<u></u><u></u></p>
<p class="MsoNormal"> osm_get_lsa_str<u></u><u></u></p>
<p class="MsoNormal">- (ib_port_info_get_link_speed_active(p_pi)));<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_active(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_active(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_port_state(p_pi)));<u></u><u></u></p>
<p class="MsoNormal"> else<u></u><u></u></p>
<p class="MsoNormal"> fprintf(file, " : : ");<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_helper.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_helper.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_helper.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 HNR Consulting. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">@@ -439,6 +439,27 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> #define OSM_SA_ATTR_STR_UNKNOWN_VAL 0xF4<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+static int ordered_rates[] = {<u></u><u></u></p>
<p class="MsoNormal">+ 0, 0, /* 0, 1 - reserved */<u></u><u></u></p>
<p class="MsoNormal">+ 1, /* 2 - 2.5 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 3, /* 3 - 10 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 6, /* 4 - 30 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 2, /* 5 - 5 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 5, /* 6 - 20 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 8, /* 7 - 40 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 9, /* 8 - 60 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 11, /* 9 - 80 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 12, /* 10 - 120 Gbps */<u></u><u></u></p>
<p class="MsoNormal">+ 4, /* 11 - 14 Gbps (17 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 10, /* 12 - 56 Gbps (68 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 14, /* 13 - 112 Gbps (136 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 15, /* 14 - 158 Gbps (204 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 7, /* 15 - 25 Gbps (31.25 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 13, /* 16 - 100 Gbps (125 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 16, /* 17 - 200 Gbps (250 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+ 17 /* 18 - 300 Gbps (375 Gbps equiv) */<u></u><u></u></p>
<p class="MsoNormal">+};<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> static int sprint_uint8_arr(char *buf, size_t size,<u></u><u></u></p>
<p class="MsoNormal"> const uint8_t * arr, size_t len)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal">@@ -653,9 +674,9 @@<u></u><u></u></p>
<p class="MsoNormal"> &total_len) != IB_SUCCESS)<u></u><u></u></p>
<p class="MsoNormal"> return;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">- if (p_pi->capability_mask & IB_PORT_CAP_RESV14) {<u></u><u></u></p>
<p class="MsoNormal">+ if (p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) {<u></u><u></u></p>
<p class="MsoNormal"> if (dbg_do_line(&p_local, buf_size, p_prefix_str,<u></u><u></u></p>
<p class="MsoNormal">- "IB_PORT_CAP_RESV14\n",<u></u><u></u></p>
<p class="MsoNormal">+ "IB_PORT_CAP_HAS_EXT_SPEEDS\n",<u></u><u></u></p>
<p class="MsoNormal"> &total_len) != IB_SUCCESS)<u></u><u></u></p>
<p class="MsoNormal"> return;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">@@ -773,6 +794,7 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> osm_log(p_log, log_level,<u></u><u></u></p>
<p class="MsoNormal"> "PortInfo dump:\n"<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tport number.............%u\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tnode_guid...............0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tport_guid...............0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal">@@ -811,7 +833,10 @@<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tresp_time_value.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\terror_threshold.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tmax_credit_hint.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_round_trip_latency.0x%X\n",<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_round_trip_latency.0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_active....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_supported.0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_enabled...0x%X\n",<u></u><u></u></p>
<p class="MsoNormal"> port_num, cl_ntoh64(node_guid), cl_ntoh64(port_guid),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh64(p_pi->m_key), cl_ntoh64(p_pi->subnet_prefix),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->base_lid),<u></u><u></u></p>
<p class="MsoNormal">@@ -834,9 +859,13 @@<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->q_key_violations), p_pi->guid_cap,<u></u><u></u></p>
<p class="MsoNormal"> ib_port_info_get_client_rereg(p_pi),<u></u><u></u></p>
<p class="MsoNormal"> ib_port_info_get_mcast_pkey_trap_suppress(p_pi),<u></u><u></u></p>
<p class="MsoNormal">- ib_port_info_get_timeout(p_pi), p_pi->resp_time_value,<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_timeout(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_resp_time_value(p_pi),<u></u><u></u></p>
<p class="MsoNormal"> p_pi->error_threshold, cl_ntoh16(p_pi->max_credit_hint),<u></u><u></u></p>
<p class="MsoNormal">- cl_ntoh32(p_pi->link_rt_latency));<u></u><u></u></p>
<p class="MsoNormal">+ cl_ntoh32(p_pi->link_rt_latency),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_active(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_sup(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->link_speed_ext_enabled);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /* show the capabilities mask */<u></u><u></u></p>
<p class="MsoNormal"> if (p_pi->capability_mask) {<u></u><u></u></p>
<p class="MsoNormal">@@ -858,43 +887,51 @@<u></u><u></u></p>
<p class="MsoNormal"> osm_log(p_log, log_level,<u></u><u></u></p>
<p class="MsoNormal"> "PortInfo Record dump:\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tRID\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tEndPortLid..............%u\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tPortNum.................%u\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tOptions.................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tEndPortLid...............%u\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tPortNum..................%u\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tOptions..................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal"> "\t\t\t\tPortInfo dump:\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tm_key...................0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tsubnet_prefix...........0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tbase_lid................%u\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tmaster_sm_base_lid......%u\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tcapability_mask.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tdiag_code...............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tm_key_lease_period......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlocal_port_num..........%u\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_width_enabled......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_width_supported....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_width_active.......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_speed_supported....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tport_state..............%s\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tstate_info2.............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tm_key_protect_bits......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlmc.....................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tlink_speed..............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tmtu_smsl................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_cap_init_type........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_high_limit...........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_arb_high_cap.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_arb_low_cap..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tinit_rep_mtu_cap........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_stall_life...........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tvl_enforce..............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tm_key_violations........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tp_key_violations........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tq_key_violations........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tguid_cap................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tsubnet_timeout..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\tresp_time_value.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">- "\t\t\t\terror_threshold.........0x%X\n",<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tm_key....................0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tsubnet_prefix............0x%016" PRIx64 "\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tbase_lid.................%u\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tmaster_sm_base_lid.......%u\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tcapability_mask..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tdiag_code................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tm_key_lease_period.......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlocal_port_num...........%u\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_width_enabled.......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_width_supported.....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_width_active........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_supported.....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tport_state...............%s\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tstate_info2..............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tm_key_protect_bits.......0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlmc......................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed...............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tmtu_smsl.................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_cap_init_type.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_high_limit............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_arb_high_cap..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_arb_low_cap...........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tinit_rep_mtu_cap.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_stall_life............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tvl_enforce...............0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tm_key_violations.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tp_key_violations.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tq_key_violations.........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tguid_cap.................0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tclient_reregister........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tmcast_pkey_trap_suppr....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tsubnet_timeout...........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tresp_time_value..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\terror_threshold..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tmax_credit_hint..........0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_round_trip_latency..0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_active....0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_supported.0x%X\n"<u></u><u></u></p>
<p class="MsoNormal">+ "\t\t\t\tlink_speed_ext_enabled...0x%X\n",<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pir->lid), p_pir->port_num, p_pir->options,<u></u><u></u></p>
<p class="MsoNormal">+ cl_ntoh16(p_pir->lid), p_pir->port_num, p_pir->options,<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh64(p_pi->m_key), cl_ntoh64(p_pi->subnet_prefix),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->base_lid),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->master_sm_base_lid),<u></u><u></u></p>
<p class="MsoNormal">@@ -914,8 +951,13 @@<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->m_key_violations),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->p_key_violations),<u></u><u></u></p>
<p class="MsoNormal"> cl_ntoh16(p_pi->q_key_violations), p_pi->guid_cap,<u></u><u></u></p>
<p class="MsoNormal">- ib_port_info_get_timeout(p_pi), p_pi->resp_time_value,<u></u><u></u></p>
<p class="MsoNormal">- p_pi->error_threshold);<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_timeout(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_resp_time_value(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->error_threshold, cl_ntoh16(p_pi->max_credit_hint),<u></u><u></u></p>
<p class="MsoNormal">+ cl_ntoh32(p_pi->link_rt_latency),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_active(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_sup(p_pi),<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->link_speed_ext_enabled);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /* show the capabilities mask */<u></u><u></u></p>
<p class="MsoNormal"> if (p_pi->capability_mask) {<u></u><u></u></p>
<p class="MsoNormal">@@ -2195,19 +2237,28 @@<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> static const char *lsa_str_fixed_width[] = {<u></u><u></u></p>
<p class="MsoNormal">- "???",<u></u><u></u></p>
<p class="MsoNormal">+ "Ext",<u></u><u></u></p>
<p class="MsoNormal"> "2.5",<u></u><u></u></p>
<p class="MsoNormal"> "5 ",<u></u><u></u></p>
<p class="MsoNormal"> "???",<u></u><u></u></p>
<p class="MsoNormal"> "10 "<u></u><u></u></p>
<p class="MsoNormal"> };<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">-const char *osm_get_lsa_str(IN uint8_t lsa)<u></u><u></u></p>
<p class="MsoNormal">+static const char *lsea_str_fixed_width[] = {<u></u><u></u></p>
<p class="MsoNormal">+ "Std",<u></u><u></u></p>
<p class="MsoNormal">+ "14 ",<u></u><u></u></p>
<p class="MsoNormal">+ "25 "<u></u><u></u></p>
<p class="MsoNormal">+};<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal">- if (lsa > 4)<u></u><u></u></p>
<p class="MsoNormal">- return lsa_str_fixed_width[0];<u></u><u></u></p>
<p class="MsoNormal">- else<u></u><u></u></p>
<p class="MsoNormal">+ if (lsa > IB_LINK_SPEED_ACTIVE_10)<u></u><u></u></p>
<p class="MsoNormal">+ return lsa_str_fixed_width[3];<u></u><u></u></p>
<p class="MsoNormal">+ if (lsea == IB_LINK_SPEED_EXT_ACTIVE_NONE)<u></u><u></u></p>
<p class="MsoNormal"> return lsa_str_fixed_width[lsa];<u></u><u></u></p>
<p class="MsoNormal">+ if (lsea > IB_LINK_SPEED_EXT_ACTIVE_25)<u></u><u></u></p>
<p class="MsoNormal">+ return lsa_str_fixed_width[3];<u></u><u></u></p>
<p class="MsoNormal">+ return lsea_str_fixed_width[lsea];<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> static const char *sm_mgr_signal_str[] = {<u></u><u></u></p>
<p class="MsoNormal">@@ -2246,3 +2297,64 @@<u></u><u></u></p>
<p class="MsoNormal"> sm_mgr_state_str[state] :<u></u><u></u></p>
<p class="MsoNormal"> sm_mgr_state_str[ARR_SIZE(sm_mgr_state_str) - 1];<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_compare_rates(IN const int rate1, IN const int rate2)<u></u><u></u></p>
<p class="MsoNormal">+{<u></u><u></u></p>
<p class="MsoNormal">+ int orate1 = 0, orate2 = 0;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ CL_ASSERT(rate1 >= IB_MIN_RATE && rate1 <= IB_MAX_RATE);<u></u><u></u></p>
<p class="MsoNormal">+ CL_ASSERT(rate2 >= IB_MIN_RATE && rate2 <= IB_MAX_RATE);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ if (rate1 <= IB_MAX_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ orate1 = ordered_rates[rate1];<u></u><u></u></p>
<p class="MsoNormal">+ if (rate2 <= IB_MAX_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ orate2 = ordered_rates[rate2];<u></u><u></u></p>
<p class="MsoNormal">+ if (orate1 < orate2)<u></u><u></u></p>
<p class="MsoNormal">+ return -1;<u></u><u></u></p>
<p class="MsoNormal">+ if (orate1 == orate2)<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+ return 1;<u></u><u></u></p>
<p class="MsoNormal">+}<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+static int find_ordered_rate(IN const int rate)<u></u><u></u></p>
<p class="MsoNormal">+{<u></u><u></u></p>
<p class="MsoNormal">+ int i;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ for (i = IB_MIN_RATE; i <= IB_MAX_RATE; i++) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ordered_rates[i] == rate)<u></u><u></u></p>
<p class="MsoNormal">+ return i;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+}<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_rate_get_prev(IN const int rate)<u></u><u></u></p>
<p class="MsoNormal">+{<u></u><u></u></p>
<p class="MsoNormal">+ int orate;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ if (rate <= IB_MIN_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+ if (rate > IB_MAX_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+ orate = ordered_rates[rate];<u></u><u></u></p>
<p class="MsoNormal">+ orate--;<u></u><u></u></p>
<p class="MsoNormal">+ return find_ordered_rate(orate);<u></u><u></u></p>
<p class="MsoNormal">+}<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+int ib_path_rate_get_next(IN const int rate)<u></u><u></u></p>
<p class="MsoNormal">+{<u></u><u></u></p>
<p class="MsoNormal">+ int orate;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ if (rate < IB_MIN_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+ if (rate >= IB_MAX_RATE)<u></u><u></u></p>
<p class="MsoNormal">+ return 0;<u></u><u></u></p>
<p class="MsoNormal">+ orate = ordered_rates[rate];<u></u><u></u></p>
<p class="MsoNormal">+ orate++;<u></u><u></u></p>
<p class="MsoNormal">+ return find_ordered_rate(orate);<u></u><u></u></p>
<p class="MsoNormal">+}<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_portinfo_record.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_portinfo_record.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_portinfo_record.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal"> * This software is available to you under a choice of one of two<u></u><u></u></p>
<p class="MsoNormal">@@ -74,10 +74,12 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> static ib_api_status_t pir_rcv_new_pir(IN osm_sa_t * sa,<u></u><u></u></p>
<p class="MsoNormal"> IN const osm_physp_t * p_physp,<u></u><u></u></p>
<p class="MsoNormal">- IN cl_qlist_t * p_list,<u></u><u></u></p>
<p class="MsoNormal">+ IN osm_pir_search_ctxt_t * p_ctxt,<u></u><u></u></p>
<p class="MsoNormal"> IN ib_net16_t const lid)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal"> osm_pir_item_t *p_rec_item;<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal">+ osm_physp_t *p_physp0;<u></u><u></u></p>
<p class="MsoNormal"> ib_api_status_t status = IB_SUCCESS;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_ENTER(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal">@@ -100,9 +102,35 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> p_rec_item->rec.lid = lid;<u></u><u></u></p>
<p class="MsoNormal"> p_rec_item->rec.port_info = p_physp->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (p_ctxt->comp_mask & IB_PIR_COMPMASK_OPTIONS)<u></u><u></u></p>
<p class="MsoNormal">+ p_rec_item->rec.options = p_ctxt->p_rcvd_rec->options;<u></u><u></u></p>
<p class="MsoNormal">+ if ((p_ctxt->comp_mask & IB_PIR_COMPMASK_OPTIONS) == 0 ||<u></u><u></u></p>
<p class="MsoNormal">+ (p_ctxt->p_rcvd_rec->options & 0x80) == 0) {<u></u><u></u></p>
<p class="MsoNormal">+ /* Does requested port have an extended link speed active ? */<u></u><u></u></p>
<p class="MsoNormal">+ if (osm_node_get_type(p_physp->p_node) ==<u></u><u></u></p>
<p class="MsoNormal">+ IB_NODE_TYPE_SWITCH) {<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr(p_ctxt->p_req_physp->p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi = &p_physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ } else<u></u><u></u></p>
<p class="MsoNormal">+ p_pi = (ib_port_info_t *) &p_physp->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if ((p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) > 0) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_port_info_get_link_speed_ext_active(&p_physp->port_info)) {<u></u><u></u></p>
<p class="MsoNormal">+ /* Add QDR bits to original link speed components */<u></u><u></u></p>
<p class="MsoNormal">+ p_pi = &p_rec_item->rec.port_info;<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_set_link_speed_enabled(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_enabled(p_pi) | IB_LINK_SPEED_ACTIVE_10);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->state_info1 =<u></u><u></u></p>
<p class="MsoNormal">+ (uint8_t) ((p_pi->state_info1 & IB_PORT_STATE_MASK) |<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_sup(p_pi) | IB_LINK_SPEED_ACTIVE_10) << IB_PORT_LINK_SPEED_SHIFT);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->link_speed =<u></u><u></u></p>
<p class="MsoNormal">+ (uint8_t) ((p_pi->link_speed & IB_PORT_LINK_SPEED_ENABLED_MASK) |<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_active(p_pi) | IB_LINK_SPEED_ACTIVE_10) << IB_PORT_LINK_SPEED_SHIFT);<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal"> p_rec_item->rec.port_num = osm_physp_get_port_num(p_physp);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- cl_qlist_insert_tail(p_list, &p_rec_item->list_item);<u></u><u></u></p>
<p class="MsoNormal">+ cl_qlist_insert_tail(p_ctxt->p_list, &p_rec_item->list_item);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Exit:<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_EXIT(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal">@@ -147,7 +175,7 @@<u></u><u></u></p>
<p class="MsoNormal"> goto Exit;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- pir_rcv_new_pir(sa, p_physp, p_ctxt->p_list, cl_hton16(base_lid_ho));<u></u><u></u></p>
<p class="MsoNormal">+ pir_rcv_new_pir(sa, p_physp, p_ctxt, cl_hton16(base_lid_ho));<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Exit:<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_EXIT(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal">@@ -160,6 +188,8 @@<u></u><u></u></p>
<p class="MsoNormal"> ib_net64_t comp_mask;<u></u><u></u></p>
<p class="MsoNormal"> const ib_port_info_t *p_comp_pi;<u></u><u></u></p>
<p class="MsoNormal"> const ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal">+ const osm_physp_t * p_physp0;<u></u><u></u></p>
<p class="MsoNormal">+ ib_net32_t cap_mask;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_ENTER(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">@@ -373,6 +403,30 @@<u></u><u></u></p>
<p class="MsoNormal"> goto Exit;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ if (osm_node_get_type(p_physp->p_node) == IB_NODE_TYPE_SWITCH) {<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr(p_physp->p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask = p_physp0->port_info.capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+ } else<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask = p_pi->capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+ if (comp_mask & IB_PIR_COMPMASK_LINKSPDEXTACT) {<u></u><u></u></p>
<p class="MsoNormal">+ if (((cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) > 0) &&<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_ext_active(p_comp_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_active(p_pi)))<u></u><u></u></p>
<p class="MsoNormal">+ goto Exit;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ if (comp_mask & IB_PIR_COMPMASK_LINKSPDEXTSUPP) {<u></u><u></u></p>
<p class="MsoNormal">+ if (((cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) > 0) &&<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_ext_sup(p_comp_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_sup(p_pi)))<u></u><u></u></p>
<p class="MsoNormal">+ goto Exit;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ if (comp_mask & IB_PIR_COMPMASK_LINKSPDEXTENAB) {<u></u><u></u></p>
<p class="MsoNormal">+ if (((cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) > 0) &&<u></u><u></u></p>
<p class="MsoNormal">+ (ib_port_info_get_link_speed_ext_enabled(p_comp_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_enabled(p_pi)))<u></u><u></u></p>
<p class="MsoNormal">+ goto Exit;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> sa_pir_create(sa, p_physp, p_ctxt);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> Exit:<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_class_port_info.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_class_port_info.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_class_port_info.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2008 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal"> * This software is available to you under a choice of one of two<u></u><u></u></p>
<p class="MsoNormal">@@ -73,6 +73,7 @@<u></u><u></u></p>
<p class="MsoNormal"> ib_sa_mad_t *p_resp_sa_mad;<u></u><u></u></p>
<p class="MsoNormal"> ib_class_port_info_t *p_resp_cpi;<u></u><u></u></p>
<p class="MsoNormal"> ib_gid_t zero_gid;<u></u><u></u></p>
<p class="MsoNormal">+ uint32_t cap_mask2;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t rtv;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_ENTER(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal">@@ -156,11 +157,12 @@<u></u><u></u></p>
<p class="MsoNormal"> p_resp_cpi->cap_mask = OSM_CAP_IS_SUBN_GET_SET_NOTICE_SUP |<u></u><u></u></p>
<p class="MsoNormal"> OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED;<u></u><u></u></p>
<p class="MsoNormal"> #endif<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask2 = OSM_CAP2_IS_MCAST_TOP_SUPPORTED |<u></u><u></u></p>
<p class="MsoNormal">+ OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED |<u></u><u></u></p>
<p class="MsoNormal">+ OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED;<u></u><u></u></p>
<p class="MsoNormal"> if (sa->p_subn->opt.qos)<u></u><u></u></p>
<p class="MsoNormal">- ib_class_set_cap_mask2(p_resp_cpi, OSM_CAP2_IS_QOS_SUPPORTED |<u></u><u></u></p>
<p class="MsoNormal">- OSM_CAP2_IS_MCAST_TOP_SUPPORTED);<u></u><u></u></p>
<p class="MsoNormal">- else<u></u><u></u></p>
<p class="MsoNormal">- ib_class_set_cap_mask2(p_resp_cpi, OSM_CAP2_IS_MCAST_TOP_SUPPORTED);<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask2 |= OSM_CAP2_IS_QOS_SUPPORTED;<u></u><u></u></p>
<p class="MsoNormal">+ ib_class_set_cap_mask2(p_resp_cpi, cap_mask2);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (!sa->p_subn->opt.disable_multicast)<u></u><u></u></p>
<p class="MsoNormal"> p_resp_cpi->cap_mask |= OSM_CAP_IS_UD_MCAST_SUP;<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_link_mgr.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_link_mgr.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_link_mgr.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal">@@ -95,8 +95,10 @@<u></u><u></u></p>
<p class="MsoNormal"> ib_api_status_t status;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t port_num, mtu, op_vls, smsl = OSM_DEFAULT_SL;<u></u><u></u></p>
<p class="MsoNormal"> boolean_t esp0 = FALSE, send_set = FALSE;<u></u><u></u></p>
<p class="MsoNormal">- osm_physp_t *p_remote_physp;<u></u><u></u></p>
<p class="MsoNormal">+ osm_physp_t *p_remote_physp, *physp0;<u></u><u></u></p>
<p class="MsoNormal">+ int qdr_change = 0;<u></u><u></u></p>
<p class="MsoNormal"> int ret = 0;<u></u><u></u></p>
<p class="MsoNormal">+ ib_net32_t attr_mod, cap_mask;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_ENTER(sm->p_log);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">@@ -231,16 +233,14 @@<u></u><u></u></p>
<p class="MsoNormal"> sizeof(p_pi->m_key_lease_period)))<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (esp0 == FALSE)<u></u><u></u></p>
<p class="MsoNormal">- p_pi->mkey_lmc = sm->p_subn->opt.lmc;<u></u><u></u></p>
<p class="MsoNormal">- else {<u></u><u></u></p>
<p class="MsoNormal">- if (sm->p_subn->opt.lmc_esp0)<u></u><u></u></p>
<p class="MsoNormal">- p_pi->mkey_lmc = sm->p_subn->opt.lmc;<u></u><u></u></p>
<p class="MsoNormal">- else<u></u><u></u></p>
<p class="MsoNormal">- p_pi->mkey_lmc = 0;<u></u><u></u></p>
<p class="MsoNormal">- }<u></u><u></u></p>
<p class="MsoNormal">- if (memcmp(&p_pi->mkey_lmc, &p_old_pi->mkey_lmc,<u></u><u></u></p>
<p class="MsoNormal">- sizeof(p_pi->mkey_lmc)))<u></u><u></u></p>
<p class="MsoNormal">+ /* M_KeyProtectBits are currently always zero */<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->mkey_lmc = 0;<u></u><u></u></p>
<p class="MsoNormal">+ if (esp0 == FALSE || sm->p_subn->opt.lmc_esp0)<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_set_lmc(p_pi, sm->p_subn->opt.lmc);<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_port_info_get_lmc(p_old_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_lmc(p_pi) ||<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_old_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> ib_port_info_set_timeout(p_pi,<u></u><u></u></p>
<p class="MsoNormal">@@ -327,10 +327,56 @@<u></u><u></u></p>
<p class="MsoNormal"> sm->p_subn->opt.<u></u><u></u></p>
<p class="MsoNormal"> force_link_speed);<u></u><u></u></p>
<p class="MsoNormal"> if (memcmp(&p_pi->link_speed, &p_old_pi->link_speed,<u></u><u></u></p>
<p class="MsoNormal">- sizeof(p_pi->link_speed)))<u></u><u></u></p>
<p class="MsoNormal">+ sizeof(p_pi->link_speed))) {<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal">+ /* Determine whether QDR in LSE is being changed */<u></u><u></u></p>
<p class="MsoNormal">+ if ((ib_port_info_get_link_speed_enabled(p_pi) &<u></u><u></u></p>
<p class="MsoNormal">+ IB_LINK_SPEED_ACTIVE_10 &&<u></u><u></u></p>
<p class="MsoNormal">+ !(ib_port_info_get_link_speed_enabled(p_old_pi) &<u></u><u></u></p>
<p class="MsoNormal">+ IB_LINK_SPEED_ACTIVE_10)) ||<u></u><u></u></p>
<p class="MsoNormal">+ ((!(ib_port_info_get_link_speed_enabled(p_pi) &<u></u><u></u></p>
<p class="MsoNormal">+ IB_LINK_SPEED_ACTIVE_10) &&<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_enabled(p_old_pi) &<u></u><u></u></p>
<p class="MsoNormal">+ IB_LINK_SPEED_ACTIVE_10)))<u></u><u></u></p>
<p class="MsoNormal">+ qdr_change = 1;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ if (osm_node_get_type(p_physp->p_node) == IB_NODE_TYPE_SWITCH) {<u></u><u></u></p>
<p class="MsoNormal">+ physp0 = osm_node_get_physp_ptr(p_physp->p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask = physp0->port_info.capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+ } else<u></u><u></u></p>
<p class="MsoNormal">+ cap_mask = p_pi->capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+ if (!(cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS))<u></u><u></u></p>
<p class="MsoNormal">+ qdr_change = 0;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ /* Do peer ports support extended link speeds ? */<u></u><u></u></p>
<p class="MsoNormal">+ if (port_num != 0 && p_remote_physp) {<u></u><u></u></p>
<p class="MsoNormal">+ osm_physp_t *rphysp0;<u></u><u></u></p>
<p class="MsoNormal">+ ib_net32_t rem_cap_mask;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ if (osm_node_get_type(p_remote_physp->p_node) ==<u></u><u></u></p>
<p class="MsoNormal">+ IB_NODE_TYPE_SWITCH) {<u></u><u></u></p>
<p class="MsoNormal">+ rphysp0 = osm_node_get_physp_ptr(p_remote_physp->p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ rem_cap_mask = rphysp0->port_info.capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+ } else<u></u><u></u></p>
<p class="MsoNormal">+ rem_cap_mask = p_remote_physp->port_info.capability_mask;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal">+ if (cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS &&<u></u><u></u></p>
<p class="MsoNormal">+ rem_cap_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) {<u></u><u></u></p>
<p class="MsoNormal">+ if (sm->p_subn->opt.force_link_speed_ext &&<u></u><u></u></p>
<p class="MsoNormal">+ (sm->p_subn->opt.force_link_speed_ext != IB_LINK_SPEED_EXT_SET_LSES ||<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->link_speed_ext_enabled !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_sup(p_pi))) {<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->link_speed_ext_enabled = sm->p_subn->opt.force_link_speed_ext;<u></u><u></u></p>
<p class="MsoNormal">+ if (memcmp(&p_pi->link_speed_ext_enabled,<u></u><u></u></p>
<p class="MsoNormal">+ &p_old_pi->link_speed_ext_enabled,<u></u><u></u></p>
<p class="MsoNormal">+ sizeof(p_pi->link_speed_ext_enabled)))<u></u><u></u></p>
<p class="MsoNormal">+ send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> /* calc new op_vls and mtu */<u></u><u></u></p>
<p class="MsoNormal"> op_vls =<u></u><u></u></p>
<p class="MsoNormal"> osm_physp_calc_link_op_vls(sm->p_log, sm->p_subn, p_physp);<u></u><u></u></p>
<p class="MsoNormal">@@ -384,9 +430,13 @@<u></u><u></u></p>
<p class="MsoNormal"> if (!send_set)<u></u><u></u></p>
<p class="MsoNormal"> goto Exit;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ attr_mod = cl_hton32(port_num);<u></u><u></u></p>
<p class="MsoNormal">+ if (qdr_change)<u></u><u></u></p>
<p class="MsoNormal">+ attr_mod |= cl_hton32(1 << 31); /* AM SMSupportExtendedSpeeds */<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> status = osm_req_set(sm, osm_physp_get_dr_path_ptr(p_physp),<u></u><u></u></p>
<p class="MsoNormal"> payload, sizeof(payload), IB_MAD_ATTR_PORT_INFO,<u></u><u></u></p>
<p class="MsoNormal">- cl_hton32(port_num), CL_DISP_MSGID_NONE, &context);<u></u><u></u></p>
<p class="MsoNormal">+ attr_mod, CL_DISP_MSGID_NONE, &context);<u></u><u></u></p>
<p class="MsoNormal"> if (status)<u></u><u></u></p>
<p class="MsoNormal"> ret = -1;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_console.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_console.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_console.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,7 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2005-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 HNR Consulting. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2010,2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal"> * This software is available to you under a choice of one of two<u></u><u></u></p>
<p class="MsoNormal"> * licenses. You may choose to be licensed under the terms of the GNU<u></u><u></u></p>
<p class="MsoNormal">@@ -661,6 +662,8 @@<u></u><u></u></p>
<p class="MsoNormal"> uint64_t ports_sdr;<u></u><u></u></p>
<p class="MsoNormal"> uint64_t ports_ddr;<u></u><u></u></p>
<p class="MsoNormal"> uint64_t ports_qdr;<u></u><u></u></p>
<p class="MsoNormal">+ uint64_t ports_fdr;<u></u><u></u></p>
<p class="MsoNormal">+ uint64_t ports_edr;<u></u><u></u></p>
<p class="MsoNormal"> uint64_t ports_unknown_speed;<u></u><u></u></p>
<p class="MsoNormal"> uint64_t ports_reduced_speed;<u></u><u></u></p>
<p class="MsoNormal"> port_report_t *reduced_speed_ports;<u></u><u></u></p>
<p class="MsoNormal">@@ -673,6 +676,8 @@<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal"> fabric_stats_t *fs = (fabric_stats_t *) context;<u></u><u></u></p>
<p class="MsoNormal"> osm_node_t *node = (osm_node_t *) p_map_item;<u></u><u></u></p>
<p class="MsoNormal">+ osm_physp_t *physp0;<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_t *pi0;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t num_ports = osm_node_get_num_physp(node);<u></u><u></u></p>
<p class="MsoNormal"> uint8_t port = 0;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">@@ -683,6 +688,12 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> fs->total_nodes++;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">+ if (osm_node_get_type(node) == IB_NODE_TYPE_SWITCH) {<u></u><u></u></p>
<p class="MsoNormal">+ physp0 = osm_node_get_physp_ptr(node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ pi0 = &physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ } else<u></u><u></u></p>
<p class="MsoNormal">+ pi0 = NULL;<u></u><u></u></p>
<p class="MsoNormal">+<u></u><u></u></p>
<p class="MsoNormal"> for (port = 1; port < num_ports; port++) {<u></u><u></u></p>
<p class="MsoNormal"> osm_physp_t *phys = osm_node_get_physp_ptr(node, port);<u></u><u></u></p>
<p class="MsoNormal"> ib_port_info_t *pi = NULL;<u></u><u></u></p>
<p class="MsoNormal">@@ -696,7 +707,9 @@<u></u><u></u></p>
<p class="MsoNormal"> if (!phys)<u></u><u></u></p>
<p class="MsoNormal"> continue;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- pi = &(phys->port_info);<u></u><u></u></p>
<p class="MsoNormal">+ pi = &phys->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (!pi0)<u></u><u></u></p>
<p class="MsoNormal">+ pi0 = pi;<u></u><u></u></p>
<p class="MsoNormal"> active_speed = ib_port_info_get_link_speed_active(pi);<u></u><u></u></p>
<p class="MsoNormal"> enabled_speed = ib_port_info_get_link_speed_enabled(pi);<u></u><u></u></p>
<p class="MsoNormal"> active_width = pi->link_width_active;<u></u><u></u></p>
<p class="MsoNormal">@@ -726,12 +739,38 @@<u></u><u></u></p>
<p class="MsoNormal"> fs->ports_ddr++;<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> case IB_LINK_SPEED_ACTIVE_10:<u></u><u></u></p>
<p class="MsoNormal">- fs->ports_qdr++;<u></u><u></u></p>
<p class="MsoNormal">+ if (!(pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) ||<u></u><u></u></p>
<p class="MsoNormal">+ ((pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) &&<u></u><u></u></p>
<p class="MsoNormal">+ !ib_port_info_get_link_speed_ext_active(pi)))<u></u><u></u></p>
<p class="MsoNormal">+ fs->ports_qdr++;<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> default:<u></u><u></u></p>
<p class="MsoNormal"> fs->ports_unknown_speed++;<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">+ if (pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS &&<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_link_speed_ext_sup(pi) &&<u></u><u></u></p>
<p class="MsoNormal">+ (enabled_speed = pi->link_speed_ext_enabled) != IB_LINK_SPEED_EXT_DISABLE &&<u></u><u></u></p>
<p class="MsoNormal">+ active_speed == IB_LINK_SPEED_ACTIVE_10) {<u></u><u></u></p>
<p class="MsoNormal">+ active_speed = ib_port_info_get_link_speed_ext_active(pi);<u></u><u></u></p>
<p class="MsoNormal">+ if ((enabled_speed ^ active_speed) > active_speed) {<u></u><u></u></p>
<p class="MsoNormal">+ __tag_port_report(&(fs->reduced_speed_ports),<u></u><u></u></p>
<p class="MsoNormal">+ cl_ntoh64(node->node_info.node_guid),<u></u><u></u></p>
<p class="MsoNormal">+ port, node->print_desc);<u></u><u></u></p>
<p class="MsoNormal">+ fs->ports_reduced_speed++;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ switch (active_speed) {<u></u><u></u></p>
<p class="MsoNormal">+ case IB_LINK_SPEED_EXT_ACTIVE_14:<u></u><u></u></p>
<p class="MsoNormal">+ fs->ports_fdr++;<u></u><u></u></p>
<p class="MsoNormal">+ break;<u></u><u></u></p>
<p class="MsoNormal">+ case IB_LINK_SPEED_EXT_ACTIVE_25:<u></u><u></u></p>
<p class="MsoNormal">+ fs->ports_edr++;<u></u><u></u></p>
<p class="MsoNormal">+ break;<u></u><u></u></p>
<p class="MsoNormal">+ default:<u></u><u></u></p>
<p class="MsoNormal">+ fs->ports_unknown_speed++;<u></u><u></u></p>
<p class="MsoNormal">+ break;<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal">+ }<u></u><u></u></p>
<p class="MsoNormal"> switch (active_width) {<u></u><u></u></p>
<p class="MsoNormal"> case IB_LINK_WIDTH_ACTIVE_1X:<u></u><u></u></p>
<p class="MsoNormal"> fs->ports_1X++;<u></u><u></u></p>
<p class="MsoNormal">@@ -825,6 +864,10 @@<u></u><u></u></p>
<p class="MsoNormal"> fprintf(out, " %" PRIu64 " at 5.0 Gbps\n", fs.ports_ddr);<u></u><u></u></p>
<p class="MsoNormal"> if (fs.ports_qdr)<u></u><u></u></p>
<p class="MsoNormal"> fprintf(out, " %" PRIu64 " at 10.0 Gbps\n", fs.ports_qdr);<u></u><u></u></p>
<p class="MsoNormal">+ if (fs.ports_fdr)<u></u><u></u></p>
<p class="MsoNormal">+ fprintf(out, " %" PRIu64 " at 14.0625 Gbps\n", fs.ports_fdr);<u></u><u></u></p>
<p class="MsoNormal">+ if (fs.ports_edr)<u></u><u></u></p>
<p class="MsoNormal">+ fprintf(out, " %" PRIu64 " at 25.78125 Gbps\n", fs.ports_edr);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (fs.ports_disabled + fs.ports_reduced_speed + fs.ports_reduced_width<u></u><u></u></p>
<p class="MsoNormal"> > 0) {<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_mcmember_record.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_mcmember_record.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_mcmember_record.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2008 Xsigo Systems Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal">@@ -285,7 +285,7 @@<u></u><u></u></p>
<p class="MsoNormal"> rate_mgrp = (uint8_t) (p_mgrp->mcmember_rec.rate & 0x3F);<u></u><u></u></p>
<p class="MsoNormal"> switch (rate_sel) {<u></u><u></u></p>
<p class="MsoNormal"> case 0: /* Greater than RATE specified */<u></u><u></u></p>
<p class="MsoNormal">- if (rate_mgrp <= rate_required) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_mgrp, rate_required) <= 0) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Requested mcast group has RATE %x, "<u></u><u></u></p>
<p class="MsoNormal"> "which is not greater than %x\n",<u></u><u></u></p>
<p class="MsoNormal">@@ -294,7 +294,7 @@<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> case 1: /* Less than RATE specified */<u></u><u></u></p>
<p class="MsoNormal">- if (rate_mgrp >= rate_required) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_mgrp, rate_required) >= 0) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Requested mcast group has RATE %x, "<u></u><u></u></p>
<p class="MsoNormal"> "which is not less than %x\n",<u></u><u></u></p>
<p class="MsoNormal">@@ -303,7 +303,7 @@<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> case 2: /* Exactly RATE specified */<u></u><u></u></p>
<p class="MsoNormal">- if (rate_mgrp != rate_required) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_mgrp, rate_required)) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Requested mcast group has RATE %x, "<u></u><u></u></p>
<p class="MsoNormal"> "which is not equal to %x\n",<u></u><u></u></p>
<p class="MsoNormal">@@ -327,6 +327,7 @@<u></u><u></u></p>
<p class="MsoNormal"> const osm_mgrp_t * p_mgrp,<u></u><u></u></p>
<p class="MsoNormal"> const osm_physp_t * p_physp)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal">+ const ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t mtu_required;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t mtu_mgrp;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t rate_required;<u></u><u></u></p>
<p class="MsoNormal">@@ -341,9 +342,11 @@<u></u><u></u></p>
<p class="MsoNormal"> return FALSE;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- rate_required = ib_port_info_compute_rate(&p_physp->port_info);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi = &p_physp->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ rate_required = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> rate_mgrp = (uint8_t) (p_mgrp->mcmember_rec.rate & 0x3F);<u></u><u></u></p>
<p class="MsoNormal">- if (rate_required < rate_mgrp) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_required, rate_mgrp) < 0) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Port's RATE %x is less than %x\n",<u></u><u></u></p>
<p class="MsoNormal"> rate_required, rate_mgrp);<u></u><u></u></p>
<p class="MsoNormal">@@ -635,6 +638,7 @@<u></u><u></u></p>
<p class="MsoNormal"> uint8_t mtu_required, mtu, port_mtu;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t rate_sel = 2; /* exactly */<u></u><u></u></p>
<p class="MsoNormal"> uint8_t rate_required, rate, port_rate;<u></u><u></u></p>
<p class="MsoNormal">+ const ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal"> osm_log_t *p_log = sa->p_log;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG_ENTER(sa->p_log);<u></u><u></u></p>
<p class="MsoNormal">@@ -652,7 +656,8 @@<u></u><u></u></p>
<p class="MsoNormal"> * masked in.<u></u><u></u></p>
<p class="MsoNormal"> */<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- port_mtu = p_physp ? ib_port_info_get_mtu_cap(&p_physp->port_info) : 0;<u></u><u></u></p>
<p class="MsoNormal">+ p_pi = &p_physp->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ port_mtu = p_physp ? ib_port_info_get_mtu_cap(p_pi) : 0;<u></u><u></u></p>
<p class="MsoNormal"> if (!(comp_mask & IB_MCR_COMPMASK_MTU) ||<u></u><u></u></p>
<p class="MsoNormal"> !(comp_mask & IB_MCR_COMPMASK_MTU_SEL) ||<u></u><u></u></p>
<p class="MsoNormal"> (mtu_sel = (p_mcm_rec->mtu >> 6)) == 3)<u></u><u></u></p>
<p class="MsoNormal">@@ -689,7 +694,7 @@<u></u><u></u></p>
<p class="MsoNormal"> default:<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">- /* make sure it still be in the range */<u></u><u></u></p>
<p class="MsoNormal">+ /* make sure it still is in the range */<u></u><u></u></p>
<p class="MsoNormal"> if (mtu < IB_MIN_MTU || mtu > IB_MAX_MTU) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Calculated MTU %x is out of range\n", mtu);<u></u><u></u></p>
<p class="MsoNormal">@@ -699,7 +704,8 @@<u></u><u></u></p>
<p class="MsoNormal"> p_mcm_rec->mtu = (mtu_sel << 6) | mtu;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> port_rate =<u></u><u></u></p>
<p class="MsoNormal">- p_physp ? ib_port_info_compute_rate(&p_physp->port_info) : 0;<u></u><u></u></p>
<p class="MsoNormal">+ p_physp ? ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS) : 0;<u></u><u></u></p>
<p class="MsoNormal"> if (!(comp_mask & IB_MCR_COMPMASK_RATE)<u></u><u></u></p>
<p class="MsoNormal"> || !(comp_mask & IB_MCR_COMPMASK_RATE_SEL)<u></u><u></u></p>
<p class="MsoNormal"> || (rate_sel = (p_mcm_rec->rate >> 6)) == 3)<u></u><u></u></p>
<p class="MsoNormal">@@ -709,7 +715,7 @@<u></u><u></u></p>
<p class="MsoNormal"> rate = rate_required;<u></u><u></u></p>
<p class="MsoNormal"> switch (rate_sel) {<u></u><u></u></p>
<p class="MsoNormal"> case 0: /* Greater than RATE specified */<u></u><u></u></p>
<p class="MsoNormal">- if (port_rate && rate_required >= port_rate) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_required, port_rate) >= 0) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Requested RATE %x >= the port\'s rate:%x\n",<u></u><u></u></p>
<p class="MsoNormal"> rate_required, port_rate);<u></u><u></u></p>
<p class="MsoNormal">@@ -718,19 +724,20 @@<u></u><u></u></p>
<p class="MsoNormal"> /* we provide the largest RATE possible if we can */<u></u><u></u></p>
<p class="MsoNormal"> if (port_rate)<u></u><u></u></p>
<p class="MsoNormal"> rate = port_rate;<u></u><u></u></p>
<p class="MsoNormal">- else if (rate_required < sa->p_subn->min_ca_rate)<u></u><u></u></p>
<p class="MsoNormal">+ else if (ib_path_compare_rates(rate_required,<u></u><u></u></p>
<p class="MsoNormal">+ sa->p_subn->min_ca_rate) < 0)<u></u><u></u></p>
<p class="MsoNormal"> rate = sa->p_subn->min_ca_rate;<u></u><u></u></p>
<p class="MsoNormal"> else<u></u><u></u></p>
<p class="MsoNormal">- rate++;<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_path_rate_get_next(rate);<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> case 1: /* Less than RATE specified */<u></u><u></u></p>
<p class="MsoNormal"> /* use the smaller of the two:<u></u><u></u></p>
<p class="MsoNormal"> a. one lower then the required<u></u><u></u></p>
<p class="MsoNormal"> b. the rate of the requesting port (if exists) */<u></u><u></u></p>
<p class="MsoNormal">- if (port_rate && rate_required > port_rate)<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate_required, port_rate) > 0)<u></u><u></u></p>
<p class="MsoNormal"> rate = port_rate;<u></u><u></u></p>
<p class="MsoNormal"> else<u></u><u></u></p>
<p class="MsoNormal">- rate--;<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_path_rate_get_prev(rate);<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> case 2: /* Exactly RATE specified */<u></u><u></u></p>
<p class="MsoNormal"> default:<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_port_info_rcv.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_port_info_rcv.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_port_info_rcv.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 HNR Consulting. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> *<u></u><u></u></p>
<p class="MsoNormal">@@ -101,7 +101,8 @@<u></u><u></u></p>
<p class="MsoNormal"> sm->p_subn->min_ca_mtu = mtu;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> if (rate < sm->p_subn->min_ca_rate) {<u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(sm->p_log, OSM_LOG_VERBOSE,<u></u><u></u></p>
<p class="MsoNormal"> "Setting endport minimal rate to:%u defined by port:0x%"<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_pkey_mgr.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_pkey_mgr.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_pkey_mgr.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -203,8 +203,6 @@<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> memcpy(payload, p_pi, sizeof(ib_port_info_t));<u></u><u></u></p>
<p class="MsoNormal">- memset(payload + sizeof(ib_port_info_t), 0,<u></u><u></u></p>
<p class="MsoNormal">- IB_SMP_DATA_SIZE - sizeof(ib_port_info_t));<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> p_pi = (ib_port_info_t *) payload;<u></u><u></u></p>
<p class="MsoNormal"> if (enforce == TRUE)<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_lid_mgr.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_lid_mgr.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_lid_mgr.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -838,8 +838,6 @@<u></u><u></u></p>
<p class="MsoNormal"> */<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> memcpy(payload, p_old_pi, sizeof(ib_port_info_t));<u></u><u></u></p>
<p class="MsoNormal">- memset(payload + sizeof(ib_port_info_t), 0,<u></u><u></u></p>
<p class="MsoNormal">- IB_SMP_DATA_SIZE - sizeof(ib_port_info_t));<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> Should never write back a value that is bigger then 3 in<u></u><u></u></p>
<p class="MsoNormal">@@ -907,10 +905,12 @@<u></u><u></u></p>
<p class="MsoNormal"> sizeof(p_pi->link_width_enabled)))<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- /* M_KeyProtectBits are always zero */<u></u><u></u></p>
<p class="MsoNormal">+ /* M_KeyProtectBits are currently always zero */<u></u><u></u></p>
<p class="MsoNormal"> p_pi->mkey_lmc = p_mgr->p_subn->opt.lmc;<u></u><u></u></p>
<p class="MsoNormal">- if (memcmp(&p_pi->mkey_lmc, &p_old_pi->mkey_lmc,<u></u><u></u></p>
<p class="MsoNormal">- sizeof(p_pi->mkey_lmc)))<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_port_info_get_lmc(p_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_lmc(p_old_pi) ||<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_old_pi))<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /* calc new op_vls and mtu */<u></u><u></u></p>
<p class="MsoNormal">@@ -989,10 +989,12 @@<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /* Determine if enhanced switch port 0 and if so set LMC */<u></u><u></u></p>
<p class="MsoNormal"> if (osm_switch_sp0_is_lmc_capable(p_node->sw, p_mgr->p_subn)) {<u></u><u></u></p>
<p class="MsoNormal">- /* M_KeyProtectBits are always zero */<u></u><u></u></p>
<p class="MsoNormal">+ /* M_KeyProtectBits are currently always zero */<u></u><u></u></p>
<p class="MsoNormal"> p_pi->mkey_lmc = p_mgr->p_subn->opt.lmc;<u></u><u></u></p>
<p class="MsoNormal">- if (memcmp(&p_pi->mkey_lmc, &p_old_pi->mkey_lmc,<u></u><u></u></p>
<p class="MsoNormal">- sizeof(p_pi->mkey_lmc)))<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_port_info_get_lmc(p_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_lmc(p_old_pi) ||<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_pi) !=<u></u><u></u></p>
<p class="MsoNormal">+ ib_port_info_get_mpb(p_old_pi))<u></u><u></u></p>
<p class="MsoNormal"> send_set = TRUE;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal">Index: B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_path_record.c<u></u><u></u></p>
<p class="MsoNormal">===================================================================<u></u><u></u></p>
<p class="MsoNormal">--- B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_path_record.c (revision 8756)<u></u><u></u></p>
<p class="MsoNormal">+++ B:/users/leonid/svn/winib/branches/fdr/ulp/opensm/user/opensm/osm_sa_path_record.c (revision 8757)<u></u><u></u></p>
<p class="MsoNormal">@@ -1,6 +1,6 @@<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">- * Copyright (c) 2002-2007 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">+ * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2008 Xsigo Systems Inc. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal"> * Copyright (c) 2009 HNR Consulting. All rights reserved.<u></u><u></u></p>
<p class="MsoNormal">@@ -158,12 +158,12 @@<u></u><u></u></p>
<p class="MsoNormal"> OUT osm_path_parms_t * p_parms)<u></u><u></u></p>
<p class="MsoNormal"> {<u></u><u></u></p>
<p class="MsoNormal"> const osm_node_t *p_node;<u></u><u></u></p>
<p class="MsoNormal">- const osm_physp_t *p_physp;<u></u><u></u></p>
<p class="MsoNormal">+ const osm_physp_t *p_physp, *p_physp0;<u></u><u></u></p>
<p class="MsoNormal"> const osm_physp_t *p_src_physp;<u></u><u></u></p>
<p class="MsoNormal"> const osm_physp_t *p_dest_physp;<u></u><u></u></p>
<p class="MsoNormal"> const osm_prtn_t *p_prtn = NULL;<u></u><u></u></p>
<p class="MsoNormal"> osm_opensm_t *p_osm;<u></u><u></u></p>
<p class="MsoNormal">- const ib_port_info_t *p_pi;<u></u><u></u></p>
<p class="MsoNormal">+ const ib_port_info_t *p_pi, *p_pi0;<u></u><u></u></p>
<p class="MsoNormal"> ib_api_status_t status = IB_SUCCESS;<u></u><u></u></p>
<p class="MsoNormal"> ib_net16_t pkey;<u></u><u></u></p>
<p class="MsoNormal"> uint8_t mtu;<u></u><u></u></p>
<p class="MsoNormal">@@ -193,7 +193,8 @@<u></u><u></u></p>
<p class="MsoNormal"> p_osm = sa->p_subn->p_osm;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> Mellanox Tavor device performance is better using 1K MTU.<u></u><u></u></p>
<p class="MsoNormal">@@ -347,8 +348,12 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr((osm_node_t *)p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0 = &p_physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal"> Continue with the egress port on this switch.<u></u><u></u></p>
<p class="MsoNormal">@@ -370,8 +375,12 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ p_physp0 = osm_node_get_physp_ptr((osm_node_t *)p_node, 0);<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0 = &p_physp0->port_info;<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi0->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (sa->p_subn->opt.qos) {<u></u><u></u></p>
<p class="MsoNormal"> /*<u></u><u></u></p>
<p class="MsoNormal">@@ -423,8 +432,10 @@<u></u><u></u></p>
<p class="MsoNormal"> if (mtu > ib_port_info_get_mtu_cap(p_pi))<u></u><u></u></p>
<p class="MsoNormal"> mtu = ib_port_info_get_mtu_cap(p_pi);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">- if (rate > ib_port_info_compute_rate(p_pi))<u></u><u></u></p>
<p class="MsoNormal">- rate = ib_port_info_compute_rate(p_pi);<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS)) > 0)<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_port_info_compute_rate(p_pi,<u></u><u></u></p>
<p class="MsoNormal">+ p_pi->capability_mask & IB_PORT_CAP_HAS_EXT_SPEEDS);<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> OSM_LOG(sa->p_log, OSM_LOG_DEBUG,<u></u><u></u></p>
<p class="MsoNormal"> "Path min MTU = %u, min rate = %u\n", mtu, rate);<u></u><u></u></p>
<p class="MsoNormal">@@ -449,7 +460,7 @@<u></u><u></u></p>
<p class="MsoNormal"> mtu = p_qos_level->mtu_limit;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (p_qos_level->rate_limit_set<u></u><u></u></p>
<p class="MsoNormal">- && (rate > p_qos_level->rate_limit))<u></u><u></u></p>
<p class="MsoNormal">+ && (ib_path_compare_rates(rate, p_qos_level->rate_limit) > 0))<u></u><u></u></p>
<p class="MsoNormal"> rate = p_qos_level->rate_limit;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> if (p_qos_level->sl_set) {<u></u><u></u></p>
<p class="MsoNormal">@@ -527,23 +538,22 @@<u></u><u></u></p>
<p class="MsoNormal"> required_rate = ib_path_rec_rate(p_pr);<u></u><u></u></p>
<p class="MsoNormal"> switch (ib_path_rec_rate_sel(p_pr)) {<u></u><u></u></p>
<p class="MsoNormal"> case 0: /* must be greater than */<u></u><u></u></p>
<p class="MsoNormal">- if (rate <= required_rate)<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate) <= 0)<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> case 1: /* must be less than */<u></u><u></u></p>
<p class="MsoNormal">- if (rate >= required_rate) {<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate) >= 0) {<u></u><u></u></p>
<p class="MsoNormal"> /* adjust the rate to use the highest rate<u></u><u></u></p>
<p class="MsoNormal"> lower then the required one */<u></u><u></u></p>
<p class="MsoNormal">- if (required_rate > 2)<u></u><u></u></p>
<p class="MsoNormal">- rate = required_rate - 1;<u></u><u></u></p>
<p class="MsoNormal">- else<u></u><u></u></p>
<p class="MsoNormal">+ rate = ib_path_rate_get_prev(required_rate);<u></u><u></u></p>
<p class="MsoNormal">+ if (!rate)<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> }<u></u><u></u></p>
<p class="MsoNormal"> break;<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"> case 2: /* exact match */<u></u><u></u></p>
<p class="MsoNormal">- if (rate < required_rate)<u></u><u></u></p>
<p class="MsoNormal">+ if (ib_path_compare_rates(rate, required_rate))<u></u><u></u></p>
<p class="MsoNormal"> status = IB_NOT_FOUND;<u></u><u></u></p>
<p class="MsoNormal"> else<u></u><u></u></p>
<p class="MsoNormal"> rate = required_rate;<u></u><u></u></p>
</div>
</div>
</div>
</div>
<br>_______________________________________________<br>
ofw mailing list<br>
<a href="mailto:ofw@lists.openfabrics.org">ofw@lists.openfabrics.org</a><br>
<a href="http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw" target="_blank">http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw</a><br></blockquote></div><br>