[dpdk-dev,02/12] eal: avoid calling rte_vdev_init()
Checks
Commit Message
We can call bus->plug() to avoid calling rte_vdev_init() explicitly.
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
lib/librte_eal/common/eal_common_dev.c | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
Comments
Hi,
On Fri, Aug 25, 2017 at 09:40:42AM +0000, Jianfeng Tan wrote:
> We can call bus->plug() to avoid calling rte_vdev_init() explicitly.
>
> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
> ---
> lib/librte_eal/common/eal_common_dev.c | 21 +++++----------------
> 1 file changed, 5 insertions(+), 16 deletions(-)
>
> diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
> index e251275..066dfbf 100644
> --- a/lib/librte_eal/common/eal_common_dev.c
> +++ b/lib/librte_eal/common/eal_common_dev.c
> @@ -67,7 +67,6 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
> int rte_eal_dev_attach(const char *name, const char *devargs)
> {
> struct rte_bus *bus;
> - int ret;
>
> if (name == NULL || devargs == NULL) {
> RTE_LOG(ERR, EAL, "Invalid device or arguments provided\n");
> @@ -80,22 +79,12 @@ int rte_eal_dev_attach(const char *name, const char *devargs)
> name);
> return -EINVAL;
> }
> - if (strcmp(bus->name, "pci") == 0)
> - return rte_eal_hotplug_add("pci", name, devargs);
> - if (strcmp(bus->name, "vdev") != 0) {
> - RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
> - return -ENOTSUP;
> - }
> + if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") != 0)
It seems to be a copy / paste error, it should probably be:
+ if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") == 0)
Now, one could question the relevancy of keeping this API
(rte_eal_dev_attach / detach), but I guess this is beyond the scope of
this series.
> + return rte_eal_hotplug_add(bus->name, name, devargs);
>
> - /*
> - * If we haven't found a bus device the user meant to "hotplug" a
> - * virtual device instead.
> - */
> - ret = rte_vdev_init(name, devargs);
> - if (ret)
> - RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n",
> - name);
> - return ret;
> + RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
> +
> + return -ENOTSUP;
> }
>
> int rte_eal_dev_detach(struct rte_device *dev)
> --
> 2.7.4
>
Hi Gaetan,
On 8/29/2017 5:50 AM, Gaëtan Rivet wrote:
> Hi,
>
> On Fri, Aug 25, 2017 at 09:40:42AM +0000, Jianfeng Tan wrote:
>> We can call bus->plug() to avoid calling rte_vdev_init() explicitly.
>>
>> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
>> ---
>> lib/librte_eal/common/eal_common_dev.c | 21 +++++----------------
>> 1 file changed, 5 insertions(+), 16 deletions(-)
>>
>> diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
>> index e251275..066dfbf 100644
>> --- a/lib/librte_eal/common/eal_common_dev.c
>> +++ b/lib/librte_eal/common/eal_common_dev.c
>> @@ -67,7 +67,6 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
>> int rte_eal_dev_attach(const char *name, const char *devargs)
>> {
>> struct rte_bus *bus;
>> - int ret;
>>
>> if (name == NULL || devargs == NULL) {
>> RTE_LOG(ERR, EAL, "Invalid device or arguments provided\n");
>> @@ -80,22 +79,12 @@ int rte_eal_dev_attach(const char *name, const char *devargs)
>> name);
>> return -EINVAL;
>> }
>> - if (strcmp(bus->name, "pci") == 0)
>> - return rte_eal_hotplug_add("pci", name, devargs);
>> - if (strcmp(bus->name, "vdev") != 0) {
>> - RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
>> - return -ENOTSUP;
>> - }
>> + if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") != 0)
> It seems to be a copy / paste error, it should probably be:
>
> + if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") == 0)
Nice catch. Will fix it in next version.
>
> Now, one could question the relevancy of keeping this API
> (rte_eal_dev_attach / detach), but I guess this is beyond the scope of
> this series.
This is a valid ask. It seems a duplication of
rte_eal_hotplug_add()/rte_eal_hotplug_remove().
Thanks,
Jianfeng
>> + return rte_eal_hotplug_add(bus->name, name, devargs);
>>
>> - /*
>> - * If we haven't found a bus device the user meant to "hotplug" a
>> - * virtual device instead.
>> - */
>> - ret = rte_vdev_init(name, devargs);
>> - if (ret)
>> - RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n",
>> - name);
>> - return ret;
>> + RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
>> +
>> + return -ENOTSUP;
>> }
>>
>> int rte_eal_dev_detach(struct rte_device *dev)
>> --
>> 2.7.4
>>
@@ -67,7 +67,6 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)
int rte_eal_dev_attach(const char *name, const char *devargs)
{
struct rte_bus *bus;
- int ret;
if (name == NULL || devargs == NULL) {
RTE_LOG(ERR, EAL, "Invalid device or arguments provided\n");
@@ -80,22 +79,12 @@ int rte_eal_dev_attach(const char *name, const char *devargs)
name);
return -EINVAL;
}
- if (strcmp(bus->name, "pci") == 0)
- return rte_eal_hotplug_add("pci", name, devargs);
- if (strcmp(bus->name, "vdev") != 0) {
- RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
- return -ENOTSUP;
- }
+ if (strcmp(bus->name, "pci") == 0 || strcmp(bus->name, "vdev") != 0)
+ return rte_eal_hotplug_add(bus->name, name, devargs);
- /*
- * If we haven't found a bus device the user meant to "hotplug" a
- * virtual device instead.
- */
- ret = rte_vdev_init(name, devargs);
- if (ret)
- RTE_LOG(ERR, EAL, "Driver cannot attach the device (%s)\n",
- name);
- return ret;
+ RTE_LOG(ERR, EAL, "Device attach is only supported for PCI and vdev devices.\n");
+
+ return -ENOTSUP;
}
int rte_eal_dev_detach(struct rte_device *dev)