<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal>A tool imported from Linux.<o:p></o:p></p>

<p class=MsoNormal>The tool runs perfquery on all the nodes that appear in
ibnetdiscover output or in a given topology file. <o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Usage:<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>ibclearerrors [-h] [<topology-file> | -C ca_name -P
ca_port -t timeout_ms]<o:p></o:p></p>

<p class=MsoNormal style='text-indent:.5in'>h - Help (displays this message)<o:p></o:p></p>

<p class=MsoNormal>                <topology-file>
- should be in the format indicated by ibnetdiscover<o:p></o:p></p>

<p class=MsoNormal>                ca_name
- the name indicated by ibstat<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Index:
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors.c<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>---
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors.c    (revision
0)<o:p></o:p></p>

<p class=MsoNormal>+++
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors.c (revision 6180)<o:p></o:p></p>

<p class=MsoNormal>@@ -0,0 +1,363 @@<o:p></o:p></p>

<p class=MsoNormal>+/*<o:p></o:p></p>

<p class=MsoNormal>+ * Copyright (c) 2004-2008 Voltaire Inc.  All rights
reserved.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ * This software is available to you under a choice of one
of two<o:p></o:p></p>

<p class=MsoNormal>+ * licenses.  You may choose to be licensed under the
terms of the GNU<o:p></o:p></p>

<p class=MsoNormal>+ * General Public License (GPL) Version 2, available from
the file<o:p></o:p></p>

<p class=MsoNormal>+ * COPYING in the main directory of this source tree, or
the<o:p></o:p></p>

<p class=MsoNormal>+ * OpenIB.org BSD license below:<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *     Redistribution and use in source
and binary forms, with or<o:p></o:p></p>

<p class=MsoNormal>+ *     without modification, are
permitted provided that the following<o:p></o:p></p>

<p class=MsoNormal>+ *     conditions are met:<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *      - Redistributions of
source code must retain the above<o:p></o:p></p>

<p class=MsoNormal>+ *        copyright
notice, this list of conditions and the following<o:p></o:p></p>

<p class=MsoNormal>+ *        disclaimer.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *      - Redistributions in
binary form must reproduce the above<o:p></o:p></p>

<p class=MsoNormal>+ *        copyright
notice, this list of conditions and the following<o:p></o:p></p>

<p class=MsoNormal>+ *        disclaimer in
the documentation and/or other materials<o:p></o:p></p>

<p class=MsoNormal>+ *        provided with
the distribution.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND,<o:p></o:p></p>

<p class=MsoNormal>+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF<o:p></o:p></p>

<p class=MsoNormal>+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND<o:p></o:p></p>

<p class=MsoNormal>+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS<o:p></o:p></p>

<p class=MsoNormal>+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN<o:p></o:p></p>

<p class=MsoNormal>+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
OF OR IN<o:p></o:p></p>

<p class=MsoNormal>+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>

<p class=MsoNormal>+ * SOFTWARE.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ */<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#if HAVE_CONFIG_H<o:p></o:p></p>

<p class=MsoNormal>+#  include <config.h><o:p></o:p></p>

<p class=MsoNormal>+#endif                                                                /*
HAVE_CONFIG_H */<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#include <stdio.h><o:p></o:p></p>

<p class=MsoNormal>+#include <stdlib.h><o:p></o:p></p>

<p class=MsoNormal>+#include <string.h><o:p></o:p></p>

<p class=MsoNormal>+#include <windows.h><o:p></o:p></p>

<p class=MsoNormal>+#include <strsafe.h><o:p></o:p></p>

<p class=MsoNormal>+#include <infiniband/umad.h><o:p></o:p></p>

<p class=MsoNormal>+#include <infiniband/mad.h><o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#include "ibdiag_common.h"<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#define X_PARAMLEN 254<o:p></o:p></p>

<p class=MsoNormal>+#define X_LINELEN 4096<o:p></o:p></p>

<p class=MsoNormal>+#define X_TEMPFILE "ibnetdiscoverTMP.txt"<o:p></o:p></p>

