diff options
-rw-r--r-- | src/vlib/pci/pci.c | 13 | ||||
-rw-r--r-- | src/vlib/pci/pci.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/vlib/pci/pci.c b/src/vlib/pci/pci.c index 1c1f4b636f5..18d93acbf08 100644 --- a/src/vlib/pci/pci.c +++ b/src/vlib/pci/pci.c @@ -143,6 +143,19 @@ format_vlib_pci_addr (u8 * s, va_list * va) } u8 * +format_vlib_pci_link_port (u8 *s, va_list *va) +{ + vlib_pci_device_info_t *d = va_arg (*va, vlib_pci_device_info_t *); + pcie_config_regs_t *r = + pci_config_find_capability (&d->config0, PCI_CAP_ID_PCIE); + + if (!r) + return format (s, "unknown"); + + return format (s, "P%d", r->link_status >> 24); +} + +u8 * format_vlib_pci_link_speed (u8 * s, va_list * va) { vlib_pci_device_info_t *d = va_arg (*va, vlib_pci_device_info_t *); diff --git a/src/vlib/pci/pci.h b/src/vlib/pci/pci.h index 5aae597f825..01f7d5b9669 100644 --- a/src/vlib/pci/pci.h +++ b/src/vlib/pci/pci.h @@ -325,6 +325,7 @@ int vlib_pci_supports_virtual_addr_dma (vlib_main_t * vm, unformat_function_t unformat_vlib_pci_addr; format_function_t format_vlib_pci_addr; format_function_t format_vlib_pci_link_speed; +format_function_t format_vlib_pci_link_port; format_function_t format_vlib_pci_vpd; #endif /* included_vlib_pci_h */ |