drivers/octeontx2: fix icc build for i686
[dpdk.git] / drivers / raw / skeleton_rawdev / skeleton_rawdev.c
index d1489f8..42471fb 100644 (file)
@@ -32,7 +32,7 @@
 int skeleton_pmd_logtype;
 
 /* Count of instances */
-uint16_t skeldev_init_once;
+static uint16_t skeldev_init_once;
 
 /**< Rawdev Skeleton dummy driver name */
 #define SKELETON_PMD_RAWDEV_NAME rawdev_skeleton
@@ -305,6 +305,18 @@ static int skeleton_rawdev_queue_release(struct rte_rawdev *dev,
        return ret;
 }
 
+static uint16_t skeleton_rawdev_queue_count(struct rte_rawdev *dev)
+{
+       struct skeleton_rawdev *skeldev;
+
+       SKELETON_PMD_FUNC_TRACE();
+
+       RTE_FUNC_PTR_OR_ERR_RET(dev, -EINVAL);
+
+       skeldev = skeleton_rawdev_get_priv(dev);
+       return skeldev->num_queues;
+}
+
 static int skeleton_rawdev_get_attr(struct rte_rawdev *dev,
                                    const char *attr_name,
                                    uint64_t *attr_value)
@@ -524,6 +536,7 @@ static const struct rte_rawdev_ops skeleton_rawdev_ops = {
        .queue_def_conf = skeleton_rawdev_queue_def_conf,
        .queue_setup = skeleton_rawdev_queue_setup,
        .queue_release = skeleton_rawdev_queue_release,
+       .queue_count = skeleton_rawdev_queue_count,
 
        .attr_get = skeleton_rawdev_get_attr,
        .attr_set = skeleton_rawdev_set_attr,
@@ -570,9 +583,10 @@ skeleton_rawdev_create(const char *name,
                goto cleanup;
        }
 
+       ret = rawdev->dev_id; /* return the rawdev id of new device */
+
        rawdev->dev_ops = &skeleton_rawdev_ops;
        rawdev->device = &vdev->device;
-       rawdev->driver_name = vdev->device.driver->name;
 
        skeldev = skeleton_rawdev_get_priv(rawdev);
 
@@ -692,6 +706,9 @@ skeleton_rawdev_probe(struct rte_vdev_device *vdev)
 
 
        name = rte_vdev_device_name(vdev);
+       if (name == NULL)
+               return -EINVAL;
+
        /* More than one instance is not supported */
        if (skeldev_init_once) {
                SKELETON_PMD_ERR("Multiple instance not supported for %s",
@@ -705,19 +722,19 @@ skeleton_rawdev_probe(struct rte_vdev_device *vdev)
        /* In case of invalid argument, selftest != 1; ignore other values */
 
        ret = skeleton_rawdev_create(name, vdev, rte_socket_id());
-       if (!ret) {
+       if (ret >= 0) {
                /* In case command line argument for 'selftest' was passed;
                 * if invalid arguments were passed, execution continues but
                 * without selftest.
                 */
                if (selftest == 1)
-                       test_rawdev_skeldev();
+                       test_rawdev_skeldev(ret);
        }
 
        /* Device instance created; Second instance not possible */
        skeldev_init_once = 1;
 
-       return ret;
+       return ret < 0 ? ret : 0;
 }
 
 static int
@@ -727,6 +744,8 @@ skeleton_rawdev_remove(struct rte_vdev_device *vdev)
        int ret;
 
        name = rte_vdev_device_name(vdev);
+       if (name == NULL)
+               return -1;
 
        SKELETON_PMD_INFO("Closing %s on NUMA node %d", name, rte_socket_id());