[dpdk-dev] [PATCH 7/7] bus/pci: support Windows with bifurcated drivers
Narcisa Ana Maria Vasile
navasile at linux.microsoft.com
Tue Apr 28 00:58:52 CEST 2020
On Wed, Apr 22, 2020 at 10:27:47AM +0300, talshn at mellanox.com wrote:
> From: Tal Shnaiderman <talshn at mellanox.com>
>
> Uses SetupAPI.h functions to scan PCI tree.
> Uses DEVPKEY_Device_Numa_Node to get the PCI Numa node.
> scanning currently supports types RTE_KDRV_NONE.
>
> Signed-off-by: Tal Shnaiderman <talshn at mellanox.com>
> ---
> drivers/bus/pci/windows/pci.c | 342 ++++++++++++++++++++++++++-
> lib/librte_eal/rte_eal_exports.def | 1 +
> lib/librte_eal/windows/include/rte_windows.h | 1 +
> 3 files changed, 342 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c
> index 7eff39173..d5ee938fa 100644
> --- a/drivers/bus/pci/windows/pci.c
> +++ b/drivers/bus/pci/windows/pci.c
> @@ -1,14 +1,24 @@
> /* SPDX-License-Identifier: BSD-3-Clause
> * Copyright 2020 Mellanox Technologies, Ltd
> */
> +
> +static
> +int get_device_resource_info(HDEVINFO hDevInfo,
> + PSP_DEVINFO_DATA pDeviceInfoData , struct rte_pci_device *dev)
> +{
> + int ret = -1;
> + DEVPROPTYPE uPropertyType;
> + DWORD uNumaNode;
> + BOOL bResult;
> +
> + switch (dev->kdrv) {
> + case RTE_KDRV_NONE:
> + /* Get NUMA node using DEVPKEY_Device_Numa_Node */
> + bResult = SetupDiGetDevicePropertyW(hDevInfo, pDeviceInfoData,
> + &DEVPKEY_Device_Numa_Node, &uPropertyType,
> + (BYTE *)&uNumaNode, sizeof(uNumaNode), NULL, 0);
> + if (!bResult) {
> + ret = GetLastError();
> + break;
Here 'ret' is correctly set to an error code, but after breaking out of the switch, it is overwritten to ERROR_SUCCESS.
Maybe 'goto end' instead of 'break'.
> + }
> + dev->device.numa_node = uNumaNode;
> + /* mem_resource - Uneeded for RTE_KDRV_NONE */
> + dev->mem_resource[0].phys_addr = 0;
> + dev->mem_resource[0].len = 0;
> + dev->mem_resource[0].addr = NULL;
> + break;
> + default:
> + ret = -1;
Same thing here, ret is overwritten after breaking from the switch.
> + break;
> + }
> +
> + ret = ERROR_SUCCESS;
> +end:
> + return ret;
> +}
> +
> +
> +/*
More information about the dev
mailing list