bus/fslmc: introduce new device type enumerator
authorShreyansh Jain <shreyansh.jain@nxp.com>
Fri, 25 Aug 2017 10:19:50 +0000 (15:49 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 5 Oct 2017 23:08:23 +0000 (01:08 +0200)
Existing devices and drivers depended on device ID rather than type.
A new enumerator for all DPAA2 devices is introduced in this patch.

At this point, the probe would not be able to link DPAA2 devices
with the driver and I/O would not work. Subsequent patches will
fix this.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/bus/fslmc/fslmc_vfio.c
drivers/bus/fslmc/rte_bus_fslmc_version.map
drivers/bus/fslmc/rte_fslmc.h

index 3423b57..3b452e1 100644 (file)
@@ -288,8 +288,8 @@ dpaa2_compare_dpaa2_dev(const struct rte_dpaa2_device *dev,
                         const struct rte_dpaa2_device *dev2)
 {
        /*not the same family device */
-       if (dev->dev_type != DPAA2_MC_DPNI_DEVID ||
-                       dev->dev_type != DPAA2_MC_DPSECI_DEVID)
+       if (dev->dev_type != DPAA2_ETH ||
+                       dev->dev_type != DPAA2_CRYPTO)
                return -1;
 
        if (dev->object_id == dev2->object_id)
@@ -506,7 +506,7 @@ int fslmc_vfio_process_group(void)
                        /* store hw_id of dpni/dpseci device */
                        dev->object_id = object_id;
                        dev->dev_type = (strcmp(object_type, "dpseci")) ?
-                               DPAA2_MC_DPNI_DEVID : DPAA2_MC_DPSECI_DEVID;
+                               DPAA2_ETH : DPAA2_CRYPTO;
 
                        sprintf(dev->name, "%s.%d", object_type, object_id);
                        dev->device.name = dev->name;
index 3cdf14e..6ac256d 100644 (file)
@@ -77,3 +77,10 @@ DPDK_17.08 {
        rte_global_active_dqs_list;
 
 } DPDK_17.05;
+
+DPDK_17.11 {
+       global:
+
+       rte_dpaa2_dev_type;
+
+} DPDK_17.08;
index e60d6eb..ff7a49e 100644 (file)
@@ -56,6 +56,8 @@ extern "C" {
 #include <rte_dev.h>
 #include <rte_bus.h>
 
+#define FSLMC_OBJECT_MAX_LEN 32   /**< Length of each device on bus */
+
 struct rte_dpaa2_driver;
 
 /* DPAA2 Device and Driver lists for FSLMC bus */
@@ -64,6 +66,20 @@ TAILQ_HEAD(rte_fslmc_driver_list, rte_dpaa2_driver);
 
 extern struct rte_fslmc_bus rte_fslmc_bus;
 
+enum rte_dpaa2_dev_type {
+       /* Devices backed by DPDK driver */
+       DPAA2_ETH,      /**< DPNI type device*/
+       DPAA2_CRYPTO,   /**< DPSECI type device */
+       DPAA2_CON,      /**< DPCONC type device */
+       /* Devices not backed by a DPDK driver: DPIO, DPBP, DPCI, DPMCP */
+       DPAA2_BPOOL,    /**< DPBP type device */
+       DPAA2_IO,       /**< DPIO type device */
+       DPAA2_CI,       /**< DPCI type device */
+       DPAA2_MPORTAL,  /**< DPMCP type device */
+       /* Unknown device placeholder */
+       DPAA2_UNKNOWN
+};
+
 /**
  * A structure describing a DPAA2 device.
  */
@@ -74,11 +90,11 @@ struct rte_dpaa2_device {
                struct rte_eth_dev *eth_dev;        /**< ethernet device */
                struct rte_cryptodev *cryptodev;    /**< Crypto Device */
        };
-       uint16_t dev_type;                  /**< Device Type */
-       uint16_t object_id;             /**< DPAA2 Object ID */
+       enum rte_dpaa2_dev_type dev_type;   /**< Device Type */
+       uint16_t object_id;                 /**< DPAA2 Object ID */
        struct rte_intr_handle intr_handle; /**< Interrupt handle */
        struct rte_dpaa2_driver *driver;    /**< Associated driver */
-       char name[32];          /**< DPAA2 Object name*/
+       char name[FSLMC_OBJECT_MAX_LEN];    /**< DPAA2 Object name*/
 };
 
 typedef int (*rte_dpaa2_probe_t)(struct rte_dpaa2_driver *dpaa2_drv,
@@ -93,7 +109,7 @@ struct rte_dpaa2_driver {
        struct rte_driver driver;           /**< Inherit core driver. */
        struct rte_fslmc_bus *fslmc_bus;    /**< FSLMC bus reference */
        uint32_t drv_flags;                 /**< Flags for controlling device.*/
-       uint16_t drv_type;                  /**< Driver Type */
+       enum rte_dpaa2_dev_type drv_type;   /**< Driver Type */
        rte_dpaa2_probe_t probe;
        rte_dpaa2_remove_t remove;
 };