diff options
Diffstat (limited to 'meta-isg/common/recipes-extended/dpdk/dpdk/dpdk-2.0.0-kni-fix-vhost-build-with-kernels-3.19-and-4.0.patch')
-rw-r--r-- | meta-isg/common/recipes-extended/dpdk/dpdk/dpdk-2.0.0-kni-fix-vhost-build-with-kernels-3.19-and-4.0.patch | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/meta-isg/common/recipes-extended/dpdk/dpdk/dpdk-2.0.0-kni-fix-vhost-build-with-kernels-3.19-and-4.0.patch b/meta-isg/common/recipes-extended/dpdk/dpdk/dpdk-2.0.0-kni-fix-vhost-build-with-kernels-3.19-and-4.0.patch deleted file mode 100644 index a083fb1e..00000000 --- a/meta-isg/common/recipes-extended/dpdk/dpdk/dpdk-2.0.0-kni-fix-vhost-build-with-kernels-3.19-and-4.0.patch +++ /dev/null @@ -1,141 +0,0 @@ -From d4903f024ede0e54cc5e025e2cb54309b1164d22 Mon Sep 17 00:00:00 2001 -From: Pablo de Lara <pablo.de.lara.guarch@intel.com> -Date: Tue, 5 May 2015 15:08:00 +0100 -Subject: [PATCH 1/2] kni: fix vhost build with kernels 3.19 and 4.0 - -Upstream-Status: Backport [2.1.0] - -Due to commit c0371da6 in kernel 3.19, which removed msg_iov -and msg_iovlen from struct msghdr, DPDK would not build. -Also, functions memcpy_toiovecend and memcpy_fromiovecend -were removed in commits ba7438ae and 57dd8a07, being substituted by -copy_from_iter and copy_to_iter. - -This patch makes use of struct iov_iter, which has references -to msg_iov and msg_iovln, and makes use of copy_from_iter -and copy_to_iter. - -Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> -Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> -(cherry picked from commit 45e63ba8db314f75b8c969f3f952dee87f209129) -Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com> ---- - lib/librte_eal/linuxapp/kni/compat.h | 4 ++++ - lib/librte_eal/linuxapp/kni/kni_vhost.c | 37 ++++++++++++++++++++++++++------- - 2 files changed, 33 insertions(+), 8 deletions(-) - -diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h -index 1313523..1ad22ba 100644 ---- a/lib/librte_eal/linuxapp/kni/compat.h -+++ b/lib/librte_eal/linuxapp/kni/compat.h -@@ -19,3 +19,7 @@ - #define sk_sleep(s) (s)->sk_sleep - - #endif /* < 2.6.35 */ -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) -+#define HAVE_IOV_ITER_MSGHDR -+#endif -diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c b/lib/librte_eal/linuxapp/kni/kni_vhost.c -index 7141f83..83d3351 100644 ---- a/lib/librte_eal/linuxapp/kni/kni_vhost.c -+++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c -@@ -76,7 +76,7 @@ static struct proto kni_raw_proto = { - }; - - static inline int --kni_vhost_net_tx(struct kni_dev *kni, struct iovec *iov, -+kni_vhost_net_tx(struct kni_dev *kni, struct msghdr *m, - unsigned offset, unsigned len) - { - struct rte_kni_mbuf *pkt_kva = NULL; -@@ -84,7 +84,11 @@ kni_vhost_net_tx(struct kni_dev *kni, struct iovec *iov, - int ret; - - KNI_DBG_TX("tx offset=%d, len=%d, iovlen=%d\n", -- offset, len, (int)iov->iov_len); -+#ifdef HAVE_IOV_ITER_MSGHDR -+ offset, len, (int)m->msg_iter.iov->iov_len); -+#else -+ offset, len, (int)m->msg_iov->iov_len); -+#endif - - /** - * Check if it has at least one free entry in tx_q and -@@ -108,7 +112,12 @@ kni_vhost_net_tx(struct kni_dev *kni, struct iovec *iov, - data_kva = pkt_kva->buf_addr + pkt_kva->data_off - - kni->mbuf_va + kni->mbuf_kva; - -- memcpy_fromiovecend(data_kva, iov, offset, len); -+#ifdef HAVE_IOV_ITER_MSGHDR -+ copy_from_iter(data_kva, len, &m->msg_iter); -+#else -+ memcpy_fromiovecend(data_kva, m->msg_iov, offset, len); -+#endif -+ - if (unlikely(len < ETH_ZLEN)) { - memset(data_kva + len, 0, ETH_ZLEN - len); - len = ETH_ZLEN; -@@ -143,7 +152,7 @@ drop: - } - - static inline int --kni_vhost_net_rx(struct kni_dev *kni, struct iovec *iov, -+kni_vhost_net_rx(struct kni_dev *kni, struct msghdr *m, - unsigned offset, unsigned len) - { - uint32_t pkt_len; -@@ -177,10 +186,18 @@ kni_vhost_net_rx(struct kni_dev *kni, struct iovec *iov, - goto drop; - - KNI_DBG_RX("rx offset=%d, len=%d, pkt_len=%d, iovlen=%d\n", -- offset, len, pkt_len, (int)iov->iov_len); -+#ifdef HAVE_IOV_ITER_MSGHDR -+ offset, len, pkt_len, (int)m->msg_iter.iov->iov_len); -+#else -+ offset, len, pkt_len, (int)m->msg_iov->iov_len); -+#endif - - data_kva = kva->buf_addr + kva->data_off - kni->mbuf_va + kni->mbuf_kva; -- if (unlikely(memcpy_toiovecend(iov, data_kva, offset, pkt_len))) -+#ifdef HAVE_IOV_ITER_MSGHDR -+ if (unlikely(copy_to_iter(data_kva, pkt_len, &m->msg_iter))) -+#else -+ if (unlikely(memcpy_toiovecend(m->msg_iov, data_kva, offset, pkt_len))) -+#endif - goto drop; - - /* Update statistics */ -@@ -348,7 +365,11 @@ kni_sock_sndmsg(struct kiocb *iocb, struct socket *sock, - return 0; - - KNI_DBG_TX("kni_sndmsg len %ld, flags 0x%08x, nb_iov %d\n", -+#ifdef HAVE_IOV_ITER_MSGHDR -+ len, q->flags, (int)m->msg_iter.iov->iov_len); -+#else - len, q->flags, (int)m->msg_iovlen); -+#endif - - #ifdef RTE_KNI_VHOST_VNET_HDR_EN - if (likely(q->flags & IFF_VNET_HDR)) { -@@ -362,7 +383,7 @@ kni_sock_sndmsg(struct kiocb *iocb, struct socket *sock, - if (unlikely(len < ETH_HLEN + q->vnet_hdr_sz)) - return -EINVAL; - -- return kni_vhost_net_tx(q->kni, m->msg_iov, vnet_hdr_len, len); -+ return kni_vhost_net_tx(q->kni, m, vnet_hdr_len, len); - } - - static int -@@ -391,7 +412,7 @@ kni_sock_rcvmsg(struct kiocb *iocb, struct socket *sock, - #endif - - if (unlikely(0 == (pkt_len = kni_vhost_net_rx(q->kni, -- m->msg_iov, vnet_hdr_len, len)))) -+ m, vnet_hdr_len, len)))) - return 0; - - #ifdef RTE_KNI_VHOST_VNET_HDR_EN --- -1.9.1 - |