]> git.droids-corp.org - dpdk.git/commitdiff
devargs: rename legacy API
authorGaetan Rivet <gaetan.rivet@6wind.com>
Mon, 23 Apr 2018 23:54:52 +0000 (01:54 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 25 Apr 2018 02:00:37 +0000 (04:00 +0200)
The previous symbols were deprecated for two releases.
They are now marked as such and cannot be used anymore.

They are replaced by ones respecting the new namespace that are marked
experimental.

As a result, eth_dev attach and detach are slightly reworked to follow
the changes.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
app/test-pmd/cmdline.c
doc/guides/rel_notes/deprecation.rst
drivers/net/vdev_netvsc/vdev_netvsc.c
examples/bond/Makefile
examples/bond/main.c
lib/librte_eal/common/eal_common_devargs.c
lib/librte_eal/common/eal_common_options.c
lib/librte_eal/common/include/rte_devargs.h
lib/librte_eal/rte_eal_version.map
lib/librte_ether/rte_ethdev.c
test/test/commands.c

index 0b442c3a69d3861c0f642ee3619bdb92b3b47299..18470c6fcaaea6751458fd33a30310f21823f61a 100644 (file)
@@ -8754,7 +8754,7 @@ static void cmd_dump_parsed(void *parsed_result,
        else if (!strcmp(res->dump, "dump_mempool"))
                rte_mempool_list_dump(stdout);
        else if (!strcmp(res->dump, "dump_devargs"))
-               rte_eal_devargs_dump(stdout);
+               rte_devargs_dump(stdout);
        else if (!strcmp(res->dump, "dump_log_types"))
                rte_log_dump(stdout);
 }
index b35aef3501060941faa5c0da81d755cd981d4d0f..72ab33cb7e96f5238ed1bac2c8d04906190c14df 100644 (file)
@@ -18,12 +18,8 @@ Deprecation Notices
   - The enum ``rte_devtype`` was used to identify a bus and will disappear.
   - Functions previously deprecated will change or disappear:
 
-    + ``rte_eal_devargs_add``
     + ``rte_eal_devargs_type_count``
-    + ``rte_eal_parse_devargs_str``, replaced by ``rte_eal_devargs_parse``
     + ``rte_eal_devargs_parse`` will change its format and use.
-    + all ``rte_devargs`` related functions will be renamed, changing the
-      ``rte_eal_devargs_`` prefix to ``rte_devargs_``.
 
 * pci: Several exposed functions are misnamed.
   The following functions are deprecated starting from v17.11 and are replaced:
index 8b85711d4bd9c4a942dec0b874158658524e84cd..f902dbe27ae68b40eaabe203a00809b7797a2370 100644 (file)
@@ -803,7 +803,7 @@ vdev_netvsc_scan_callback(__rte_unused void *arg)
                vdev_netvsc_cmp_rte_device, VDEV_NETVSC_DRIVER_NAME);
        if (dev)
                return;
-       if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, VDEV_NETVSC_DRIVER_NAME))
+       if (rte_devargs_add(RTE_DEVTYPE_VIRTUAL, VDEV_NETVSC_DRIVER_NAME))
                DRV_LOG(ERR, "unable to add netvsc devargs.");
 }
 
index e7afce35879511eb352940dcc710ee7861d671ec..6b0324a42cdf2493241639678ac12329c877c0c7 100644 (file)
@@ -62,6 +62,7 @@ endif
 
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LDLIBS += -lrte_pmd_bond
index d8edc642b6bd106deb9319984bb9a4d2130e77b5..65e0edd2557ddad29e612c4b321ab654afd5e113 100644 (file)
@@ -742,7 +742,7 @@ main(int argc, char *argv[])
 
        /* init EAL */
        ret = rte_eal_init(argc, argv);
-       rte_eal_devargs_dump(stdout);
+       rte_devargs_dump(stdout);
        if (ret < 0)
                rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
        argc -= ret;
index 24d0f6f44979c9fdeebe6c4a98ea358e7c35fe0a..b0434158b08c0d67507db3802fa6e99a7d2710ad 100644 (file)
@@ -137,8 +137,9 @@ rte_devargs_insert(struct rte_devargs *da)
 }
 
 /* store a whitelist parameter for later parsing */
