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