pci: rename passthrough driver to kernel driver
[dpdk.git] / lib / librte_eal / common / include / rte_pci.h
index ec2e2b0..785852d 100644 (file)
@@ -142,11 +142,11 @@ struct rte_pci_addr {
 
 struct rte_devargs;
 
-enum rte_pt_driver {
-       RTE_PT_UNKNOWN          = 0,
-       RTE_PT_IGB_UIO          = 1,
-       RTE_PT_VFIO             = 2,
-       RTE_PT_UIO_GENERIC      = 3,
+enum rte_kernel_driver {
+       RTE_KDRV_UNKNOWN = 0,
+       RTE_KDRV_IGB_UIO,
+       RTE_KDRV_VFIO,
+       RTE_KDRV_UIO_GENERIC,
 };
 
 /**
@@ -158,11 +158,11 @@ struct rte_pci_device {
        struct rte_pci_id id;                   /**< PCI ID. */
        struct rte_pci_resource mem_resource[PCI_MAX_RESOURCE];   /**< PCI Memory Resource */
        struct rte_intr_handle intr_handle;     /**< Interrupt handle */
-       const struct rte_pci_driver *driver;    /**< Associated driver */
+       struct rte_pci_driver *driver;          /**< Associated driver */
        uint16_t max_vfs;                       /**< sriov enable if not zero */
        int numa_node;                          /**< NUMA node connection */
        struct rte_devargs *devargs;            /**< Device user arguments */
-       enum rte_pt_driver pt_driver;           /**< Driver of passthrough */
+       enum rte_kernel_driver kdrv;            /**< Kernel driver passthrough */
 };
 
 /** Any PCI device identifier (vendor, device, ...) */
@@ -191,6 +191,11 @@ struct rte_pci_driver;
  */
 typedef int (pci_devinit_t)(struct rte_pci_driver *, struct rte_pci_device *);
 
+/**
+ * Uninitialisation function for the driver called during hotplugging.
+ */
+typedef int (pci_devuninit_t)(struct rte_pci_device *);
+
 /**
  * A structure describing a PCI driver.
  */
@@ -198,6 +203,7 @@ struct rte_pci_driver {
        TAILQ_ENTRY(rte_pci_driver) next;       /**< Next in list. */
        const char *name;                       /**< Driver name. */
        pci_devinit_t *devinit;                 /**< Device init. function. */
+       pci_devuninit_t *devuninit;             /**< Device uninit function. */
        struct rte_pci_id *id_table;            /**< ID table, NULL terminated. */
        uint32_t drv_flags;                     /**< Flags contolling handling of device. */
 };
@@ -210,6 +216,8 @@ struct rte_pci_driver {
 #define RTE_PCI_DRV_FORCE_UNBIND 0x0004
 /** Device driver supports link state interrupt */
 #define RTE_PCI_DRV_INTR_LSC   0x0008
+/** Device driver supports detaching capability */
+#define RTE_PCI_DRV_DETACHABLE 0x0010
 
 /**< Internal use only - Macro used by pci addr parsing functions **/
 #define GET_PCIADDR_FIELD(in, fd, lim, dlm)                   \
@@ -304,6 +312,15 @@ rte_eal_compare_pci_addr(struct rte_pci_addr *addr, struct rte_pci_addr *addr2)
                return 0;
 }
 
+/**
+ * Scan the content of the PCI bus, and the devices in the devices
+ * list
+ *
+ * @return
+ *  0 on success, negative on error
+ */
+int rte_eal_pci_scan(void);
+
 /**
  * Probe the PCI bus for registered drivers.
  *
@@ -317,6 +334,38 @@ rte_eal_compare_pci_addr(struct rte_pci_addr *addr, struct rte_pci_addr *addr2)
  */
 int rte_eal_pci_probe(void);
 
+#ifdef RTE_LIBRTE_EAL_HOTPLUG
+/**
+ * Probe the single PCI device.
+ *
+ * Scan the content of the PCI bus, and find the pci device specified by pci
+ * address, then call the probe() function for registered driver that has a
+ * matching entry in its id_table for discovered device.
+ *
+ * @param addr
+ *     The PCI Bus-Device-Function address to probe.
+ * @return
+ *   - 0 on success.
+ *   - Negative on error.
+ */
+int rte_eal_pci_probe_one(struct rte_pci_addr *addr);
+
+/**
+ * Close the single PCI device.
+ *
+ * Scan the content of the PCI bus, and find the pci device specified by pci
+ * address, then call the close() function for registered driver that has a
+ * matching entry in its id_table for discovered device.
+ *
+ * @param addr
+ *     The PCI Bus-Device-Function address to close.
+ * @return
+ *   - 0 on success.
+ *   - Negative on error.
+ */
+int rte_eal_pci_close_one(struct rte_pci_addr *addr);
+#endif /* RTE_LIBRTE_EAL_HOTPLUG */
+
 /**
  * Dump the content of the PCI bus.
  *