bus/pci: skip probing some Windows NDIS devices
authorPallavi Kadam <pallavi.kadam@intel.com>
Wed, 10 Feb 2021 20:36:54 +0000 (12:36 -0800)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 16 Mar 2021 11:40:35 +0000 (12:40 +0100)
Implement rte_pci_map_device() to distinguish between the devices bound
to netuio and NDIS devices.
Only return success for the netuio devices.

Fixes: c76ec01b4591 ("bus/pci: support netuio on Windows")
Cc: stable@dpdk.org
Suggested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Tal Shnaiderman <talshn@nvidia.com>
Acked-by: Narcisa Vasile <navasile@linux.microsoft.com>
Tested-by: Narcisa Vasile <navasile@linux.microsoft.com>
drivers/bus/pci/windows/pci.c

index f662584..00e7849 100644 (file)
@@ -23,20 +23,22 @@ DEFINE_DEVPROPKEY(DEVPKEY_Device_Numa_Node, 0x540b947e, 0x8b40, 0x45bc,
  * the registry hive for PCI devices.
  */
 
-/* The functions below are not implemented on Windows,
+/* Some of the functions below are not implemented on Windows,
  * but need to be defined for compilation purposes
  */
 
 /* Map pci device */
 int
-rte_pci_map_device(struct rte_pci_device *dev __rte_unused)
+rte_pci_map_device(struct rte_pci_device *dev)
 {
-       /* This function is not implemented on Windows.
-        * We really should short-circuit the call to these functions by
-        * clearing the RTE_PCI_DRV_NEED_MAPPING flag
-        * in the rte_pci_driver flags.
+       /* Only return success for devices bound to netuio.
+        * Devices that are bound to netuio are mapped at
+        * the bus probing stage.
         */
-       return 0;
+       if (dev->kdrv == RTE_PCI_KDRV_NIC_UIO)
+               return 0;
+       else
+               return -1;
 }
 
 /* Unmap pci device */