I am not sure when the "port guid output" format change to ibnetdiscover happened, but I just realized that switch to switch links were not being parsed correctly by IBswcountlimits.pm. This caused issues with some of the perl diags. I have fixed this. Furthermore, Erez mentioned that he would like port guid output so I threw that option in as well. (Since I have to parse that info out of ibnetdiscover now.)
One might wonder why I did not catch this before? If you mainly test on a 1
switch system you don't get to see what switch to switch links look like in
diag output... :-( I have learned my lesson, sorry.
Sasha, this needs to be in 1.3 as well.
Sorry, :-(
Ira
>From 89887aff392b0f40acf4035c19e06359271dfe6a Mon Sep 17 00:00:00 2001
From: Ira K. Weiny <[EMAIL PROTECTED]>
Date: Thu, 24 Jan 2008 18:50:38 -0800
Subject: [PATCH] infiniband-diags/scripts/iblinkinfo.pl: Fix switch to switch
output with new
ibnetdiscover output.
ibnetdiscover now prints port guids. This format change cause the regex to
break when parsing switch to switch links. Fix this by parsing for the
remote port guid. And while we are at it add an option to print the port
guids parsed.
Signed-off-by: Ira K. Weiny <[EMAIL PROTECTED]>
---
infiniband-diags/scripts/IBswcountlimits.pm | 41 ++++++++++++++++----------
infiniband-diags/scripts/iblinkinfo.pl | 9 ++++-
2 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/infiniband-diags/scripts/IBswcountlimits.pm
b/infiniband-diags/scripts/IBswcountlimits.pm
index 6985750..c698ed1 100755
--- a/infiniband-diags/scripts/IBswcountlimits.pm
+++ b/infiniband-diags/scripts/IBswcountlimits.pm
@@ -288,62 +288,71 @@ sub get_link_ends
if ( $in_switch eq "yes" )
{
my $rec = undef;
- if ($line =~
/^\[(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\(.+\)\s+#.*\"(.*)\"\.* lid (\d+).*/)
+ if ($line =~
/^\[(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\](\(.+\))?\s+#.*\"(.*)\"\.* lid (\d+).*/)
{
$loc_port = $1;
my $rem_guid = $2;
my $rem_port = $3;
- my $rem_desc = $4;
- my $rem_lid = $5;
+ my $rem_port_guid = $4;
+ my $rem_desc = $5;
+ my $rem_lid = $6;
$rec = { loc_guid => "0x$guid", loc_port => $loc_port,
loc_ext_port => "",
loc_desc => $desc, loc_sw_lid => $loc_sw_lid,
rem_guid => "0x$rem_guid", rem_lid => $rem_lid,
- rem_port => $rem_port, rem_ext_port => "", rem_desc =>
$rem_desc };
+ rem_port => $rem_port, rem_ext_port => "", rem_desc =>
$rem_desc,
+ rem_port_guid => $rem_port_guid };
}
- if ($line =~ /^\[(\d+)\]\[ext
(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\(.+\)\s+#.*\"(.*)\"\.* lid (\d+).*/)
+ if ($line =~ /^\[(\d+)\]\[ext
(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\](\(.+\))?\s+#.*\"(.*)\"\.* lid (\d+).*/)
{
$loc_port = $1;
my $loc_ext_port = $2;
my $rem_guid = $3;
my $rem_port = $4;
- my $rem_desc = $5;
- my $rem_lid = $6;
+ my $rem_port_guid = $5;
+ my $rem_desc = $6;
+ my $rem_lid = $7;
$rec = { loc_guid => "0x$guid", loc_port => $loc_port,
loc_ext_port => $loc_ext_port,
loc_desc => $desc, loc_sw_lid => $loc_sw_lid,
rem_guid => "0x$rem_guid", rem_lid => $rem_lid,
- rem_port => $rem_port, rem_ext_port => "", rem_desc =>
$rem_desc };
+ rem_port => $rem_port, rem_ext_port => "", rem_desc =>
$rem_desc,
+ rem_port_guid => $rem_port_guid };
}
- if ($line =~ /^\[(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\[ext
(\d+)\]\(.+\)\s+#.*\"(.*)\"\.* lid (\d+).*/)
+ if ($line =~ /^\[(\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\[ext
(\d+)\](\(.+\))?\s+#.*\"(.*)\"\.* lid (\d+).*/)
{
$loc_port = $1;
my $rem_guid = $2;
my $rem_port = $3;
my $rem_ext_port = $4;
- my $rem_desc = $5;
- my $rem_lid = $6;
+ my $rem_port_guid = $5;
+ my $rem_desc = $6;
+ my $rem_lid = $7;
$rec = { loc_guid => "0x$guid", loc_port => $loc_port,
loc_ext_port => "",
loc_desc => $desc, loc_sw_lid => $loc_sw_lid,
rem_guid => "0x$rem_guid", rem_lid => $rem_lid,
rem_port => $rem_port, rem_ext_port => $rem_ext_port,
- rem_desc => $rem_desc };
+ rem_desc => $rem_desc,
+ rem_port_guid => $rem_port_guid };
}
- if ($line =~ /^\[(\d+)\]\[ext (\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\[ext
(\d+)\]\(.+\)\s+#.*\"(.*)\"\.* lid (\d+).*/)
+ if ($line =~ /^\[(\d+)\]\[ext (\d+)\]\s+\"[HSR]-(.+)\"\[(\d+)\]\[ext
(\d+)\](\(.+\))?\s+#.*\"(.*)\"\.* lid (\d+).*/)
{
$loc_port = $1;
my $loc_ext_port = $2;
my $rem_guid = $3;
my $rem_port = $4;
my $rem_ext_port = $5;
- my $rem_desc = $6;
- my $rem_lid = $7;
+ my $rem_port_guid = $6;
+ my $rem_desc = $7;
+ my $rem_lid = $8;
$rec = { loc_guid => "0x$guid", loc_port => $loc_port,
loc_ext_port => $loc_ext_port,
loc_desc => $desc, loc_sw_lid => $loc_sw_lid,
rem_guid => "0x$rem_guid", rem_lid => $rem_lid,
rem_port => $rem_port, rem_ext_port => $rem_ext_port,
- rem_desc => $rem_desc };
+ rem_desc => $rem_desc,
+ rem_port_guid => $rem_port_guid };
}
if ($rec)
{
+ $rec->{rem_port_guid} =~ s/\((.*)\)/$1/;
$IBswcountlimits::link_ends{"0x$guid"}{$loc_port} = $rec;
}
}
diff --git a/infiniband-diags/scripts/iblinkinfo.pl
b/infiniband-diags/scripts/iblinkinfo.pl
index 6d02eac..764e92d 100755
--- a/infiniband-diags/scripts/iblinkinfo.pl
+++ b/infiniband-diags/scripts/iblinkinfo.pl
@@ -54,6 +54,7 @@ sub usage_and_exit
print " -c print port capabilities (enabled/supported values)\n";
print " -C <ca_name> use selected Channel Adaptor name for queries\n";
print " -P <ca_port> use selected channel adaptor port for queries\n";
+ print " -g print port guids instead of node guids\n";
exit 0;
}
@@ -66,9 +67,10 @@ my $print_extended_cap = undef;
my $only_down_links = undef;
my $ca_name = "";
my $ca_port = "";
+my $print_port_guids = undef;
chomp $argv0;
-if (!getopts("hcpldRS:C:P:")) { usage_and_exit $argv0; }
+if (!getopts("hcpldRS:C:P:g")) { usage_and_exit $argv0; }
if (defined $Getopt::Std::opt_h) { usage_and_exit $argv0; }
if (defined $Getopt::Std::opt_R) { $regenerate_map = $Getopt::Std::opt_R; }
if (defined $Getopt::Std::opt_S) { $single_switch = $Getopt::Std::opt_S; }
@@ -78,6 +80,7 @@ if (defined $Getopt::Std::opt_p) { $print_add_switch =
$Getopt::Std::opt_p; }
if (defined $Getopt::Std::opt_c) { $print_extended_cap = $Getopt::Std::opt_c; }
if (defined $Getopt::Std::opt_C) { $ca_name = $Getopt::Std::opt_C; }
if (defined $Getopt::Std::opt_P) { $ca_port = $Getopt::Std::opt_P; }
+if (defined $Getopt::Std::opt_g) { $print_port_guids = $Getopt::Std::opt_g; }
my $extra_smpquery_params = get_ca_name_port_param_string($ca_name, $ca_port);
@@ -145,7 +148,6 @@ sub main
if ($line =~ /^VLStallCount:\.+(.*)/) { $vl_stall = $1; }
if ($line =~ /^PhysLinkState:\.+(.*)/) { $phy_link_state =
$1; }
}
- my $rem_guid = $hr->{rem_guid};
my $rem_port = $hr->{rem_port};
my $rem_lid = $hr->{rem_lid};
my $rem_speed_sup = "";
@@ -216,6 +218,9 @@ sub main
{
my $line_begin = sprintf ("%18s \"%30s\"%s", $switch,
$hr->{loc_desc}, $pkt_life_prompt);
my $ext_guid = sprintf ("%18s", $hr->{rem_guid});
+ if ($print_port_guids && $hr->{rem_port_guid} ne "") {
+ $ext_guid = sprintf ("0x%016s",
$hr->{rem_port_guid});
+ }
push (@output_lines, sprintf ("%s %6s %4s[%2s]
==%s%s==> %18s %6s %4s[%2s] \"%s\" ( %s %s)\n",
$line_begin,
$hr->{loc_sw_lid}, $port, $hr->{loc_ext_port},
--
1.5.1
0001-infiniband-diags-scripts-iblinkinfo.pl-Fix-switch-t.patch
Description: Binary data
_______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
