Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Oct 2012 17:22:37 +0000 (UTC)
From:      Jim Harris <jimharris@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r242085 - head/usr.sbin/pciconf
Message-ID:  <201210251722.q9PHMbgh007546@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jimharris
Date: Thu Oct 25 17:22:37 2012
New Revision: 242085
URL: http://svn.freebsd.org/changeset/base/242085

Log:
  For PCI Express capability, if max link width is greater than zero, print
  the current and max link speed.
  
  Sponsored by:	Intel
  Discussed with:	jhb
  MFC after:	1 week

Modified:
  head/usr.sbin/pciconf/cap.c

Modified: head/usr.sbin/pciconf/cap.c
==============================================================================
--- head/usr.sbin/pciconf/cap.c	Thu Oct 25 15:45:32 2012	(r242084)
+++ head/usr.sbin/pciconf/cap.c	Thu Oct 25 17:22:37 2012	(r242085)
@@ -363,6 +363,22 @@ cap_subvendor(int fd, struct pci_conf *p
 
 #define	MAX_PAYLOAD(field)		(128 << (field))
 
+static const char *
+link_speed_string(uint8_t speed)
+{
+
+	switch (speed) {
+	case 1:
+		return ("2.5");
+	case 2:
+		return ("5.0");
+	case 3:
+		return ("8.0");
+	default:
+		return ("undef");
+	}
+}
+
 static void
 cap_express(int fd, struct pci_conf *p, uint8_t ptr)
 {
@@ -418,6 +434,16 @@ cap_express(int fd, struct pci_conf *p, 
 	flags = read_config(fd, &p->pc_sel, ptr+ PCIER_LINK_STA, 2);
 	printf(" link x%d(x%d)", (flags & PCIEM_LINK_STA_WIDTH) >> 4,
 	    (val & PCIEM_LINK_CAP_MAX_WIDTH) >> 4);
+	/*
+	 * Only print link speed info if the link's max width is
+	 * greater than 0.
+	 */ 
+	if ((val & PCIEM_LINK_CAP_MAX_WIDTH) != 0) {
+		printf("\n                 speed");
+		printf(" %s(%s)", (flags & PCIEM_LINK_STA_WIDTH) == 0 ?
+		    "0.0" : link_speed_string(flags & PCIEM_LINK_STA_SPEED),
+	    	    link_speed_string(val & PCIEM_LINK_CAP_MAX_SPEED));
+	}
 }
 
 static void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210251722.q9PHMbgh007546>