* [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions @ 2018-07-11 14:14 Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 1/3] app/pdump: use hotplug add instead of attach Andrew Rybchenko ` (4 more replies) 0 siblings, 5 replies; 7+ messages in thread From: Andrew Rybchenko @ 2018-07-11 14:14 UTC (permalink / raw) To: dev; +Cc: Thomas Monjalon As discussed in [1] EAL hotplug should be used directly to add/remove devices. app/pdump changes are build-tested only. [1] http://mails.dpdk.org/archives/dev/2018-July/107507.html Andrew Rybchenko (3): app/pdump: use hotplug add instead of attach ethdev: deprecate attach and detach functions eal: deprecate device attach and detach functions app/pdump/main.c | 94 ++++++++++++++++++------- app/test-pmd/Makefile | 1 + app/test-pmd/meson.build | 1 + doc/guides/rel_notes/deprecation.rst | 12 ++++ lib/librte_eal/common/include/rte_dev.h | 2 + lib/librte_ethdev/rte_ethdev.h | 2 + 6 files changed, 88 insertions(+), 24 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] [PATCH 1/3] app/pdump: use hotplug add instead of attach 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko @ 2018-07-11 14:14 ` Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 2/3] ethdev: deprecate attach and detach functions Andrew Rybchenko ` (3 subsequent siblings) 4 siblings, 0 replies; 7+ messages in thread From: Andrew Rybchenko @ 2018-07-11 14:14 UTC (permalink / raw) To: dev; +Cc: Thomas Monjalon rte_eth_dev_attach() is to be deprecated. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> --- app/pdump/main.c | 94 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 24 deletions(-) diff --git a/app/pdump/main.c b/app/pdump/main.c index 6bcf8c498..ac2287124 100644 --- a/app/pdump/main.c +++ b/app/pdump/main.c @@ -38,8 +38,9 @@ #define PDUMP_MSIZE_ARG "mbuf-size" #define PDUMP_NUM_MBUFS_ARG "total-num-mbufs" -#define VDEV_PCAP "net_pcap_%s_%d,tx_pcap=%s" -#define VDEV_IFACE "net_pcap_%s_%d,tx_iface=%s" +#define VDEV_NAME_FMT "net_pcap_%s_%d" +#define VDEV_PCAP_ARGS_FMT "tx_pcap=%s" +#define VDEV_IFACE_ARGS_FMT "tx_iface=%s" #define TX_STREAM_SIZE 64 #define MP_NAME "pdump_pool_%d" @@ -570,6 +571,7 @@ create_mp_ring_vdev(void) uint16_t portid; struct pdump_tuples *pt = NULL; struct rte_mempool *mbuf_pool = NULL; + char vdev_name[SIZE]; char vdev_args[SIZE]; char ring_name[SIZE]; char mempool_name[SIZE]; @@ -619,17 +621,28 @@ create_mp_ring_vdev(void) } /* create vdevs */ + snprintf(vdev_name, sizeof(vdev_name), + VDEV_NAME_FMT, RX_STR, i); (pt->rx_vdev_stream_type == IFACE) ? - snprintf(vdev_args, SIZE, VDEV_IFACE, RX_STR, i, - pt->rx_dev) : - snprintf(vdev_args, SIZE, VDEV_PCAP, RX_STR, i, - pt->rx_dev); - if (rte_eth_dev_attach(vdev_args, &portid) < 0) { + snprintf(vdev_args, sizeof(vdev_args), + VDEV_IFACE_ARGS_FMT, pt->rx_dev) : + snprintf(vdev_args, sizeof(vdev_args), + VDEV_PCAP_ARGS_FMT, pt->rx_dev); + if (rte_eal_hotplug_add("vdev", vdev_name, + vdev_args) < 0) { cleanup_rings(); rte_exit(EXIT_FAILURE, "vdev creation failed:%s:%d\n", __func__, __LINE__); } + if (rte_eth_dev_get_port_by_name(vdev_name, + &portid) != 0) { + rte_eal_hotplug_remove("vdev", vdev_name); + cleanup_rings(); + rte_exit(EXIT_FAILURE, + "cannot find added vdev %s:%s:%d\n", + vdev_name, __func__, __LINE__); + } pt->rx_vdev_id = portid; /* configure vdev */ @@ -638,18 +651,29 @@ create_mp_ring_vdev(void) if (pt->single_pdump_dev) pt->tx_vdev_id = portid; else { - (pt->tx_vdev_stream_type == IFACE) ? - snprintf(vdev_args, SIZE, VDEV_IFACE, TX_STR, i, - pt->tx_dev) : - snprintf(vdev_args, SIZE, VDEV_PCAP, TX_STR, i, - pt->tx_dev); - if (rte_eth_dev_attach(vdev_args, - &portid) < 0) { + snprintf(vdev_name, sizeof(vdev_name), + VDEV_NAME_FMT, TX_STR, i); + (pt->rx_vdev_stream_type == IFACE) ? + snprintf(vdev_args, sizeof(vdev_args), + VDEV_IFACE_ARGS_FMT, pt->tx_dev) : + snprintf(vdev_args, sizeof(vdev_args), + VDEV_PCAP_ARGS_FMT, pt->tx_dev); + if (rte_eal_hotplug_add("vdev", vdev_name, + vdev_args) < 0) { cleanup_rings(); rte_exit(EXIT_FAILURE, "vdev creation failed:" "%s:%d\n", __func__, __LINE__); } + if (rte_eth_dev_get_port_by_name(vdev_name, + &portid) != 0) { + rte_eal_hotplug_remove("vdev", + vdev_name); + cleanup_rings(); + rte_exit(EXIT_FAILURE, + "cannot find added vdev %s:%s:%d\n", + vdev_name, __func__, __LINE__); + } pt->tx_vdev_id = portid; /* configure vdev */ @@ -667,17 +691,28 @@ create_mp_ring_vdev(void) rte_strerror(rte_errno)); } + snprintf(vdev_name, sizeof(vdev_name), + VDEV_NAME_FMT, RX_STR, i); (pt->rx_vdev_stream_type == IFACE) ? - snprintf(vdev_args, SIZE, VDEV_IFACE, RX_STR, i, - pt->rx_dev) : - snprintf(vdev_args, SIZE, VDEV_PCAP, RX_STR, i, - pt->rx_dev); - if (rte_eth_dev_attach(vdev_args, &portid) < 0) { + snprintf(vdev_args, sizeof(vdev_args), + VDEV_IFACE_ARGS_FMT, pt->rx_dev) : + snprintf(vdev_args, sizeof(vdev_args), + VDEV_PCAP_ARGS_FMT, pt->rx_dev); + if (rte_eal_hotplug_add("vdev", vdev_name, + vdev_args) < 0) { cleanup_rings(); rte_exit(EXIT_FAILURE, "vdev creation failed:%s:%d\n", __func__, __LINE__); } + if (rte_eth_dev_get_port_by_name(vdev_name, + &portid) != 0) { + rte_eal_hotplug_remove("vdev", vdev_name); + cleanup_rings(); + rte_exit(EXIT_FAILURE, + "cannot find added vdev %s:%s:%d\n", + vdev_name, __func__, __LINE__); + } pt->rx_vdev_id = portid; /* configure vdev */ configure_vdev(pt->rx_vdev_id); @@ -693,16 +728,27 @@ create_mp_ring_vdev(void) rte_strerror(rte_errno)); } + snprintf(vdev_name, sizeof(vdev_name), + VDEV_NAME_FMT, TX_STR, i); (pt->tx_vdev_stream_type == IFACE) ? - snprintf(vdev_args, SIZE, VDEV_IFACE, TX_STR, i, - pt->tx_dev) : - snprintf(vdev_args, SIZE, VDEV_PCAP, TX_STR, i, - pt->tx_dev); - if (rte_eth_dev_attach(vdev_args, &portid) < 0) { + snprintf(vdev_args, sizeof(vdev_args), + VDEV_IFACE_ARGS_FMT, pt->tx_dev) : + snprintf(vdev_args, sizeof(vdev_args), + VDEV_PCAP_ARGS_FMT, pt->tx_dev); + if (rte_eal_hotplug_add("vdev", vdev_name, + vdev_args) < 0) { cleanup_rings(); rte_exit(EXIT_FAILURE, "vdev creation failed\n"); } + if (rte_eth_dev_get_port_by_name(vdev_name, + &portid) != 0) { + rte_eal_hotplug_remove("vdev", vdev_name); + cleanup_rings(); + rte_exit(EXIT_FAILURE, + "cannot find added vdev %s:%s:%d\n", + vdev_name, __func__, __LINE__); + } pt->tx_vdev_id = portid; /* configure vdev */ -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] [PATCH 2/3] ethdev: deprecate attach and detach functions 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 1/3] app/pdump: use hotplug add instead of attach Andrew Rybchenko @ 2018-07-11 14:14 ` Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 3/3] eal: deprecate device " Andrew Rybchenko ` (2 subsequent siblings) 4 siblings, 0 replies; 7+ messages in thread From: Andrew Rybchenko @ 2018-07-11 14:14 UTC (permalink / raw) To: dev; +Cc: Thomas Monjalon These functions are buggy from the very beginning and should not be used. Generic EAL hotplug mechanisms should be used instead. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> --- app/test-pmd/Makefile | 1 + app/test-pmd/meson.build | 1 + doc/guides/rel_notes/deprecation.rst | 7 +++++++ lib/librte_ethdev/rte_ethdev.h | 2 ++ 4 files changed, 11 insertions(+) diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile index a5a827bbd..ae9897510 100644 --- a/app/test-pmd/Makefile +++ b/app/test-pmd/Makefile @@ -13,6 +13,7 @@ APP = testpmd CFLAGS += -DALLOW_EXPERIMENTAL_API CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) +CFLAGS += -Wno-deprecated-declarations # # all source are stored in SRCS-y diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build index 4c9fbbfda..861e157ea 100644 --- a/app/test-pmd/meson.build +++ b/app/test-pmd/meson.build @@ -4,6 +4,7 @@ # override default name to drop the hyphen name = 'testpmd' allow_experimental_apis = true +cflags += '-Wno-deprecated-declarations' sources = files('cmdline.c', 'cmdline_flow.c', 'cmdline_mtr.c', diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 8df41cb6a..fc3bf1a0b 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -72,6 +72,13 @@ Deprecation Notices Target release for removal of the legacy API will be defined once most PMDs have switched to rte_flow. +* ethdev: In v18.11 ``rte_eth_dev_attach()`` and ``rte_eth_dev_detach()`` + will be removed. + Hotplug functions ``rte_eal_hotplug_add()`` and ``rte_eal_hotplug_remove()`` + should be used instread. + Function ``rte_eth_dev_get_port_by_name()`` may be used to find + identifier of the added port. + * pdump: As we changed to use generic IPC, some changes in APIs and structure are expected in subsequent release. diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index f5f593b31..46c569a7f 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1433,6 +1433,7 @@ uint16_t __rte_experimental rte_eth_dev_count_total(void); * @return * 0 on success and port_id is filled, negative on error */ +__rte_deprecated int rte_eth_dev_attach(const char *devargs, uint16_t *port_id); /** @@ -1448,6 +1449,7 @@ int rte_eth_dev_attach(const char *devargs, uint16_t *port_id); * @return * 0 on success and devname is filled, negative on error */ +__rte_deprecated int rte_eth_dev_detach(uint16_t port_id, char *devname); /** -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] [PATCH 3/3] eal: deprecate device attach and detach functions 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 1/3] app/pdump: use hotplug add instead of attach Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 2/3] ethdev: deprecate attach and detach functions Andrew Rybchenko @ 2018-07-11 14:14 ` Andrew Rybchenko 2018-07-26 21:32 ` [dpdk-dev] [PATCH 0/3] deprecate " Thomas Monjalon 2018-08-01 16:26 ` Stephen Hemminger 4 siblings, 0 replies; 7+ messages in thread From: Andrew Rybchenko @ 2018-07-11 14:14 UTC (permalink / raw) To: dev; +Cc: Thomas Monjalon Hotplug functions should be used directly to add and remove devices. Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> --- doc/guides/rel_notes/deprecation.rst | 5 +++++ lib/librte_eal/common/include/rte_dev.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index fc3bf1a0b..2d8f03472 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -79,6 +79,11 @@ Deprecation Notices Function ``rte_eth_dev_get_port_by_name()`` may be used to find identifier of the added port. +* eal: In v18.11 ``rte_eal_dev_attach()`` and ``rte_eal_dev_detach()`` + will be removed. + Hotplug functions ``rte_eal_hotplug_add()`` and ``rte_eal_hotplug_remove()`` + should be used directly. + * pdump: As we changed to use generic IPC, some changes in APIs and structure are expected in subsequent release. diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h index ba6e445fc..a51f296e6 100644 --- a/lib/librte_eal/common/include/rte_dev.h +++ b/lib/librte_eal/common/include/rte_dev.h @@ -175,6 +175,7 @@ struct rte_device { * @return * 0 on success, negative on error. */ +__rte_deprecated int rte_eal_dev_attach(const char *name, const char *devargs); /** @@ -185,6 +186,7 @@ int rte_eal_dev_attach(const char *name, const char *devargs); * @return * 0 on success, negative on error. */ +__rte_deprecated int rte_eal_dev_detach(struct rte_device *dev); /** -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko ` (2 preceding siblings ...) 2018-07-11 14:14 ` [dpdk-dev] [PATCH 3/3] eal: deprecate device " Andrew Rybchenko @ 2018-07-26 21:32 ` Thomas Monjalon 2018-08-01 16:26 ` Stephen Hemminger 4 siblings, 0 replies; 7+ messages in thread From: Thomas Monjalon @ 2018-07-26 21:32 UTC (permalink / raw) To: Andrew Rybchenko; +Cc: dev, gaetan.rivet, shreyansh.jain, david.marchand 11/07/2018 16:14, Andrew Rybchenko: > As discussed in [1] EAL hotplug should be used directly to add/remove devices. > > app/pdump changes are build-tested only. > > [1] http://mails.dpdk.org/archives/dev/2018-July/107507.html > > Andrew Rybchenko (3): > app/pdump: use hotplug add instead of attach > ethdev: deprecate attach and detach functions > eal: deprecate device attach and detach functions Acked-by: Thomas Monjalon <thomas@monjalon.net> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko ` (3 preceding siblings ...) 2018-07-26 21:32 ` [dpdk-dev] [PATCH 0/3] deprecate " Thomas Monjalon @ 2018-08-01 16:26 ` Stephen Hemminger 2018-08-05 23:10 ` Thomas Monjalon 4 siblings, 1 reply; 7+ messages in thread From: Stephen Hemminger @ 2018-08-01 16:26 UTC (permalink / raw) To: Andrew Rybchenko; +Cc: dev, Thomas Monjalon On Wed, 11 Jul 2018 15:14:07 +0100 Andrew Rybchenko <arybchenko@solarflare.com> wrote: > As discussed in [1] EAL hotplug should be used directly to add/remove devices. > > app/pdump changes are build-tested only. > > [1] http://mails.dpdk.org/archives/dev/2018-July/107507.html > > Andrew Rybchenko (3): > app/pdump: use hotplug add instead of attach > ethdev: deprecate attach and detach functions > eal: deprecate device attach and detach functions > > app/pdump/main.c | 94 ++++++++++++++++++------- > app/test-pmd/Makefile | 1 + > app/test-pmd/meson.build | 1 + > doc/guides/rel_notes/deprecation.rst | 12 ++++ > lib/librte_eal/common/include/rte_dev.h | 2 + > lib/librte_ethdev/rte_ethdev.h | 2 + > 6 files changed, 88 insertions(+), 24 deletions(-) > Acked-by: Stephen Hemminger <stephen@networkplumber.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions 2018-08-01 16:26 ` Stephen Hemminger @ 2018-08-05 23:10 ` Thomas Monjalon 0 siblings, 0 replies; 7+ messages in thread From: Thomas Monjalon @ 2018-08-05 23:10 UTC (permalink / raw) To: Andrew Rybchenko; +Cc: dev, Stephen Hemminger 01/08/2018 18:26, Stephen Hemminger: > On Wed, 11 Jul 2018 15:14:07 +0100 > Andrew Rybchenko <arybchenko@solarflare.com> wrote: > > > As discussed in [1] EAL hotplug should be used directly to add/remove devices. > > > > app/pdump changes are build-tested only. > > > > [1] http://mails.dpdk.org/archives/dev/2018-July/107507.html > > > > Andrew Rybchenko (3): > > app/pdump: use hotplug add instead of attach > > ethdev: deprecate attach and detach functions > > eal: deprecate device attach and detach functions > > Acked-by: Stephen Hemminger <stephen@networkplumber.org> There are only 2 acks, probably because everybody is on holidays, but there is no comment after more than 3 weeks. I don't want to apply the code change in pdump app after -rc3, so it is applied in 18.08-rc3. Thanks ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-08-05 23:10 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-07-11 14:14 [dpdk-dev] [PATCH 0/3] deprecate attach and detach functions Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 1/3] app/pdump: use hotplug add instead of attach Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 2/3] ethdev: deprecate attach and detach functions Andrew Rybchenko 2018-07-11 14:14 ` [dpdk-dev] [PATCH 3/3] eal: deprecate device " Andrew Rybchenko 2018-07-26 21:32 ` [dpdk-dev] [PATCH 0/3] deprecate " Thomas Monjalon 2018-08-01 16:26 ` Stephen Hemminger 2018-08-05 23:10 ` Thomas Monjalon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).