+__rte_experimental
 int
-rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
+rte_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 {
        struct rte_devargs *devargs = NULL;
        struct rte_bus *bus = NULL;
@@ -192,8 +193,9 @@ rte_devargs_remove(const char *busname, const char *devname)
 }
 
 /* count the number of devices of a specified type */
+__rte_experimental
 unsigned int
-rte_eal_devargs_type_count(enum rte_devtype devtype)
+rte_devargs_type_count(enum rte_devtype devtype)
 {
        struct rte_devargs *devargs;
        unsigned int count = 0;
@@ -207,8 +209,9 @@ rte_eal_devargs_type_count(enum rte_devtype devtype)
 }
 
 /* dump the user devices on the console */
+__rte_experimental
 void
-rte_eal_devargs_dump(FILE *f)
+rte_devargs_dump(FILE *f)
 {
        struct rte_devargs *devargs;
 
index 40c5b26f3c1db937febd59b3dfc5004f9364870c..e1a1a3c5634b88e2efab524a5a489496d7792374 100644 (file)
@@ -153,7 +153,7 @@ eal_option_device_parse(void)
 
        TAILQ_FOREACH_SAFE(devopt, &devopt_list, next, tmp) {
                if (ret == 0) {
-                       ret = rte_eal_devargs_add(devopt->type, devopt->arg);
+                       ret = rte_devargs_add(devopt->type, devopt->arg);
                        if (ret)
                                RTE_LOG(ERR, EAL, "Unable to parse device '%s'\n",
                                        devopt->arg);
index 0806f23193d7ae3479b166d563a788e0f2e2bfc4..58fbd90a2ddc2f8d9c6b4fbed7fbd29d4d055105 100644 (file)
@@ -60,6 +60,7 @@ struct rte_devargs {
 };
 
 /**
+ * @deprecated
  * Parse a devargs string.
  *
  * For PCI devices, the format of arguments string is "PCI_ADDR" or
@@ -84,6 +85,7 @@ struct rte_devargs {
  *   - 0 on success
  *   - A negative value on error
  */
+__rte_deprecated
 int rte_eal_parse_devargs_str(const char *devargs_str,
                                char **drvname, char **drvargs);
 
@@ -153,6 +155,24 @@ rte_devargs_insert(struct rte_devargs *da);
  *   - 0 on success
  *   - A negative value on error
  */
+__rte_experimental
+int rte_devargs_add(enum rte_devtype devtype, const char *devargs_str);
+
+/**
+ * @deprecated
+ * Add a device to the user device list
+ * See rte_devargs_parse() for details.
+ *
+ * @param devtype
+ *   The type of the device.
+ * @param devargs_str
+ *   The arguments as given by the user.
+ *
+ * @return
+ *   - 0 on success
+ *   - A negative value on error
+ */
+__rte_deprecated
 int rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str);
 
 /**
@@ -184,6 +204,21 @@ int rte_devargs_remove(const char *busname,
  * @return
  *   The number of devices.
  */
+__rte_experimental
+unsigned int
+rte_devargs_type_count(enum rte_devtype devtype);
+
+/**
+ * @deprecated
+ * Count the number of user devices of a specified type
+ *
+ * @param devtype
+ *   The type of the devices to counted.
+ *
+ * @return
+ *   The number of devices.
+ */
+__rte_deprecated
 unsigned int
 rte_eal_devargs_type_count(enum rte_devtype devtype);
 
@@ -193,6 +228,17 @@ rte_eal_devargs_type_count(enum rte_devtype devtype);
  * @param f
  *   A pointer to a file for output
  */
+__rte_experimental
+void rte_devargs_dump(FILE *f);
+
+/**
+ * @deprecated
+ * This function dumps the list of user device and their arguments.
+ *
+ * @param f
+ *   A pointer to a file for output
+ */
+__rte_deprecated
 void rte_eal_devargs_dump(FILE *f);
 
 /**
index d33fbe9390e30757b754005ca2d36899e6b1c828..42540ff7a890541322ced701def5e8bf02eea519 100644 (file)
@@ -217,10 +217,13 @@ EXPERIMENTAL {
        rte_dev_event_callback_unregister;
        rte_dev_event_monitor_start;
        rte_dev_event_monitor_stop;
+       rte_devargs_add;
+       rte_devargs_dump;
        rte_devargs_insert;
        rte_devargs_next;
        rte_devargs_parse;
        rte_devargs_remove;
+       rte_devargs_type_count;
        rte_eal_cleanup;
        rte_eal_hotplug_add;
        rte_eal_hotplug_remove;
index 7821a88838ed730293dfaac01cf208168e8d61d4..f0f53d4352e42b267026774fcf40fdc9a43d41c4 100644 (file)
@@ -618,27 +618,28 @@ eth_err(uint16_t port_id, int ret)
 int
 rte_eth_dev_attach(const char *devargs, uint16_t *port_id)
 {
-       int ret = -1;
        int current = rte_eth_dev_count_total();
-       char *name = NULL;
-       char *args = NULL;
+       struct rte_devargs da;
+       int ret = -1;
+
+       memset(&da, 0, sizeof(da));
 
        if ((devargs == NULL) || (port_id == NULL)) {
                ret = -EINVAL;
                goto err;
        }
 
-       /* parse devargs, then retrieve device name and args */
-       if (rte_eal_parse_devargs_str(devargs, &name, &args))
+       /* parse devargs */
+       if (rte_devargs_parse(&da, "%s", devargs))
                goto err;
 
-       ret = rte_eal_dev_attach(name, args);
+       ret = rte_eal_hotplug_add(da.bus->name, da.name, da.args);
        if (ret < 0)
                goto err;
 
        /* no point looking at the port count if no port exists */
        if (!rte_eth_dev_count_total()) {
-               ethdev_log(ERR, "No port found for device (%s)", name);
+               ethdev_log(ERR, "No port found for device (%s)", da.name);
                ret = -1;
                goto err;
        }
@@ -656,45 +657,42 @@ rte_eth_dev_attach(const char *devargs, uint16_t *port_id)
        ret = 0;
 
 err:
-       free(name);
-       free(args);
+       free(da.args);
        return ret;
 }
 
 /* detach the device, then store the name of the device */
 int
-rte_eth_dev_detach(uint16_t port_id, char *name)
+rte_eth_dev_detach(uint16_t port_id, char *name __rte_unused)
 {
+       struct rte_device *dev;
+       struct rte_bus *bus;
        uint32_t dev_flags;
        int ret = -1;
 
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
 
-       if (name == NULL) {
-               ret = -EINVAL;
-               goto err;
-       }
-
        dev_flags = rte_eth_devices[port_id].data->dev_flags;
        if (dev_flags & RTE_ETH_DEV_BONDED_SLAVE) {
                ethdev_log(ERR,
                        "Port %" PRIu16 " is bonded, cannot detach", port_id);
-               ret = -ENOTSUP;
-               goto err;
+               return -ENOTSUP;
        }
 
-       snprintf(name, sizeof(rte_eth_devices[port_id].data->name),
-                "%s", rte_eth_devices[port_id].data->name);
+       dev = rte_eth_devices[port_id].device;
+       if (dev == NULL)
+               return -EINVAL;
+
+       bus = rte_bus_find_by_device(dev);
+       if (bus == NULL)
+               return -ENOENT;
 
-       ret = rte_eal_dev_detach(rte_eth_devices[port_id].device);
+       ret = rte_eal_hotplug_remove(bus->name, dev->name);
        if (ret < 0)
-               goto err;
+               return ret;
 
        rte_eth_dev_release_port(&rte_eth_devices[port_id]);
        return 0;
-
-err:
-       return ret;
 }
 
 static int
index 6bfdc0272a16246606d9ea5c7decf711e3012677..94fbc310ed818b42e9815f6ff48d9a969733d303 100644 (file)
@@ -132,7 +132,7 @@ static void cmd_dump_parsed(void *parsed_result,
        else if (!strcmp(res->dump, "dump_mempool"))
                rte_mempool_list_dump(stdout);
        else if (!strcmp(res->dump, "dump_devargs"))
-               rte_eal_devargs_dump(stdout);
+               rte_devargs_dump(stdout);
        else if (!strcmp(res->dump, "dump_log_types"))
                rte_log_dump(stdout);
        else if (!strcmp(res->dump, "dump_malloc_stats"))