* [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 @ 2015-05-04 21:46 Pablo de Lara 2015-05-05 11:28 ` De Lara Guarch, Pablo [not found] ` <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com> 0 siblings, 2 replies; 8+ messages in thread From: Pablo de Lara @ 2015-05-04 21:46 UTC (permalink / raw) To: dev Due to commit c0371da6 in kernel 3.19, which removed msg_iov and msg_iovlen from struct msghdr, DPDK would not build. This patch makes use of struct iov_iter, which has references to those two variables. Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> --- lib/librte_eal/linuxapp/kni/compat.h | 4 ++++ lib/librte_eal/linuxapp/kni/kni_vhost.c | 13 ++++++++++--- 2 files changed, 14 insertions(+), 3 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..a2fd97f 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, const struct iovec *iov, unsigned offset, unsigned len) { struct rte_kni_mbuf *pkt_kva = NULL; @@ -143,7 +143,7 @@ drop: } static inline int -kni_vhost_net_rx(struct kni_dev *kni, struct iovec *iov, +kni_vhost_net_rx(struct kni_dev *kni, const struct iovec *iov, unsigned offset, unsigned len) { uint32_t pkt_len; @@ -361,8 +361,11 @@ kni_sock_sndmsg(struct kiocb *iocb, struct socket *sock, if (unlikely(len < ETH_HLEN + q->vnet_hdr_sz)) return -EINVAL; - +#ifdef HAVE_IOV_ITER_MSGHDR + return kni_vhost_net_tx(q->kni, m->msg_iter.iov, vnet_hdr_len, len); +#else return kni_vhost_net_tx(q->kni, m->msg_iov, vnet_hdr_len, len); +#endif } static int @@ -391,7 +394,11 @@ kni_sock_rcvmsg(struct kiocb *iocb, struct socket *sock, #endif if (unlikely(0 == (pkt_len = kni_vhost_net_rx(q->kni, +#ifdef HAVE_IOV_ITER_MSGHDR + m->msg_iter.iov, vnet_hdr_len, len)))) +#else m->msg_iov, vnet_hdr_len, len)))) +#endif return 0; #ifdef RTE_KNI_VHOST_VNET_HDR_EN -- 1.7.4.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 2015-05-04 21:46 [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 Pablo de Lara @ 2015-05-05 11:28 ` De Lara Guarch, Pablo [not found] ` <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com> 1 sibling, 0 replies; 8+ messages in thread From: De Lara Guarch, Pablo @ 2015-05-05 11:28 UTC (permalink / raw) To: De Lara Guarch, Pablo, dev > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara > Sent: Monday, May 04, 2015 10:46 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 > > Due to commit c0371da6 in kernel 3.19, which removed msg_iov > and msg_iovlen from struct msghdr, DPDK would not build. > > This patch makes use of struct iov_iter, which has references > to those two variables. > > Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Self-NACK. Kernel 4.0 has other changes that require other fixes, incompatible with this patch. Will send a v2 compatible with both kernels 3.19 and 4.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com>]
* Re: [dpdk-dev] [PATCH v2] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 [not found] ` <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com> @ 2015-05-05 14:07 ` De Lara Guarch, Pablo 2015-05-05 14:08 ` [dpdk-dev] [PATCH v3] " Pablo de Lara 1 sibling, 0 replies; 8+ messages in thread From: De Lara Guarch, Pablo @ 2015-05-05 14:07 UTC (permalink / raw) To: De Lara Guarch, Pablo, dev > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara > Sent: Tuesday, May 05, 2015 1:35 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH v2] kni: fix compilation issue in KNI vhost on > kernel 3.19/4.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> Self-NACK again. Missing checks and wrong variable names. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 [not found] ` <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com> 2015-05-05 14:07 ` [dpdk-dev] [PATCH v2] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 De Lara Guarch, Pablo @ 2015-05-05 14:08 ` Pablo de Lara 2015-05-10 21:25 ` Thomas Monjalon 2015-05-11 9:06 ` Thomas Monjalon 1 sibling, 2 replies; 8+ messages in thread From: Pablo de Lara @ 2015-05-05 14:08 UTC (permalink / raw) To: dev 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. Changes in v2: - Replaced functions memcpy_toiovecend and memcpy_fromiovecend with copy_from_iter and copy_to_iter Changes in v3: - Fixed variable names - Add missing checks Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@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.7.4.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 2015-05-05 14:08 ` [dpdk-dev] [PATCH v3] " Pablo de Lara @ 2015-05-10 21:25 ` Thomas Monjalon 2015-05-10 23:01 ` De Lara Guarch, Pablo 2015-05-11 9:06 ` Thomas Monjalon 1 sibling, 1 reply; 8+ messages in thread From: Thomas Monjalon @ 2015-05-10 21:25 UTC (permalink / raw) To: Pablo de Lara; +Cc: dev Hi Pablo, 2015-05-05 15:08, Pablo de Lara: > 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. > > Changes in v2: > - Replaced functions memcpy_toiovecend and memcpy_fromiovecend > with copy_from_iter and copy_to_iter > > Changes in v3: > - Fixed variable names > - Add missing checks > > Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> I have the following errors with Linux 4.0.1: lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: initialization from incompatible pointer type .ndo_bridge_setlink = igb_ndo_bridge_setlink, ^ lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: (near initialization for ‘igb_netdev_ops.ndo_bridge_setlink’) lib/librte_eal/linuxapp/kni/igb_main.c: In function ‘igb_xmit_frame_ring’: lib/librte_eal/linuxapp/kni/igb_main.c:5482:2: error: implicit declaration of function ‘vlan_tx_tag_present’ if (vlan_tx_tag_present(skb)) { ^ lib/librte_eal/linuxapp/kni/igb_main.c:5484:3: error: implicit declaration of function ‘vlan_tx_tag_get’ tx_flags |= (vlan_tx_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT); ^ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 2015-05-10 21:25 ` Thomas Monjalon @ 2015-05-10 23:01 ` De Lara Guarch, Pablo 2015-05-11 8:27 ` Thomas Monjalon 0 siblings, 1 reply; 8+ messages in thread From: De Lara Guarch, Pablo @ 2015-05-10 23:01 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev Hi Thomas, > -----Original Message----- > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > Sent: Sunday, May 10, 2015 10:26 PM > To: De Lara Guarch, Pablo > Cc: dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on > kernel 3.19/4.0 > > Hi Pablo, > > 2015-05-05 15:08, Pablo de Lara: > > 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. > > > > Changes in v2: > > - Replaced functions memcpy_toiovecend and memcpy_fromiovecend > > with copy_from_iter and copy_to_iter > > > > Changes in v3: > > - Fixed variable names > > - Add missing checks > > > > Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> > > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> > > I have the following errors with Linux 4.0.1: > > lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: initialization from > incompatible pointer type > .ndo_bridge_setlink = igb_ndo_bridge_setlink, > ^ > lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: (near initialization for > ‘igb_netdev_ops.ndo_bridge_setlink’) > lib/librte_eal/linuxapp/kni/igb_main.c: In function ‘igb_xmit_frame_ring’: > lib/librte_eal/linuxapp/kni/igb_main.c:5482:2: error: implicit declaration of > function ‘vlan_tx_tag_present’ > if (vlan_tx_tag_present(skb)) { > ^ > lib/librte_eal/linuxapp/kni/igb_main.c:5484:3: error: implicit declaration of > function ‘vlan_tx_tag_get’ > tx_flags |= (vlan_tx_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT); > ^ I sent a patch for that (kni: fix compilation issue on kernel 4.0.0), by the end of last month. Is it OK to merge it or do you want me to send a v4 of this one, including that fix? Thanks, Pablo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 2015-05-10 23:01 ` De Lara Guarch, Pablo @ 2015-05-11 8:27 ` Thomas Monjalon 0 siblings, 0 replies; 8+ messages in thread From: Thomas Monjalon @ 2015-05-11 8:27 UTC (permalink / raw) To: De Lara Guarch, Pablo; +Cc: dev 2015-05-10 23:01, De Lara Guarch, Pablo: > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > > I have the following errors with Linux 4.0.1: > > > > lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: initialization from > > incompatible pointer type > > .ndo_bridge_setlink = igb_ndo_bridge_setlink, > > ^ > > lib/librte_eal/linuxapp/kni/igb_main.c:2321:2: error: (near initialization for > > ‘igb_netdev_ops.ndo_bridge_setlink’) > > lib/librte_eal/linuxapp/kni/igb_main.c: In function ‘igb_xmit_frame_ring’: > > lib/librte_eal/linuxapp/kni/igb_main.c:5482:2: error: implicit declaration of > > function ‘vlan_tx_tag_present’ > > if (vlan_tx_tag_present(skb)) { > > ^ > > lib/librte_eal/linuxapp/kni/igb_main.c:5484:3: error: implicit declaration of > > function ‘vlan_tx_tag_get’ > > tx_flags |= (vlan_tx_tag_get(skb) << IGB_TX_FLAGS_VLAN_SHIFT); > > ^ > > I sent a patch for that (kni: fix compilation issue on kernel 4.0.0), by the end of last month. Oh yes, you're right, sorry. > Is it OK to merge it or do you want me to send a v4 of this one, including that fix? Separate patches are OK, thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 2015-05-05 14:08 ` [dpdk-dev] [PATCH v3] " Pablo de Lara 2015-05-10 21:25 ` Thomas Monjalon @ 2015-05-11 9:06 ` Thomas Monjalon 1 sibling, 0 replies; 8+ messages in thread From: Thomas Monjalon @ 2015-05-11 9:06 UTC (permalink / raw) To: Pablo de Lara; +Cc: dev > 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. > > Changes in v2: > - Replaced functions memcpy_toiovecend and memcpy_fromiovecend > with copy_from_iter and copy_to_iter > > Changes in v3: > - Fixed variable names > - Add missing checks > > Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Applied, thanks ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-05-11 9:07 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-05-04 21:46 [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 Pablo de Lara 2015-05-05 11:28 ` De Lara Guarch, Pablo [not found] ` <1430829319-22242-1-git-send-email-pablo.de.lara.guarch@intel.com> 2015-05-05 14:07 ` [dpdk-dev] [PATCH v2] kni: fix compilation issue in KNI vhost on kernel 3.19/4.0 De Lara Guarch, Pablo 2015-05-05 14:08 ` [dpdk-dev] [PATCH v3] " Pablo de Lara 2015-05-10 21:25 ` Thomas Monjalon 2015-05-10 23:01 ` De Lara Guarch, Pablo 2015-05-11 8:27 ` Thomas Monjalon 2015-05-11 9:06 ` 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).