drivers: export probe/remove helpers for PCI drivers
authorDavid Marchand <david.marchand@6wind.com>
Tue, 20 Sep 2016 12:41:19 +0000 (18:11 +0530)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 3 Oct 2016 14:33:17 +0000 (16:33 +0200)
crypto and ethdev drivers aligned to PCI probe/remove. These wrappers are
mapped directly to PCI resources.
Existing handlers for init/uninit can be easily reused for this.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
lib/librte_cryptodev/rte_cryptodev.c
lib/librte_cryptodev/rte_cryptodev_pmd.h
lib/librte_cryptodev/rte_cryptodev_version.map
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h
lib/librte_ether/rte_ether_version.map

index 144c205..caa9db8 100644 (file)
@@ -428,9 +428,9 @@ rte_cryptodev_pmd_virtual_dev_init(const char *name, size_t dev_private_size,
        return cryptodev;
 }
 
-static int
-rte_cryptodev_init(struct rte_pci_driver *pci_drv,
-               struct rte_pci_device *pci_dev)
+int
+rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv,
+                       struct rte_pci_device *pci_dev)
 {
        struct rte_cryptodev_driver *cryptodrv;
        struct rte_cryptodev *cryptodev;
@@ -489,8 +489,8 @@ rte_cryptodev_init(struct rte_pci_driver *pci_drv,
        return -ENXIO;
 }
 
-static int
-rte_cryptodev_uninit(struct rte_pci_device *pci_dev)
+int
+rte_cryptodev_pci_remove(struct rte_pci_device *pci_dev)
 {
        const struct rte_cryptodev_driver *cryptodrv;
        struct rte_cryptodev *cryptodev;
@@ -538,15 +538,16 @@ rte_cryptodev_pmd_driver_register(struct rte_cryptodev_driver *cryptodrv,
 {
        /* Call crypto device initialization directly if device is virtual */
        if (type == PMD_VDEV)
-               return rte_cryptodev_init((struct rte_pci_driver *)cryptodrv,
+               return rte_cryptodev_pci_probe(
+                               (struct rte_pci_driver *)cryptodrv,
                                NULL);
 
        /*
         * Register PCI driver for physical device intialisation during
         * PCI probing
         */
-       cryptodrv->pci_drv.probe = rte_cryptodev_init;
-       cryptodrv->pci_drv.remove = rte_cryptodev_uninit;
+       cryptodrv->pci_drv.probe = rte_cryptodev_pci_probe;
+       cryptodrv->pci_drv.remove = rte_cryptodev_pci_remove;
 
        rte_eal_pci_register(&cryptodrv->pci_drv);
 
index 9a9174f..450a376 100644 (file)
@@ -536,6 +536,18 @@ rte_cryptodev_pmd_driver_register(struct rte_cryptodev_driver *crypto_drv,
 void rte_cryptodev_pmd_callback_process(struct rte_cryptodev *dev,
                                enum rte_cryptodev_event_type event);
 
+/**
+ * Wrapper for use by pci drivers as a .probe function to attach to a crypto
+ * interface.
+ */
+int rte_cryptodev_pci_probe(struct rte_pci_driver *pci_drv,
+                           struct rte_pci_device *pci_dev);
+
+/**
+ * Wrapper for use by pci drivers as a .remove function to detach a crypto
+ * interface.
+ */
+int rte_cryptodev_pci_remove(struct rte_pci_device *pci_dev);
 
 #ifdef __cplusplus
 }
index a08fd20..dd0b378 100644 (file)
@@ -39,3 +39,11 @@ DPDK_16.07 {
        rte_cryptodev_parse_vdev_init_params;
 
 } DPDK_16.04;
+
+DPDK_16.11 {
+       global:
+
+       rte_cryptodev_pci_probe;
+       rte_cryptodev_pci_remove;
+
+} DPDK_16.07;
index aa41a0c..42d7d5e 100644 (file)
@@ -244,9 +244,9 @@ rte_eth_dev_release_port(struct rte_eth_dev *eth_dev)
        return 0;
 }
 
-static int
-rte_eth_dev_init(struct rte_pci_driver *pci_drv,
-                struct rte_pci_device *pci_dev)
+int
+rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv,
+                     struct rte_pci_device *pci_dev)
 {
        struct eth_driver    *eth_drv;
        struct rte_eth_dev *eth_dev;
@@ -298,8 +298,8 @@ rte_eth_dev_init(struct rte_pci_driver *pci_drv,
        return diag;
 }
 
-static int
-rte_eth_dev_uninit(struct rte_pci_device *pci_dev)
+int
+rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev)
 {
        const struct eth_driver *eth_drv;
        struct rte_eth_dev *eth_dev;
@@ -356,8 +356,8 @@ rte_eth_dev_uninit(struct rte_pci_device *pci_dev)
 void
 rte_eth_driver_register(struct eth_driver *eth_drv)
 {
-       eth_drv->pci_drv.probe = rte_eth_dev_init;
-       eth_drv->pci_drv.remove = rte_eth_dev_uninit;
+       eth_drv->pci_drv.probe = rte_eth_dev_pci_probe;
+       eth_drv->pci_drv.remove = rte_eth_dev_pci_remove;
        rte_eal_pci_register(&eth_drv->pci_drv);
 }
 
index 96575e8..11c3a75 100644 (file)
@@ -4372,6 +4372,21 @@ rte_eth_dev_get_port_by_name(const char *name, uint8_t *port_id);
 int
 rte_eth_dev_get_name_by_port(uint8_t port_id, char *name);
 
+/**
+ * @internal
+ * Wrapper for use by pci drivers as a .probe function to attach to a ethdev
+ * interface.
+ */
+int rte_eth_dev_pci_probe(struct rte_pci_driver *pci_drv,
+                         struct rte_pci_device *pci_dev);
+
+/**
+ * @internal
+ * Wrapper for use by pci drivers as a .remove function to detach a ethdev
+ * interface.
+ */
+int rte_eth_dev_pci_remove(struct rte_pci_device *pci_dev);
+
 #ifdef __cplusplus
 }
 #endif
index 45ddf44..17e7448 100644 (file)
@@ -138,4 +138,13 @@ DPDK_16.07 {
        rte_eth_dev_get_name_by_port;
        rte_eth_dev_get_port_by_name;
        rte_eth_xstats_get_names;
+
 } DPDK_16.04;
+
+DPDK_16.11 {
+       global:
+
+       rte_eth_dev_pci_probe;
+       rte_eth_dev_pci_remove;
+
+} DPDK_16.07;