From 8d8fb8aa5836e719d5fb896693b16afabd5118b9 Mon Sep 17 00:00:00 2001 From: Miguel Bernal Marin Date: Fri, 26 Jun 2015 17:14:37 -0500 Subject: [PATCH] kni: fix vhost build with kernel 4.1 Parameters from sendmsg and recvmsg has been changed in 4.1 kernel. The function pointers belong to proto_ops structure were updated removing the struct kiocb parameter. Linux: 1b784140474e ("net: Remove iocb argument from sendmsg and recvmsg") Signed-off-by: Miguel Bernal Marin Acked-by: Pablo de Lara --- lib/librte_eal/linuxapp/kni/compat.h | 4 ++++ lib/librte_eal/linuxapp/kni/kni_vhost.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h index 1ad22badcb..cf100b6742 100644 --- a/lib/librte_eal/linuxapp/kni/compat.h +++ b/lib/librte_eal/linuxapp/kni/compat.h @@ -23,3 +23,7 @@ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) #define HAVE_IOV_ITER_MSGHDR #endif + +#if ( LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) ) +#define HAVE_KIOCB_MSG_PARAM +#endif /* < 4.1.0 */ diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c b/lib/librte_eal/linuxapp/kni/kni_vhost.c index e01420a98a..f21b47e437 100644 --- a/lib/librte_eal/linuxapp/kni/kni_vhost.c +++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c @@ -353,8 +353,13 @@ except: } static int +#ifdef HAVE_KIOCB_MSG_PARAM kni_sock_sndmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t total_len) +#else +kni_sock_sndmsg(struct socket *sock, + struct msghdr *m, size_t total_len) +#endif /* HAVE_KIOCB_MSG_PARAM */ { struct kni_vhost_queue *q = container_of(sock->sk, struct kni_vhost_queue, sk); @@ -387,8 +392,13 @@ kni_sock_sndmsg(struct kiocb *iocb, struct socket *sock, } static int +#ifdef HAVE_KIOCB_MSG_PARAM kni_sock_rcvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len, int flags) +#else +kni_sock_rcvmsg(struct socket *sock, + struct msghdr *m, size_t len, int flags) +#endif /* HAVE_KIOCB_MSG_PARAM */ { int vnet_hdr_len = 0; int pkt_len = 0; -- 2.20.1