aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2022-05-09 21:57:29 +0000
committerAlexander Motin <mav@FreeBSD.org>2022-05-09 22:03:24 +0000
commitbce02a0ea43a0cd4ee9aa23c815189d2ccb83745 (patch)
tree0f4bb52806d6b4369a109079e4a36e49521dd481 /usr.sbin
parent53c184cf06055fea79893e5620711fe164282480 (diff)
downloadsrc-bce02a0ea43a0cd4ee9aa23c815189d2ccb83745.tar.gz
src-bce02a0ea43a0cd4ee9aa23c815189d2ccb83745.zip
mpsutil: Fix device speed reporting.
Report controller SAS phy speed only for directly attached devices. For others try to read and report parent expander phy speed. MFC after: 1 week
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/mpsutil/mps_show.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/usr.sbin/mpsutil/mps_show.c b/usr.sbin/mpsutil/mps_show.c
index d293003fc67f..ef20cd942d86 100644
--- a/usr.sbin/mpsutil/mps_show.c
+++ b/usr.sbin/mpsutil/mps_show.c
@@ -577,9 +577,12 @@ show_devices(int ac, char **av)
type = get_device_type(le32toh(device->DeviceInfo));
- if (device->PhyNum < nphys) {
- phydata = &sas0->PhyData[device->PhyNum];
- speed = get_device_speed(phydata->NegotiatedLinkRate);
+ if (device->DeviceInfo & 0x800) { /* Direct Attached */
+ if (device->PhyNum < nphys) {
+ phydata = &sas0->PhyData[device->PhyNum];
+ speed = get_device_speed(phydata->NegotiatedLinkRate);
+ } else
+ speed = "";
} else if (device->ParentDevHandle > 0) {
exp1 = mps_read_extended_config_page(fd,
MPI2_CONFIG_EXTPAGETYPE_SAS_EXPANDER,
@@ -597,13 +600,13 @@ show_devices(int ac, char **av)
free(device);
return (error);
}
- speed = " ";
+ speed = "";
} else {
speed = get_device_speed(exp1->NegotiatedLinkRate);
free(exp1);
}
} else
- speed = " ";
+ speed = "";
if (device->EnclosureHandle != 0) {
snprintf(enchandle, sizeof(enchandle), "%04x", le16toh(device->EnclosureHandle));