[dpdk-dev] kni: fix compilation issue with KNI_VHOST enabled

Message ID F35DEAC7BCE34641BA9FAC6BCA4A12E70A94A5D0@SHSMSX104.ccr.corp.intel.com (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Zhang, Helin Nov. 16, 2015, 3:18 p.m. UTC
  -----Original Message-----
From: De Lara Guarch, Pablo 

Sent: Monday, November 16, 2015 10:08 PM
To: dev@dpdk.org
Cc: Zhang, Helin <helin.zhang@intel.com>; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>
Subject: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

Fix for the following error, on kernels 4.2.0 or higher, when KNI_VHOST is enabled:

  CC [M]  lib/librte_eal/linuxapp/kni/kni_vhost.o
          lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_vhost_backend_init’:
          lib/librte_eal/linuxapp/kni/kni_vhost.c:669:38: error: too few arguments to function ‘sk_alloc’
  if (!(q = (struct kni_vhost_queue *)sk_alloc(
                                      ^
In file included from lib/librte_eal/linuxapp/kni/kni_vhost.c:27:0:
/usr/src/kernels/4.2.3-300.fc23.x86_64/include/net/sock.h:1515:14: note: declared here  struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
              ^
This change in the kernel was added in the following commit:

Linux: 11aa9c28 ("net: Pass kern from net_proto_family.create to sk_alloc")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

---
 lib/librte_eal/linuxapp/kni/kni_vhost.c | 6 ++++++
 1 file changed, 6 insertions(+)

+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) */
 
 	err = sock_create_lite(AF_UNSPEC, SOCK_RAW, IPPROTO_RAW, &q->sock);
 	if (err)
--
2.5.0
  

Comments

De Lara Guarch, Pablo Nov. 16, 2015, 3:27 p.m. UTC | #1
> -----Original Message-----

> From: Zhang, Helin

> Sent: Monday, November 16, 2015 3:19 PM

> To: De Lara Guarch, Pablo; dev@dpdk.org

> Subject: RE: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

> 

> 

> 

> -----Original Message-----

> From: De Lara Guarch, Pablo

> Sent: Monday, November 16, 2015 10:08 PM

> To: dev@dpdk.org

> Cc: Zhang, Helin <helin.zhang@intel.com>; De Lara Guarch, Pablo

> <pablo.de.lara.guarch@intel.com>

> Subject: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

> 

> Fix for the following error, on kernels 4.2.0 or higher, when KNI_VHOST is

> enabled:

> 

>   CC [M]  lib/librte_eal/linuxapp/kni/kni_vhost.o

>           lib/librte_eal/linuxapp/kni/kni_vhost.c: In function

> ‘kni_vhost_backend_init’:

>           lib/librte_eal/linuxapp/kni/kni_vhost.c:669:38: error: too few

> arguments to function ‘sk_alloc’

>   if (!(q = (struct kni_vhost_queue *)sk_alloc(

>                                       ^

> In file included from lib/librte_eal/linuxapp/kni/kni_vhost.c:27:0:

> /usr/src/kernels/4.2.3-300.fc23.x86_64/include/net/sock.h:1515:14: note:

> declared here  struct sock *sk_alloc(struct net *net, int family, gfp_t

> priority,

>               ^

> This change in the kernel was added in the following commit:

> 

> Linux: 11aa9c28 ("net: Pass kern from net_proto_family.create to

> sk_alloc")

> 

> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

> ---

>  lib/librte_eal/linuxapp/kni/kni_vhost.c | 6 ++++++

>  1 file changed, 6 insertions(+)

> 

> diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c

> b/lib/librte_eal/linuxapp/kni/kni_vhost.c

> index d0c12a6..2346ff3 100644

> --- a/lib/librte_eal/linuxapp/kni/kni_vhost.c

> +++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c

> @@ -666,9 +666,15 @@ kni_vhost_backend_init(struct kni_dev *kni)

>  	if (kni->vhost_queue != NULL)

>  		return -1;

> 

> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)

> +	if (!(q = (struct kni_vhost_queue *)sk_alloc(

> +		      net, AF_UNSPEC, GFP_KERNEL, &kni_raw_proto, 0)))

> Is this a kernel socket or else?


Yes, that's for kernel socket. Should we put a 1? In most parts of the kernel,
"kern" is passed, but we don't have such variable. In others, they pass 0.

Thanks,
Pablo
> 

> /Helin
  
Zhang, Helin Nov. 18, 2015, 7:42 a.m. UTC | #2
> -----Original Message-----

> From: De Lara Guarch, Pablo

> Sent: Monday, November 16, 2015 11:28 PM

> To: Zhang, Helin; dev@dpdk.org

> Subject: RE: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

> 

> 

> 

> > -----Original Message-----

> > From: Zhang, Helin

> > Sent: Monday, November 16, 2015 3:19 PM

> > To: De Lara Guarch, Pablo; dev@dpdk.org

> > Subject: RE: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

> >

> >

> >

> > -----Original Message-----

> > From: De Lara Guarch, Pablo

> > Sent: Monday, November 16, 2015 10:08 PM

> > To: dev@dpdk.org

> > Cc: Zhang, Helin <helin.zhang@intel.com>; De Lara Guarch, Pablo

> > <pablo.de.lara.guarch@intel.com>

> > Subject: [PATCH] kni: fix compilation issue with KNI_VHOST enabled

> >

> > Fix for the following error, on kernels 4.2.0 or higher, when

> > KNI_VHOST is

> > enabled:

> >

> >   CC [M]  lib/librte_eal/linuxapp/kni/kni_vhost.o

> >           lib/librte_eal/linuxapp/kni/kni_vhost.c: In function

> > ‘kni_vhost_backend_init’:

> >           lib/librte_eal/linuxapp/kni/kni_vhost.c:669:38: error: too

> > few arguments to function ‘sk_alloc’

> >   if (!(q = (struct kni_vhost_queue *)sk_alloc(

> >                                       ^ In file included from

> > lib/librte_eal/linuxapp/kni/kni_vhost.c:27:0:

> > /usr/src/kernels/4.2.3-300.fc23.x86_64/include/net/sock.h:1515:14: note:

> > declared here  struct sock *sk_alloc(struct net *net, int family,

> > gfp_t priority,

> >               ^

> > This change in the kernel was added in the following commit:

> >

> > Linux: 11aa9c28 ("net: Pass kern from net_proto_family.create to

> > sk_alloc")

> >

> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

> > ---

> >  lib/librte_eal/linuxapp/kni/kni_vhost.c | 6 ++++++

> >  1 file changed, 6 insertions(+)

> >

> > diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c

> > b/lib/librte_eal/linuxapp/kni/kni_vhost.c

> > index d0c12a6..2346ff3 100644

> > --- a/lib/librte_eal/linuxapp/kni/kni_vhost.c

> > +++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c

> > @@ -666,9 +666,15 @@ kni_vhost_backend_init(struct kni_dev *kni)

> >  	if (kni->vhost_queue != NULL)

> >  		return -1;

> >

> > +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)

> > +	if (!(q = (struct kni_vhost_queue *)sk_alloc(

> > +		      net, AF_UNSPEC, GFP_KERNEL, &kni_raw_proto, 0)))

> > Is this a kernel socket or else?

> 

> Yes, that's for kernel socket. Should we put a 1? In most parts of the kernel,

> "kern" is passed, but we don't have such variable. In others, they pass 0.

Sorry for the delay!
Yes, I think it shouldn't use 0, as it is triggered and used in kernel space.
/Helin

> 

> Thanks,

> Pablo

> >

> > /Helin
  

Patch

diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c b/lib/librte_eal/linuxapp/kni/kni_vhost.c
index d0c12a6..2346ff3 100644
--- a/lib/librte_eal/linuxapp/kni/kni_vhost.c
+++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c
@@ -666,9 +666,15 @@  kni_vhost_backend_init(struct kni_dev *kni)
 	if (kni->vhost_queue != NULL)
 		return -1;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
+	if (!(q = (struct kni_vhost_queue *)sk_alloc(
+		      net, AF_UNSPEC, GFP_KERNEL, &kni_raw_proto, 0)))
Is this a kernel socket or else?

/Helin

+		return -ENOMEM;
+#else
 	if (!(q = (struct kni_vhost_queue *)sk_alloc(
 		      net, AF_UNSPEC, GFP_KERNEL, &kni_raw_proto)))
 		return -ENOMEM;