From 7a7fd57715d714e53937dc9a15451bcb6056673a Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 19 Sep 2022 19:08:07 +0000 Subject: [PATCH] env_dpdk: add dpdk_device_* functions Signed-off-by: Jim Harris Change-Id: I89dbf50821a3843b861629c195f2f9e8dfdc59a6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14569 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Konrad Sztyber --- lib/env_dpdk/pci.c | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/env_dpdk/pci.c b/lib/env_dpdk/pci.c index 35b7c97d0..09b7eb5e6 100644 --- a/lib/env_dpdk/pci.c +++ b/lib/env_dpdk/pci.c @@ -73,6 +73,10 @@ int dpdk_pci_device_disable_interrupt(struct rte_pci_device *rte_dev); int dpdk_pci_device_get_interrupt_efd(struct rte_pci_device *rte_dev); void dpdk_bus_scan(void); int dpdk_bus_probe(void); +struct rte_devargs *dpdk_device_get_devargs(struct rte_device *dev); +void dpdk_device_set_devargs(struct rte_device *dev, struct rte_devargs *devargs); +const char *dpdk_device_get_name(struct rte_device *dev); +bool dpdk_device_scan_allowed(struct rte_device *dev); int pci_device_init(struct rte_pci_driver *driver, struct rte_pci_device *device); int pci_device_fini(struct rte_pci_device *device); @@ -522,7 +526,7 @@ scan_pci_bus(bool delay_init) RTE_DEV_FOREACH(rte_dev, "bus=pci", &it) { struct rte_devargs *da; - da = rte_dev->devargs; + da = dpdk_device_get_devargs(rte_dev); if (!da) { char devargs_str[128]; @@ -532,14 +536,14 @@ scan_pci_bus(bool delay_init) return -1; } - snprintf(devargs_str, sizeof(devargs_str), "pci:%s", rte_dev->name); + snprintf(devargs_str, sizeof(devargs_str), "pci:%s", dpdk_device_get_name(rte_dev)); if (rte_devargs_parse(da, devargs_str) != 0) { free(da); return -1; } rte_devargs_insert(&da); - rte_dev->devargs = da; + dpdk_device_set_devargs(rte_dev, da); } if (get_allowed_at(da)) { @@ -549,8 +553,8 @@ scan_pci_bus(bool delay_init) if (da->policy == RTE_DEV_BLOCKED && allowed_at <= now) { da->policy = RTE_DEV_ALLOWED; } - } else if ((rte_dev->bus->conf.scan_mode == RTE_BUS_SCAN_ALLOWLIST && - da->policy == RTE_DEV_ALLOWED) || da->policy != RTE_DEV_BLOCKED) { + } else if ((dpdk_device_scan_allowed(rte_dev) && da->policy == RTE_DEV_ALLOWED) || + da->policy != RTE_DEV_BLOCKED) { /* override the policy only if not permanently blocked */ if (delay_init) { @@ -1354,3 +1358,27 @@ dpdk_bus_scan(void) { rte_bus_scan(); } + +struct rte_devargs * +dpdk_device_get_devargs(struct rte_device *dev) +{ + return dev->devargs; +} + +void +dpdk_device_set_devargs(struct rte_device *dev, struct rte_devargs *devargs) +{ + dev->devargs = devargs; +} + +const char * +dpdk_device_get_name(struct rte_device *dev) +{ + return dev->name; +} + +bool +dpdk_device_scan_allowed(struct rte_device *dev) +{ + return dev->bus->conf.scan_mode == RTE_BUS_SCAN_ALLOWLIST; +}