bus/pci: fix Windows kernel driver categories
In Windows probing, the value RTE_PCI_KDRV_NONE was used instead of RTE_PCI_KDRV_UNKNOWN. This value covers the mlx case where the kernel driver is in place, offering a bifurcated mode to the userspace driver. When the kernel driver is listed as unknown, there is no special treatment in DPDK probing, contrary to UIO modes. The value RTE_PCI_KDRV_NIC_UIO (FreeBSD) was re-used instead of having a new RTE_PCI_KDRV_NET_UIO for Windows NetUIO. While adding the new value RTE_PCI_KDRV_NET_UIO (at the end for ABI compatibility), the enum of kernel driver categories is annotated. Fixes: b762221ac24f ("bus/pci: support Windows with bifurcated drivers") Fixes: c76ec01b4591 ("bus/pci: support netuio on Windows") Cc: stable@dpdk.org Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Acked-by: Tal Shnaiderman <talshn@nvidia.com> Acked-by: Ranjit Menon <ranjit.menon@intel.com>
This commit is contained in:
parent
be2e6d7895
commit
41e026c1b3
@ -52,12 +52,13 @@ TAILQ_HEAD(rte_pci_driver_list, rte_pci_driver);
|
||||
struct rte_devargs;
|
||||
|
||||
enum rte_pci_kernel_driver {
|
||||
RTE_PCI_KDRV_UNKNOWN = 0,
|
||||
RTE_PCI_KDRV_IGB_UIO,
|
||||
RTE_PCI_KDRV_VFIO,
|
||||
RTE_PCI_KDRV_UIO_GENERIC,
|
||||
RTE_PCI_KDRV_NIC_UIO,
|
||||
RTE_PCI_KDRV_NONE,
|
||||
RTE_PCI_KDRV_UNKNOWN = 0, /* may be misc UIO or bifurcated driver */
|
||||
RTE_PCI_KDRV_IGB_UIO, /* igb_uio for Linux */
|
||||
RTE_PCI_KDRV_VFIO, /* VFIO for Linux */
|
||||
RTE_PCI_KDRV_UIO_GENERIC, /* uio_pci_generic for Linux */
|
||||
RTE_PCI_KDRV_NIC_UIO, /* nic_uio for FreeBSD */
|
||||
RTE_PCI_KDRV_NONE, /* no attached driver */
|
||||
RTE_PCI_KDRV_NET_UIO, /* NetUIO for Windows */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -38,7 +38,7 @@ rte_pci_map_device(struct rte_pci_device *dev)
|
||||
* Devices that are bound to netuio are mapped at
|
||||
* the bus probing stage.
|
||||
*/
|
||||
if (dev->kdrv == RTE_PCI_KDRV_NIC_UIO)
|
||||
if (dev->kdrv == RTE_PCI_KDRV_NET_UIO)
|
||||
return 0;
|
||||
else
|
||||
return -1;
|
||||
@ -207,14 +207,14 @@ get_device_resource_info(HDEVINFO dev_info,
|
||||
int ret;
|
||||
|
||||
switch (dev->kdrv) {
|
||||
case RTE_PCI_KDRV_NONE:
|
||||
/* mem_resource - Unneeded for RTE_PCI_KDRV_NONE */
|
||||
case RTE_PCI_KDRV_UNKNOWN:
|
||||
/* bifurcated driver case - mem_resource is unneeded */
|
||||
dev->mem_resource[0].phys_addr = 0;
|
||||
dev->mem_resource[0].len = 0;
|
||||
dev->mem_resource[0].addr = NULL;
|
||||
break;
|
||||
case RTE_PCI_KDRV_NIC_UIO:
|
||||
/* get device info from netuio kernel driver */
|
||||
case RTE_PCI_KDRV_NET_UIO:
|
||||
/* get device info from NetUIO kernel driver */
|
||||
ret = get_netuio_device_info(dev_info, dev_info_data, dev);
|
||||
if (ret != 0) {
|
||||
RTE_LOG(DEBUG, EAL,
|
||||
@ -323,9 +323,9 @@ set_kernel_driver_type(PSP_DEVINFO_DATA device_info_data,
|
||||
{
|
||||
/* set kernel driver type based on device class */
|
||||
if (IsEqualGUID(&(device_info_data->ClassGuid), &GUID_DEVCLASS_NETUIO))
|
||||
dev->kdrv = RTE_PCI_KDRV_NIC_UIO;
|
||||
dev->kdrv = RTE_PCI_KDRV_NET_UIO;
|
||||
else
|
||||
dev->kdrv = RTE_PCI_KDRV_NONE;
|
||||
dev->kdrv = RTE_PCI_KDRV_UNKNOWN;
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
x
Reference in New Issue
Block a user