* [PATCH] kni: fix compilation issue on kernel 3.19 @ 2015-03-12 17:24 Pablo de Lara [not found] ` <1426181069-31469-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Pablo de Lara @ 2015-03-12 17:24 UTC (permalink / raw) To: dev-VfR2kkLFssw Due to API changes in functions ndo_dflt_bridge_getlink and igb_ndo_fdb_add in kernel 3.19, DPDK would not build. This patch solves the problem, by checking the kernel version and adding the necessary new parameters Signed-off-by: Pablo de Lara <pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> --- lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 7 +++++++ lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 3 +++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c index a802a02..24b147d 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c @@ -2103,6 +2103,9 @@ static int igb_set_features(struct net_device *netdev, static int igb_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[], struct net_device *dev, const unsigned char *addr, +#ifdef HAVE_NDO_FDB_ADD_VID + u16 vid, +#endif u16 flags) #else static int igb_ndo_fdb_add(struct ndmsg *ndm, @@ -2259,7 +2262,11 @@ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, else mode = BRIDGE_MODE_VEPA; +#ifdef HAVE_NDO_FDB_ADD_VID + return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0); +#else return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode); +#endif /* HAVE_NDO_FDB_ADD_VID */ } #endif /* HAVE_BRIDGE_ATTRIBS */ #endif /* NTF_SELF */ diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h index 1213cc6..5c799e9 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h @@ -3881,4 +3881,7 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) #define HAVE_VF_MIN_MAX_TXRATE 1 #endif /* >= 3.16.0 */ +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) ) +#define HAVE_NDO_FDB_ADD_VID +#endif /* >= 3.19.0 */ #endif /* _KCOMPAT_H_ */ -- 1.7.4.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1426181069-31469-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH] kni: fix compilation issue on kernel 3.19 [not found] ` <1426181069-31469-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> @ 2015-03-20 21:23 ` Thomas Monjalon 2015-03-22 18:03 ` De Lara Guarch, Pablo 0 siblings, 1 reply; 5+ messages in thread From: Thomas Monjalon @ 2015-03-20 21:23 UTC (permalink / raw) To: Pablo de Lara; +Cc: dev-VfR2kkLFssw Hi Pablo, 2015-03-12 17:24, Pablo de Lara: > Due to API changes in functions ndo_dflt_bridge_getlink > and igb_ndo_fdb_add in kernel 3.19, DPDK would not build. Please provide the Linux commit id for this change. > This patch solves the problem, by checking the kernel version > and adding the necessary new parameters > > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > --- > lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 7 +++++++ > lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 3 +++ > 2 files changed, 10 insertions(+), 0 deletions(-) > > diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > index a802a02..24b147d 100644 > --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > @@ -2103,6 +2103,9 @@ static int igb_set_features(struct net_device *netdev, > static int igb_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[], > struct net_device *dev, > const unsigned char *addr, > +#ifdef HAVE_NDO_FDB_ADD_VID > + u16 vid, > +#endif > u16 flags) > #else You should explain in commit message why the change is not needed in #else (!USE_CONST_DEV_UC_CHAR for version < 3.7). > static int igb_ndo_fdb_add(struct ndmsg *ndm, > @@ -2259,7 +2262,11 @@ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, > else > mode = BRIDGE_MODE_VEPA; > > +#ifdef HAVE_NDO_FDB_ADD_VID > + return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0); > +#else > return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode); > +#endif /* HAVE_NDO_FDB_ADD_VID */ > } > #endif /* HAVE_BRIDGE_ATTRIBS */ > #endif /* NTF_SELF */ > diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > index 1213cc6..5c799e9 100644 > --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > @@ -3881,4 +3881,7 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) > #define HAVE_VF_MIN_MAX_TXRATE 1 > #endif /* >= 3.16.0 */ > > +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) ) > +#define HAVE_NDO_FDB_ADD_VID > +#endif /* >= 3.19.0 */ > #endif /* _KCOMPAT_H_ */ A blank line is missing here. Are you sure there is no macro defined in the Linux changes which could be checked instead of version number? I dislike version checks because of backport problems. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kni: fix compilation issue on kernel 3.19 2015-03-20 21:23 ` Thomas Monjalon @ 2015-03-22 18:03 ` De Lara Guarch, Pablo 0 siblings, 0 replies; 5+ messages in thread From: De Lara Guarch, Pablo @ 2015-03-22 18:03 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev-VfR2kkLFssw@public.gmane.org Hi Thomas, > -----Original Message----- > From: Thomas Monjalon [mailto:thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org] > Sent: Friday, March 20, 2015 9:23 PM > To: De Lara Guarch, Pablo > Cc: dev-VfR2kkLFssw@public.gmane.org > Subject: Re: [dpdk-dev] [PATCH] kni: fix compilation issue on kernel 3.19 > > Hi Pablo, > > 2015-03-12 17:24, Pablo de Lara: > > Due to API changes in functions ndo_dflt_bridge_getlink > > and igb_ndo_fdb_add in kernel 3.19, DPDK would not build. > > Please provide the Linux commit id for this change. > > > This patch solves the problem, by checking the kernel version > > and adding the necessary new parameters > > > > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > > --- > > lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 7 +++++++ > > lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 3 +++ > > 2 files changed, 10 insertions(+), 0 deletions(-) > > > > diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > > index a802a02..24b147d 100644 > > --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > > +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c > > @@ -2103,6 +2103,9 @@ static int igb_set_features(struct net_device > *netdev, > > static int igb_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[], > > struct net_device *dev, > > const unsigned char *addr, > > +#ifdef HAVE_NDO_FDB_ADD_VID > > + u16 vid, > > +#endif > > u16 flags) > > #else > > You should explain in commit message why the change is not needed in > #else > (!USE_CONST_DEV_UC_CHAR for version < 3.7). > > > static int igb_ndo_fdb_add(struct ndmsg *ndm, > > @@ -2259,7 +2262,11 @@ static int igb_ndo_bridge_getlink(struct sk_buff > *skb, u32 pid, u32 seq, > > else > > mode = BRIDGE_MODE_VEPA; > > > > +#ifdef HAVE_NDO_FDB_ADD_VID > > + return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0); > > +#else > > return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode); > > +#endif /* HAVE_NDO_FDB_ADD_VID */ > > } > > #endif /* HAVE_BRIDGE_ATTRIBS */ > > #endif /* NTF_SELF */ > > diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > > index 1213cc6..5c799e9 100644 > > --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > > +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h > > @@ -3881,4 +3881,7 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, > __always_unused int type) > > #define HAVE_VF_MIN_MAX_TXRATE 1 > > #endif /* >= 3.16.0 */ > > > > +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) ) > > +#define HAVE_NDO_FDB_ADD_VID > > +#endif /* >= 3.19.0 */ > > #endif /* _KCOMPAT_H_ */ > > A blank line is missing here. > Are you sure there is no macro defined in the Linux changes which could be > checked instead of version number? I dislike version checks because of > backport problems. I am not aware of such macro in the kernel, unfortunately. I just sent a v2. Thanks, Pablo ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] kni: fix compilation issue on kernel 3.19 @ 2015-05-04 21:46 Pablo de Lara [not found] ` <1430775963-29444-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Pablo de Lara @ 2015-05-04 21:46 UTC (permalink / raw) To: dev-VfR2kkLFssw 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-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> --- 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 related [flat|nested] 5+ messages in thread
[parent not found: <1430775963-29444-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH] kni: fix compilation issue on kernel 3.19 [not found] ` <1430775963-29444-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> @ 2015-05-05 11:28 ` De Lara Guarch, Pablo 0 siblings, 0 replies; 5+ messages in thread From: De Lara Guarch, Pablo @ 2015-05-05 11:28 UTC (permalink / raw) To: De Lara Guarch, Pablo, dev-VfR2kkLFssw@public.gmane.org > -----Original Message----- > From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Pablo de Lara > Sent: Monday, May 04, 2015 10:46 PM > To: dev-VfR2kkLFssw@public.gmane.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-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 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] 5+ messages in thread
end of thread, other threads:[~2015-05-05 11:28 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-12 17:24 [PATCH] kni: fix compilation issue on kernel 3.19 Pablo de Lara [not found] ` <1426181069-31469-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2015-03-20 21:23 ` Thomas Monjalon 2015-03-22 18:03 ` De Lara Guarch, Pablo -- strict thread matches above, loose matches on Subject: below -- 2015-05-04 21:46 Pablo de Lara [not found] ` <1430775963-29444-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2015-05-05 11:28 ` De Lara Guarch, Pablo
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).