From 93eae96428b1a4cdc1ffe3e84cefa7e22297e890 Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Mon, 27 Oct 2025 10:17:30 +0000 Subject: [PATCH] dev: add read functions pci config and config ext Type: improvement Signed-off-by: Mohsin Kazmi Change-Id: If21552811239c9f3432c35f2dd1d19091bf39672 --- src/vnet/dev/bus/pci.c | 36 ++++++++++++++++++++++++++++++++++++ src/vnet/dev/bus/pci.h | 5 ++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/vnet/dev/bus/pci.c b/src/vnet/dev/bus/pci.c index 10bbfa3ca6b..4c086a00822 100644 --- a/src/vnet/dev/bus/pci.c +++ b/src/vnet/dev/bus/pci.c @@ -180,6 +180,42 @@ vnet_dev_pci_read_config_header (vlib_main_t *vm, vnet_dev_t *dev, return VNET_DEV_OK; } +vnet_dev_rv_t +vnet_dev_pci_read_config (vlib_main_t *vm, vnet_dev_t *dev, + vlib_pci_config_t *config) +{ + vlib_pci_dev_handle_t h = vnet_dev_get_pci_handle (dev); + clib_error_t *err; + + err = + vlib_pci_read_write_config (vm, h, VLIB_READ, 0, config, sizeof (*config)); + if (err) + { + log_err (dev, "pci_read_config: %U", format_clib_error, err); + clib_error_free (err); + return VNET_DEV_ERR_BUS; + } + return VNET_DEV_OK; +} + +vnet_dev_rv_t +vnet_dev_pci_read_config_ext (vlib_main_t *vm, vnet_dev_t *dev, + vlib_pci_config_ext_t *config_ext) +{ + vlib_pci_dev_handle_t h = vnet_dev_get_pci_handle (dev); + clib_error_t *err; + + err = vlib_pci_read_write_config (vm, h, VLIB_READ, 0, config_ext, + sizeof (*config_ext)); + if (err) + { + log_err (dev, "pci_read_config_ext: %U", format_clib_error, err); + clib_error_free (err); + return VNET_DEV_ERR_BUS; + } + return VNET_DEV_OK; +} + vnet_dev_rv_t vnet_dev_pci_map_region (vlib_main_t *vm, vnet_dev_t *dev, u8 region, void **pp) diff --git a/src/vnet/dev/bus/pci.h b/src/vnet/dev/bus/pci.h index ce9a53aa273..e8d4685d436 100644 --- a/src/vnet/dev/bus/pci.h +++ b/src/vnet/dev/bus/pci.h @@ -57,7 +57,10 @@ vnet_dev_get_pci_n_msix_interrupts (vnet_dev_t *dev) vnet_dev_rv_t vnet_dev_pci_read_config_header (vlib_main_t *, vnet_dev_t *, vlib_pci_config_hdr_t *); - +vnet_dev_rv_t vnet_dev_pci_read_config (vlib_main_t *, vnet_dev_t *, + vlib_pci_config_t *); +vnet_dev_rv_t vnet_dev_pci_read_config_ext (vlib_main_t *, vnet_dev_t *, + vlib_pci_config_ext_t *); vnet_dev_rv_t vnet_dev_pci_map_region (vlib_main_t *, vnet_dev_t *, u8, void **); vnet_dev_rv_t vnet_dev_pci_function_level_reset (vlib_main_t *, vnet_dev_t *); -- 2.16.6