Currently only type 0 DVSEC caps are handled. Moving this check will allow more robust type handling in the future. Should be no functional change. Signed-off-by: Ben Widawsky <ben.widawsky@xxxxxxxxx> --- ls-ecaps.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ls-ecaps.c b/ls-ecaps.c index edb4401..83ca93e 100644 --- a/ls-ecaps.c +++ b/ls-ecaps.c @@ -690,7 +690,7 @@ cap_rcec(struct device *d, int where) } static void -cap_dvsec_cxl(struct device *d, int where) +cap_dvsec_cxl(struct device *d, int id, int where) { u16 w; @@ -698,6 +698,9 @@ cap_dvsec_cxl(struct device *d, int where) if (verbose < 2) return; + if (id != 0) + return; + if (!config_fetch(d, where + PCI_CXL_CAP, 12)) return; @@ -734,8 +737,8 @@ cap_dvsec(struct device *d, int where) u16 id = get_conf_long(d, where + PCI_DVSEC_HEADER2); printf("Vendor=%04x ID=%04x Rev=%d Len=%d", vendor, id, rev, len); - if (vendor == PCI_DVSEC_VENDOR_ID_CXL && id == PCI_DVSEC_ID_CXL && len >= 16) - cap_dvsec_cxl(d, where); + if (vendor == PCI_DVSEC_VENDOR_ID_CXL && len >= 16) + cap_dvsec_cxl(d, id, where); else printf(" <?>\n"); } -- 2.31.1