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