aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2022-01-21 14:16:37 +0100
committerMartin Mares <mj@ucw.cz>2022-01-21 14:16:37 +0100
commit9f7681202fcfaefd02e202eb64c01eb9e962729d (patch)
tree0d9e15c1eabeb7e2e85e4b34d1ba30fd1d86f976
parenteeef8fed3e6bd34c553ee8cb16d5fc1b703120af (diff)
downloadpciutils-9f7681202fcfaefd02e202eb64c01eb9e962729d.tar.gz
lspci: Improvements to PCIe link speed downgrade reporting
Do not report PCIe link downgrades for downstream ports. Changed wording so that "overdriven" is reported instead of "strange" for speeds greater than the maximum supported one. Also report nothing instead of "ok". Inspired by patches by Bjorn Helgaas and Matthew Wilcox.
-rw-r--r--ls-caps.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/ls-caps.c b/ls-caps.c
index 91acb59..79b61cd 100644
--- a/ls-caps.c
+++ b/ls-caps.c
@@ -771,13 +771,16 @@ static char *link_speed(int speed)
}
}
-static char *link_compare(int sta, int cap)
+static char *link_compare(int type, int sta, int cap)
{
- if (sta < cap)
- return "downgraded";
if (sta > cap)
- return "strange";
- return "ok";
+ return " (overdriven)";
+ if (sta == cap)
+ return "";
+ if ((type == PCI_EXP_TYPE_ROOT_PORT) || (type == PCI_EXP_TYPE_DOWNSTREAM) ||
+ (type == PCI_EXP_TYPE_PCIE_BRIDGE))
+ return "";
+ return " (downgraded)";
}
static char *aspm_support(int code)
@@ -850,11 +853,11 @@ static void cap_express_link(struct device *d, int where, int type)
w = get_conf_word(d, where + PCI_EXP_LNKSTA);
sta_speed = w & PCI_EXP_LNKSTA_SPEED;
sta_width = (w & PCI_EXP_LNKSTA_WIDTH) >> 4;
- printf("\t\tLnkSta:\tSpeed %s (%s), Width x%d (%s)\n",
+ printf("\t\tLnkSta:\tSpeed %s%s, Width x%d%s\n",
link_speed(sta_speed),
- link_compare(sta_speed, cap_speed),
+ link_compare(type, sta_speed, cap_speed),
sta_width,
- link_compare(sta_width, cap_width));
+ link_compare(type, sta_width, cap_width));
printf("\t\t\tTrErr%c Train%c SlotClk%c DLActive%c BWMgmt%c ABWMgmt%c\n",
FLAG(w, PCI_EXP_LNKSTA_TR_ERR),
FLAG(w, PCI_EXP_LNKSTA_TRAIN),