<p class=MsoNormal>+#define X_TEMPFILELEN 20<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+static void ShowUsage()<o:p></o:p></p>

<p class=MsoNormal>+{<o:p></o:p></p>

<p class=MsoNormal>+    printf( "ibclearerrors [-h]
[<topology-file>" \<o:p></o:p></p>

<p class=MsoNormal>+                
"| -C ca_name -P ca_port -t timeout_ms]\n"<o:p></o:p></p>

<p class=MsoNormal>+        "\th\t\t -
Help (displays this message)\n"<o:p></o:p></p>

<p class=MsoNormal>+       
"\t<topology-file>\t - should be in the format indicated by
ibnetdiscover\n"<o:p></o:p></p>

<p class=MsoNormal>+       
"\tca_name\t\t - the name indicated by ibstat\n");<o:p></o:p></p>

<p class=MsoNormal>+             exit(1);<o:p></o:p></p>

<p class=MsoNormal>+}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+static void printCopyError(char* copiedVal, HRESULT hr)<o:p></o:p></p>

<p class=MsoNormal>+{            <o:p></o:p></p>

<p class=MsoNormal>+             if
(hr == ERROR_INSUFFICIENT_BUFFER)<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             printf("The
%s length is too long %08x.\n", copiedVal, hr);<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+             else
<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             printf("Error
in getting the %s %08x.\n", copiedVal, hr);<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+             exit(-1);<o:p></o:p></p>

<p class=MsoNormal>+}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+static int clearErrors(char* caInfo, char* lid, char* port,
BOOL all)<o:p></o:p></p>

<p class=MsoNormal>+{<o:p></o:p></p>

<p class=MsoNormal>+             char
usedCommand [ X_LINELEN ];<o:p></o:p></p>

<p class=MsoNormal>+             HRESULT
hr;<o:p></o:p></p>

<p class=MsoNormal>+             <o:p></o:p></p>

<p class=MsoNormal>+             if
((caInfo == NULL) || <o:p></o:p></p>

<p class=MsoNormal>+                             (lid
== NULL) || (strlen(lid) <= 0)||<o:p></o:p></p>

<p class=MsoNormal>+                             (port
== NULL) || (strlen(port) <= 0))<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             return
1;              <o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             hr
= StringCchPrintfEx(usedCommand,X_LINELEN,NULL,NULL,0,<o:p></o:p></p>

<p class=MsoNormal>+                      
"perfquery %s -R %s %s %s 0x0fff",<o:p></o:p></p>

<p class=MsoNormal>+                      
caInfo,<o:p></o:p></p>

<p class=MsoNormal>+                      
(all ? "-a" : ""),<o:p></o:p></p>

<p class=MsoNormal>+                                                                                             lid,
<o:p></o:p></p>

<p class=MsoNormal>+                                                                                             port);<o:p></o:p></p>

<p class=MsoNormal>+             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             StringCchPrintfEx(usedCommand,X_LINELEN,NULL,NULL,0,"used
Command");<o:p></o:p></p>

<p class=MsoNormal>+                             printCopyError(usedCommand,hr);<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             if
(system(usedCommand))<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             return
1;<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+             else<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             return
0;<o:p></o:p></p>

<p class=MsoNormal>+             }              <o:p></o:p></p>

<p class=MsoNormal>+}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+static char* getLid(char* line, char* lidPrefix) <o:p></o:p></p>

<p class=MsoNormal>+{<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             //Get
lid start position<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             char*
lidStart = strstr(line, lidPrefix) + strlen(lidPrefix); <o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             //Get
the string from lidStart until the first position of a blank = exactly the lid<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             char*
lid = strtok (lidStart," \t"); <o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             return
lid;<o:p></o:p></p>

<p class=MsoNormal>+}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+int __cdecl main(int argc, char* argv[])<o:p></o:p></p>

<p class=MsoNormal>+{<o:p></o:p></p>

<p class=MsoNormal>+             char
topofile[X_PARAMLEN];<o:p></o:p></p>

<p class=MsoNormal>+             BOOL
topologyGiven = 0;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             char
caInfo[X_LINELEN];<o:p></o:p></p>

<p class=MsoNormal>+             BOOL
caInfoGiven = 0;<o:p></o:p></p>

<p class=MsoNormal>+             <o:p></o:p></p>

<p class=MsoNormal>+             int
nodes = 0;<o:p></o:p></p>

<p class=MsoNormal>+             int
errors = 0;<o:p></o:p></p>

<p class=MsoNormal>+             <o:p></o:p></p>

<p class=MsoNormal>+             FILE
*fp;<o:p></o:p></p>

<p class=MsoNormal>+             char
line[X_LINELEN];<o:p></o:p></p>

<p class=MsoNormal>+             char
templine[X_LINELEN];<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             int
i;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             char
type[10];<o:p></o:p></p>

<p class=MsoNormal>+             char
usedCommand[X_LINELEN];<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             HRESULT
hr;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             topofile[0]
= '\0';<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             for(
i = 1; i < argc; i++ )<o:p></o:p></p>

<p class=MsoNormal>+    {<o:p></o:p></p>

<p class=MsoNormal>+        char* pArg;<o:p></o:p></p>

<p class=MsoNormal>+                             char*
nextArg;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+        pArg = argv[i];<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                             if
(( *pArg != '-' ) && ( *pArg != '/' ))<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(strlen(topofile) == 0) <o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             hr
=
HRESULT_CODE(StringCchCopyNExA(topofile,X_PARAMLEN,pArg,X_PARAMLEN,NULL,NULL,0));<o:p></o:p></p>

<p class=MsoNormal>+                                                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                                             StringCchPrintfEx(topofile,X_PARAMLEN,NULL,NULL,0,"topofile");<o:p></o:p></p>

<p class=MsoNormal>+                                                                             printCopyError(topofile,hr);<o:p></o:p></p>

<p class=MsoNormal>+                                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                                             topologyGiven
= 1;<o:p></o:p></p>

<p class=MsoNormal>+                                                             continue;<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             else<o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             ShowUsage();<o:p></o:p></p>

<p class=MsoNormal>+               
break;<o:p></o:p></p>

<p class=MsoNormal>+                                             }                              <o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+        // Skip leading
dashes<o:p></o:p></p>

<p class=MsoNormal>+        while(( *pArg ==
'-' ) || ( *pArg == '/' ))<o:p></o:p></p>

<p class=MsoNormal>+           
pArg++;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+        switch( *pArg )<o:p></o:p></p>

<p class=MsoNormal>+        {<o:p></o:p></p>

<p class=MsoNormal>+        case 'h':<o:p></o:p></p>

<p class=MsoNormal>+                             case
'?':<o:p></o:p></p>

<p class=MsoNormal>+                                             ShowUsage();<o:p></o:p></p>

<p class=MsoNormal>+                                             break;<o:p></o:p></p>

<p class=MsoNormal>+                             case
'P':<o:p></o:p></p>

<p class=MsoNormal>+                             case
'C':<o:p></o:p></p>

<p class=MsoNormal>+                             case
't':<o:p></o:p></p>

<p class=MsoNormal>+           
if( ++i == argc )<o:p></o:p></p>

<p class=MsoNormal>+           
{<o:p></o:p></p>

<p class=MsoNormal>+                                                             ShowUsage();<o:p></o:p></p>

<p class=MsoNormal>+               
break;<o:p></o:p></p>

<p class=MsoNormal>+           
}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                                             nextArg
= argv[i];<o:p></o:p></p>

<p class=MsoNormal>+           
if( *nextArg == '-' )<o:p></o:p></p>

<p class=MsoNormal>+           
{<o:p></o:p></p>

<p class=MsoNormal>+                                                             ShowUsage();<o:p></o:p></p>

<p class=MsoNormal>+               
break;<o:p></o:p></p>

<p class=MsoNormal>+           
}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(!caInfoGiven)<o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             StringCchPrintfEx(caInfo,X_LINELEN,NULL,NULL,0,"");<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             hr
= StringCchPrintfEx(  caInfo,X_LINELEN,NULL,NULL,0,<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                             "%s
-%s %s",caInfo,pArg,nextArg);<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             StringCchPrintfEx(caInfo,X_LINELEN,NULL,NULL,0,"caInfo");<o:p></o:p></p>

<p class=MsoNormal>+                                                             printCopyError(caInfo,hr);<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             caInfoGiven
= 1;<o:p></o:p></p>

<p class=MsoNormal>+           
break;<o:p></o:p></p>

<p class=MsoNormal>+        default:<o:p></o:p></p>

<p class=MsoNormal>+           
printf( "Unknown parameter %s\n", pArg );<o:p></o:p></p>

<p class=MsoNormal>+           
ShowUsage();<o:p></o:p></p>

<p class=MsoNormal>+        }<o:p></o:p></p>

<p class=MsoNormal>+    }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             //
If a topology file was not given we will create one<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             if
(!topologyGiven)<o:p></o:p></p>

<p class=MsoNormal>+             {                              <o:p></o:p></p>

<p class=MsoNormal>+                             DWORD
nPathLength = X_LINELEN+X_TEMPFILELEN;<o:p></o:p></p>

<p class=MsoNormal>+                             char
path[X_LINELEN+X_TEMPFILELEN];<o:p></o:p></p>

<p class=MsoNormal>+                             int
reqLen = GetTempPath(nPathLength, path);<o:p></o:p></p>

<p class=MsoNormal>+                             if
(reqLen > X_LINELEN)<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             printf("Obtaining
a path to create temporary files failed\n");<o:p></o:p></p>

<p class=MsoNormal>+                                             exit(-1);<o:p></o:p></p>

<p class=MsoNormal>+                             }              <o:p></o:p></p>

<p class=MsoNormal>+                             <o:p></o:p></p>

<p class=MsoNormal>+                             hr
= StringCchPrintfEx(  topofile,X_LINELEN,NULL,NULL,0,<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                             "%s%s",
path, X_TEMPFILE);<o:p></o:p></p>

<p class=MsoNormal>+                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             StringCchPrintfEx(topofile,X_LINELEN,NULL,NULL,0,"topofile");<o:p></o:p></p>

<p class=MsoNormal>+                                             printCopyError(topofile,hr);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                             hr
= StringCchPrintfEx(  usedCommand,X_LINELEN,NULL,NULL,0,<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                             "ibnetdiscover
%s > %s", <o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                             caInfoGiven
? caInfo : "", <o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                             topofile
);<o:p></o:p></p>

<p class=MsoNormal>+                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             StringCchPrintfEx(usedCommand,X_LINELEN,NULL,NULL,0,"used
Command");<o:p></o:p></p>

<p class=MsoNormal>+                                             printCopyError(usedCommand,hr);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+                             <o:p></o:p></p>

<p class=MsoNormal>+                             if
(system(usedCommand))<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             printf("ibnetdiscover
execution failed (%d)\n", GetLastError() );<o:p></o:p></p>

<p class=MsoNormal>+                                             exit(1);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             fp=fopen(topofile,
"r");<o:p></o:p></p>

<p class=MsoNormal>+             if(fp
== NULL)<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+               
printf("Cannot open file.\n");<o:p></o:p></p>

<p class=MsoNormal>+               
exit(1);<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             while
(fgets(line, X_LINELEN, fp) != NULL) <o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             if
(strstr( line, "Ca" ) == line || <o:p></o:p></p>

<p class=MsoNormal>+                                             strstr(
line, "Rt" ) == line ||<o:p></o:p></p>

<p class=MsoNormal>+                                             strstr(
line, "Switch" ) == line)<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             nodes++;<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             //<o:p></o:p></p>

<p class=MsoNormal>+                                             //First
word is the type (one of the above)<o:p></o:p></p>

<p class=MsoNormal>+                                             //<o:p></o:p></p>

<p class=MsoNormal>+                                             hr
=
HRESULT_CODE(StringCchCopyNExA(templine,X_LINELEN,line,X_LINELEN,NULL,NULL,0));<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             StringCchPrintfEx(templine,X_LINELEN,NULL,NULL,0,"inner
topology line");<o:p></o:p></p>

<p class=MsoNormal>+                                                             printCopyError(templine,hr);<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             
<o:p></o:p></p>

<p class=MsoNormal>+                                             hr
= HRESULT_CODE(StringCchCopyNExA(type,10,strtok (templine,"
\t"),10,NULL,NULL,0));<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             StringCchPrintfEx(type,10,NULL,NULL,0,"type");<o:p></o:p></p>

<p class=MsoNormal>+                                                             printCopyError(type,hr);<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                             <o:p></o:p></p>

<p class=MsoNormal>+                             if
(strstr( line, "Switch" ) == line)<o:p></o:p></p>

<p class=MsoNormal>+                             {                                              <o:p></o:p></p>

<p class=MsoNormal>+                                             errors
+= clearErrors(     caInfoGiven ? caInfo :
"",  <o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                             getLid(line,"port
0 lid "), <o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                             "255",
<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                             1
);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                             if
(*line == '[')<o:p></o:p></p>

<p class=MsoNormal>+                             {
<o:p></o:p></p>

<p class=MsoNormal>+                                             char*
port;<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             hr
=
HRESULT_CODE(StringCchCopyNExA(templine,X_LINELEN,line,X_LINELEN,NULL,NULL,0));<o:p></o:p></p>

<p class=MsoNormal>+                                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             StringCchPrintfEx(templine,X_LINELEN,NULL,NULL,0,"inner
topology line");<o:p></o:p></p>

<p class=MsoNormal>+                                                             printCopyError(templine,hr);<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             port
= strtok (templine,"[]"); //First word is the port in []<o:p></o:p></p>

<p class=MsoNormal>+                                             <o:p></o:p></p>

<p class=MsoNormal>+                                             if
(strcmp(type,"Switch") != 0) //Got it from the previous line<o:p></o:p></p>

<p class=MsoNormal>+                                             {<o:p></o:p></p>

<p class=MsoNormal>+                                                             errors
+= clearErrors(     caInfoGiven ? caInfo : "",<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                                             getLid(line,"
lid "),<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                                             port,<o:p></o:p></p>

<p class=MsoNormal>+                                                                                                                                                             0
);<o:p></o:p></p>

<p class=MsoNormal>+                                             }<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+                             if
(strstr( line, "ib" ) == line)<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             printf("%s\n",
line);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+                             <o:p></o:p></p>

<p class=MsoNormal>+             printf
("\n## Summary: %d nodes cleared %d errors\n", nodes, errors);<o:p></o:p></p>

<p class=MsoNormal>+             fclose
(fp);<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             //
If we created our own topology file - we sould delete it<o:p></o:p></p>

<p class=MsoNormal>+             //<o:p></o:p></p>

<p class=MsoNormal>+             if
(strstr( topofile, X_TEMPFILE ))<o:p></o:p></p>

<p class=MsoNormal>+             {<o:p></o:p></p>

<p class=MsoNormal>+                             hr
= StringCchPrintfEx(  usedCommand,X_LINELEN,NULL,NULL,0, "del
%s", topofile );<o:p></o:p></p>

<p class=MsoNormal>+                             if
(FAILED(hr))   <o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             StringCchPrintfEx(usedCommand,X_LINELEN,NULL,NULL,0,"used
Command");<o:p></o:p></p>

<p class=MsoNormal>+                                             printCopyError(usedCommand,hr);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+                             <o:p></o:p></p>

<p class=MsoNormal>+                             if
(system(usedCommand))<o:p></o:p></p>

<p class=MsoNormal>+                             {<o:p></o:p></p>

<p class=MsoNormal>+                                             printf("Temporary
file cleanup failed\n");<o:p></o:p></p>

<p class=MsoNormal>+                                             exit(1);<o:p></o:p></p>

<p class=MsoNormal>+                             }<o:p></o:p></p>

<p class=MsoNormal>+             }<o:p></o:p></p>

<p class=MsoNormal>+             <o:p></o:p></p>

<p class=MsoNormal>+             return
0;<o:p></o:p></p>

<p class=MsoNormal>+}<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>Index:
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/ibclearerrors.rc<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>---
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/ibclearerrors.rc      (revision
0)<o:p></o:p></p>

<p class=MsoNormal>+++
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/ibclearerrors.rc   (revision
6180)<o:p></o:p></p>

<p class=MsoNormal>@@ -0,0 +1,47 @@<o:p></o:p></p>

<p class=MsoNormal>+/*<o:p></o:p></p>

<p class=MsoNormal>+ * Copyright (c) 2009 Intel Corporation.  All rights
reserved.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ * This software is available to you under the OpenIB.org
BSD license<o:p></o:p></p>

<p class=MsoNormal>+ * below:<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *     Redistribution and use in source
and binary forms, with or<o:p></o:p></p>

<p class=MsoNormal>+ *     without modification, are
permitted provided that the following<o:p></o:p></p>

<p class=MsoNormal>+ *     conditions are met:<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *      - Redistributions of
source code must retain the above<o:p></o:p></p>

<p class=MsoNormal>+ *        copyright
notice, this list of conditions and the following<o:p></o:p></p>

<p class=MsoNormal>+ *        disclaimer.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ *      - Redistributions in
binary form must reproduce the above<o:p></o:p></p>

<p class=MsoNormal>+ *        copyright
notice, this list of conditions and the following<o:p></o:p></p>

<p class=MsoNormal>+ *        disclaimer in
the documentation and/or other materials<o:p></o:p></p>

<p class=MsoNormal>+ *        provided with
the distribution.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND,<o:p></o:p></p>

<p class=MsoNormal>+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF<o:p></o:p></p>

<p class=MsoNormal>+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND<o:p></o:p></p>

<p class=MsoNormal>+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS<o:p></o:p></p>

<p class=MsoNormal>+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN<o:p></o:p></p>

<p class=MsoNormal>+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
OF OR IN<o:p></o:p></p>

<p class=MsoNormal>+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>

<p class=MsoNormal>+ * SOFTWARE.<o:p></o:p></p>

<p class=MsoNormal>+ *<o:p></o:p></p>

<p class=MsoNormal>+ * $Id$<o:p></o:p></p>

<p class=MsoNormal>+ */<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#include <oib_ver.h><o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#define VER_FILETYPE                                                VFT_APP<o:p></o:p></p>

<p class=MsoNormal>+#define VER_FILESUBTYPE                                        VFT2_UNKNOWN<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#ifdef DBG<o:p></o:p></p>

<p class=MsoNormal>+#define VER_FILEDESCRIPTION_STR    "InfiniBand
Fabric Clear Errors(Debug)"<o:p></o:p></p>

<p class=MsoNormal>+#else<o:p></o:p></p>

<p class=MsoNormal>+#define VER_FILEDESCRIPTION_STR    "InfiniBand
Fabric Clear Errors"<o:p></o:p></p>

<p class=MsoNormal>+#endif<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#define VER_INTERNALNAME_STR                      "ibclearerrors.exe"<o:p></o:p></p>

<p class=MsoNormal>+#define VER_ORIGINALFILENAME_STR              "ibclearerrors.exe"<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+#include <common.ver><o:p></o:p></p>

<p class=MsoNormal>Index:
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/SOURCES<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>---
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/SOURCES  (revision
0)<o:p></o:p></p>

<p class=MsoNormal>+++
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/SOURCES               (revision
6180)<o:p></o:p></p>

<p class=MsoNormal>@@ -0,0 +1,31 @@<o:p></o:p></p>

<p class=MsoNormal>+TARGETNAME = ibclearerrors<o:p></o:p></p>

<p class=MsoNormal>+TARGETPATH = ..\..\..\..\bin\user\obj$(BUILD_ALT_DIR)<o:p></o:p></p>

<p class=MsoNormal>+TARGETTYPE = PROGRAM<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+UMTYPE = console<o:p></o:p></p>

<p class=MsoNormal>+UMENTRY = main<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+USE_MSVCRT = 1<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+SOURCES = ..\ibclearerrors.c ibclearerrors.rc<o:p></o:p></p>

<p class=MsoNormal>+             <o:p></o:p></p>

<p class=MsoNormal>+INCLUDES = ..\..\include;..\..\include\windows;\<o:p></o:p></p>

<p class=MsoNormal>+                               
..\..\..\..\ulp\libibmad\include;\<o:p></o:p></p>

<p class=MsoNormal>+                               
..\..\..\..\ulp\libibumad\include;\<o:p></o:p></p>

<p class=MsoNormal>+                               
..\..\..\..\inc;..\..\..\..\inc\user;\<o:p></o:p></p>

<p class=MsoNormal>+                               
..\..\..\..\inc\user\linux;<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+C_DEFINES = $(C_DEFINES) /DHAVE_CONFIG_H<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+TARGETLIBS = \<o:p></o:p></p>

<p class=MsoNormal>+             $(SDK_LIB_PATH)\kernel32.lib  \<o:p></o:p></p>

<p class=MsoNormal>+             $(SDK_LIB_PATH)\ws2_32.lib                     \<o:p></o:p></p>

<p class=MsoNormal>+!if $(FREEBUILD)<o:p></o:p></p>

<p class=MsoNormal>+             $(TARGETPATH)\*\libibmad.lib \<o:p></o:p></p>

<p class=MsoNormal>+             $(TARGETPATH)\*\libibumad.lib               <o:p></o:p></p>

<p class=MsoNormal>+!else<o:p></o:p></p>

<p class=MsoNormal>+             $(TARGETPATH)\*\libibmadd.lib               \<o:p></o:p></p>

<p class=MsoNormal>+             $(TARGETPATH)\*\libibumadd.lib            <o:p></o:p></p>

<p class=MsoNormal>+!endif<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+MSC_WARNING_LEVEL = /W3 /WX /wd4007<o:p></o:p></p>

<p class=MsoNormal>Index:
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/makefile<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>---
D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/makefile   (revision
0)<o:p></o:p></p>

<p class=MsoNormal>+++ D:/Windows/MLNX_VPI/tools/infiniband-diags/src/ibclearerrors/makefile                (revision
6180)<o:p></o:p></p>

<p class=MsoNormal>@@ -0,0 +1,7 @@<o:p></o:p></p>

<p class=MsoNormal>+#<o:p></o:p></p>

<p class=MsoNormal>+# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you
want to add a new source<o:p></o:p></p>

<p class=MsoNormal>+# file to this component.  This file merely indirects
to the real make file<o:p></o:p></p>

<p class=MsoNormal>+# that is shared by all the driver components of the OpenIB
Windows project.<o:p></o:p></p>

<p class=MsoNormal>+#<o:p></o:p></p>

<p class=MsoNormal>+<o:p></o:p></p>

<p class=MsoNormal>+!INCLUDE ..\..\..\..\inc\openib.def<o:p></o:p></p>

<p class=MsoNormal>Index: D:/Windows/MLNX_VPI/tools/infiniband-diags/src/dirs<o:p></o:p></p>

<p class=MsoNormal>===================================================================<o:p></o:p></p>

<p class=MsoNormal>--- D:/Windows/MLNX_VPI/tools/infiniband-diags/src/dirs         (revision
6179)<o:p></o:p></p>

<p class=MsoNormal>+++ D:/Windows/MLNX_VPI/tools/infiniband-diags/src/dirs      (revision
6180)<o:p></o:p></p>

<p class=MsoNormal>@@ -16,4 +16,5 @@<o:p></o:p></p>

<p class=MsoNormal>                sminfo                  \<o:p></o:p></p>

<p class=MsoNormal>                smpdump                           \<o:p></o:p></p>

<p class=MsoNormal>                smpquery           \<o:p></o:p></p>

<p class=MsoNormal>-              vendstat<o:p></o:p></p>

<p class=MsoNormal>\ No newline at end of file<o:p></o:p></p>

<p class=MsoNormal>+             vendstat       
\<o:p></o:p></p>

<p class=MsoNormal>+        ibclearerrors<o:p></o:p></p>

<p class=MsoNormal>\ No newline at end of file<o:p></o:p></p>

</div>

</body>

</html>