X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fraw%2Fskeleton_rawdev%2Fskeleton_rawdev.c;h=42471fbd118766035e08212e638032b1348dadb0;hb=e66a5a827064f27258e54f3065fcf515936b7513;hp=d1489f8ec030f4a7fe8bf2be88d2acf589bcc37d;hpb=f8e9989606e7a9548a25ac10e2daae4c8af230cb;p=dpdk.git diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev.c index d1489f8ec0..42471fbd11 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev.c +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev.c @@ -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());