[dpdk-dev] app/testpmd: link with virtio PMD when using shared libraries

Message ID e6a0258739baaf4058a367f065b77f03f594ad42.1510935549.git.tredaelli@redhat.com (mailing list archive)
State Rejected, archived
Delegated to: Yuanhan Liu
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Timothy Redaelli Nov. 17, 2017, 4:19 p.m. UTC
  testpmd is often used inside a VM to test the OVS PVP scenario.
This commit makes testpmd to link to virtio PMD when DPDK is built as
shared libraries too.

Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
---
 app/test-pmd/Makefile | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Luca Boccassi Nov. 17, 2017, 4:43 p.m. UTC | #1
On Fri, 2017-11-17 at 17:19 +0100, Timothy Redaelli wrote:
> testpmd is often used inside a VM to test the OVS PVP scenario.
> This commit makes testpmd to link to virtio PMD when DPDK is built as
> shared libraries too.
> 
> Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
> ---
>  app/test-pmd/Makefile | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
> index 4993c9184..ffc370f0e 100644
> --- a/app/test-pmd/Makefile
> +++ b/app/test-pmd/Makefile
> @@ -87,6 +87,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_SOFTNIC),y)
>  LDLIBS += -lrte_pmd_softnic
>  endif
>  
> +ifeq ($(CONFIG_RTE_LIBRTE_VIRTIO_PMD),y)
> +LDLIBS += -lrte_pmd_virtio
> +endif
> +
>  endif
>  
>  CFLAGS_cmdline.o := -D_GNU_SOURCE

Acked-by: <bluca@debian.org>
  
Eelco Chaudron Nov. 20, 2017, 10:27 a.m. UTC | #2
On 17/11/17 17:19, Timothy Redaelli wrote:
> testpmd is often used inside a VM to test the OVS PVP scenario.
> This commit makes testpmd to link to virtio PMD when DPDK is built as
> shared libraries too.
>
> Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
> ---
>   app/test-pmd/Makefile | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
> index 4993c9184..ffc370f0e 100644
> --- a/app/test-pmd/Makefile
> +++ b/app/test-pmd/Makefile
> @@ -87,6 +87,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_SOFTNIC),y)
>   LDLIBS += -lrte_pmd_softnic
>   endif
>   
> +ifeq ($(CONFIG_RTE_LIBRTE_VIRTIO_PMD),y)
> +LDLIBS += -lrte_pmd_virtio
> +endif
> +
>   endif
>   
>   CFLAGS_cmdline.o := -D_GNU_SOURCE


Acked-by: Eelco Chaudron <echaudro@redhat.com>
  
Thomas Monjalon Nov. 29, 2017, 10:23 p.m. UTC | #3
20/11/2017 11:27, Eelco Chaudron:
> On 17/11/17 17:19, Timothy Redaelli wrote:
> > testpmd is often used inside a VM to test the OVS PVP scenario.
> > This commit makes testpmd to link to virtio PMD when DPDK is built as
> > shared libraries too.
> >
> > Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>
> 
> Acked-by: Eelco Chaudron <echaudro@redhat.com>

I really doubt it is the right fix.
This PMD should be dynamically linked with dlopen as a plugin.
It can be done with -d option or by specifying the plugin directory
at compilation time in CONFIG_RTE_EAL_PMD_PATH.
  
Timothy Redaelli Nov. 30, 2017, 11:21 a.m. UTC | #4
On Wed, 29 Nov 2017 23:23:40 +0100
Thomas Monjalon <thomas@monjalon.net> wrote:

> 20/11/2017 11:27, Eelco Chaudron:
> > On 17/11/17 17:19, Timothy Redaelli wrote:  
> > > testpmd is often used inside a VM to test the OVS PVP scenario.
> > > This commit makes testpmd to link to virtio PMD when DPDK is
> > > built as shared libraries too.
> > >
> > > Signed-off-by: Timothy Redaelli <tredaelli@redhat.com>  
> > 
> > Acked-by: Eelco Chaudron <echaudro@redhat.com>  
> 
> I really doubt it is the right fix.
> This PMD should be dynamically linked with dlopen as a plugin.
> It can be done with -d option or by specifying the plugin directory
> at compilation time in CONFIG_RTE_EAL_PMD_PATH.

Hi,
I checked that CONFIG_RTE_EAL_PMD_PATH is set correctly when we build
dpdk in Fedora, but unlucky the symlinks for each pmd from the PMD_PATH
to the real librte_pmd_* library (installed in /usr/lib64) on Fedora is
broken since it points to the .so file directly, that is only installed
by dpdk-devel package, instead of correctly point to the .so.[0-9] one
that is installed by the dpdk package and so my patch is not needed
and I'll send the fix on the dpdk Fedora spec file instead.

Just a little question: if testpmd loads the pmds dynamically using
dlopen, why in app/test-pmd/Makefile some PMD are linked at
build time?

Thank you and sorry for the noise.
  
Thomas Monjalon Nov. 30, 2017, 1:16 p.m. UTC | #5
30/11/2017 12:21, Timothy Redaelli:
> Just a little question: if testpmd loads the pmds dynamically using
> dlopen, why in app/test-pmd/Makefile some PMD are linked at
> build time?

Some PMD have an API. That's why they need to be directly linked
by the applications calling these driver-specific functions.
  

Patch

diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
index 4993c9184..ffc370f0e 100644
--- a/app/test-pmd/Makefile
+++ b/app/test-pmd/Makefile
@@ -87,6 +87,10 @@  ifeq ($(CONFIG_RTE_LIBRTE_PMD_SOFTNIC),y)
 LDLIBS += -lrte_pmd_softnic
 endif
 
+ifeq ($(CONFIG_RTE_LIBRTE_VIRTIO_PMD),y)
+LDLIBS += -lrte_pmd_virtio
+endif
+
 endif
 
 CFLAGS_cmdline.o := -D_GNU_SOURCE