[ofa-general] [PATCH] iblinkinfo: warn only on degragded link speed, width

Arthur Kepner akepner at sgi.com
Wed Jul 29 14:19:22 PDT 2009


iblinkinfo.pl warns when the link speed (or width) is higher than
one of the supported values. For example, we're seeing:

168   11[  ]  ==( 4X 10.0 Gbps Active /   LinkUp)==>     169   \
	11[  ] "Infiniscale-IV Mellanox Technologies" (  Could be 5.0 Gbps)

It's complaining that 10Gbps was negotiated even though 5.0Gbps is
available, which I doubt is the intended behavior.

The following patch causes iblinkinfo to warn only when the link
speed (or width) is lower than the greatest common value supported
by both ports.

Signed-off-by: Arthur Kepner <akepner at sgi.com>
---

diff -rup a/scripts/iblinkinfo.pl b/scripts/iblinkinfo.pl
--- a/scripts/iblinkinfo.pl	2009-07-29 13:16:02.889073624 -0700
+++ b/scripts/iblinkinfo.pl	2009-07-29 13:17:24.902170284 -0700
@@ -168,9 +168,11 @@ sub main
 			}
 			my @lines          = split("\n", $data);
 			my $speed          = "";
+			my $nspeed         = -1; # in Gbps
 			my $speed_sup      = "";
 			my $speed_enable   = "";
 			my $width          = "";
+			my $nwidth         = -1;
 			my $width_sup      = "";
 			my $width_enable   = "";
 			my $state          = "";
@@ -179,12 +181,18 @@ sub main
 			my $phy_link_state = "";

 			foreach my $line (@lines) {
-				if ($line =~ /^LinkSpeedActive:\.+(.*)/) { $speed = $1; }
+				if ($line =~ /^LinkSpeedActive:\.+(\d+\.\d+)(.*)/) {
+					$nspeed = $1;
+					$speed = $1.$2;
+				}
 				if ($line =~ /^LinkSpeedEnabled:\.+(.*)/) {
 					$speed_enable = $1;
 				}
 				if ($line =~ /^LinkSpeedSupported:\.+(.*)/) { $speed_sup = $1; }
-				if ($line =~ /^LinkWidthActive:\.+(.*)/)    { $width     = $1; }
+				if ($line =~ /^LinkWidthActive:\.+(\d+)(.*)/) {
+					$nwidth     = $1;
+					$width = $1.$2;
+				}
 				if ($line =~ /^LinkWidthEnabled:\.+(.*)/) {
 					$width_enable = $1;
 				}
@@ -243,19 +251,19 @@ sub main
 				if ($rem_width_enable ne "" && $rem_width_sup ne "") {
 					if (   $width_enable =~ /12X/
 						&& $rem_width_enable =~ /12X/
-						&& $width !~ /12X/)
+						&& $nwidth < 12)
 					{
 						$width_msg = "Could be 12X";
 					} else {
 						if (   $width_enable =~ /8X/
 							&& $rem_width_enable =~ /8X/
-							&& $width !~ /8X/)
+							&& $nwidth < 8)
 						{
 							$width_msg = "Could be 8X";
 						} else {
 							if (   $width_enable =~ /4X/
 								&& $rem_width_enable =~ /4X/
-								&& $width !~ /4X/)
+								&& $nwidth < 4)
 							{
 								$width_msg = "Could be 4X";
 							}
@@ -265,13 +273,13 @@ sub main
 				if ($rem_speed_enable ne "" && $rem_speed_sup ne "") {
 					if (   $speed_enable =~ /10\.0/
 						&& $rem_speed_enable =~ /10\.0/
-						&& $speed !~ /10\.0/)
+						&& $nspeed < 10.0)
 					{
 						$speed_msg = "Could be 10.0 Gbps";
 					} else {
 						if (   $speed_enable =~ /5\.0/
 							&& $rem_speed_enable =~ /5\.0/
-							&& $speed !~ /5\.0/)
+							&& $nspeed < 5.0)
 						{
 							$speed_msg = "Could be 5.0 Gbps";
 						}




More information about the general mailing list