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

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

Reply via email to