[dpdk-dev] kni: fix compilation under RHEL 7.5

Message ID 1519946435-3574-1-git-send-email-lee.roberts@hpe.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Lee Roberts March 1, 2018, 11:20 p.m. UTC
  Fix kni compilation under RHEL 7.5.

Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
---
 lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
 1 file changed, 5 insertions(+)
  

Comments

Stephen Hemminger March 2, 2018, 12:18 a.m. UTC | #1
On Thu,  1 Mar 2018 16:20:35 -0700
Lee Roberts <lee.roberts@hpe.com> wrote:

> Fix kni compilation under RHEL 7.5.
> 
> Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
> ---
>  lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
> index 3f8c0bc..6a6968d 100644
> --- a/lib/librte_eal/linuxapp/kni/compat.h
> +++ b/lib/librte_eal/linuxapp/kni/compat.h
> @@ -101,6 +101,11 @@
>  #undef NET_NAME_UNKNOWN
>  #endif
>  
> +#if (defined(RHEL_RELEASE_CODE) && \
> +	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
> +#define ndo_change_mtu ndo_change_mtu_rh74
> +#endif
> +
>  #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
>  #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
>  #endif

Do we really want upstream DPDK trying to track every vendor kernel compatibility wart?
Should Redhat be owning this in their own DPDK package?
  
Lee Roberts March 2, 2018, 3:18 a.m. UTC | #2
> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Thursday, March 01, 2018 5:18 PM
> To: Roberts, Lee A. <lee.roberts@hpe.com>
> Cc: ferruh.yigit@intel.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] kni: fix compilation under RHEL 7.5
> 
> On Thu,  1 Mar 2018 16:20:35 -0700
> Lee Roberts <lee.roberts@hpe.com> wrote:
> 
> > Fix kni compilation under RHEL 7.5.
> >
> > Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
> > ---
> >  lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
> > index 3f8c0bc..6a6968d 100644
> > --- a/lib/librte_eal/linuxapp/kni/compat.h
> > +++ b/lib/librte_eal/linuxapp/kni/compat.h
> > @@ -101,6 +101,11 @@
> >  #undef NET_NAME_UNKNOWN
> >  #endif
> >
> > +#if (defined(RHEL_RELEASE_CODE) && \
> > +	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
> > +#define ndo_change_mtu ndo_change_mtu_rh74
> > +#endif
> > +
> >  #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
> >  #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
> >  #endif
> 
> Do we really want upstream DPDK trying to track every vendor kernel compatibility wart?
> Should Redhat be owning this in their own DPDK package?

If I look at the first few lines of ../lib/librte_eal/linuxapp/kni/compat.h,
it appears that tracking changes in RHEL and SLES is certainly part of the
purpose of this file:

      1 /*
      2  * Minimal wrappers to allow compiling kni on older kernels.
      3  */
      4 
      5 #include <linux/version.h>
      6 
      7 #ifndef RHEL_RELEASE_VERSION
      8 #define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b))
      9 #endif
     10 
     11 /* SuSE version macro is the same as Linux kernel version */
     12 #ifndef SLE_VERSION
     13 #define SLE_VERSION(a, b, c) KERNEL_VERSION(a, b, c)
     14 #endif
     15 #ifdef CONFIG_SUSE_KERNEL

If you want to remove the vendor dependency, I'd suggest the following actions:

1) Submit a patch to remove the RHEL- and SLES-specific code.
2) Disable KNI by default in the build system.

                                              - Lee
  
Ferruh Yigit March 22, 2018, 6:07 p.m. UTC | #3
On 3/1/2018 11:20 PM, Lee Roberts wrote:
> Fix kni compilation under RHEL 7.5.
> 
> Signed-off-by: Lee Roberts <lee.roberts@hpe.com>

Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>


(Not tested on RHEL 7.5 but code looks good)

Following patch title can be used for compatibility with old commits:
"kni: fix build on RHEL 7.5"
  
Thomas Monjalon March 27, 2018, 10:15 p.m. UTC | #4
22/03/2018 19:07, Ferruh Yigit:
> On 3/1/2018 11:20 PM, Lee Roberts wrote:
> > Fix kni compilation under RHEL 7.5.
> > 
> > Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
> 
> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
> 
> 
> (Not tested on RHEL 7.5 but code looks good)
> 
> Following patch title can be used for compatibility with old commits:
> "kni: fix build on RHEL 7.5"

Applied, thanks
  
Maxime Coquelin April 19, 2018, 1:09 p.m. UTC | #5
Hi Luca, Yuanhan,

On 03/02/2018 12:20 AM, Lee Roberts wrote:
> Fix kni compilation under RHEL 7.5.
> 
> Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
> ---
>   lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
> index 3f8c0bc..6a6968d 100644
> --- a/lib/librte_eal/linuxapp/kni/compat.h
> +++ b/lib/librte_eal/linuxapp/kni/compat.h
> @@ -101,6 +101,11 @@
>   #undef NET_NAME_UNKNOWN
>   #endif
>   
> +#if (defined(RHEL_RELEASE_CODE) && \
> +	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
> +#define ndo_change_mtu ndo_change_mtu_rh74
> +#endif
> +
>   #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
>   #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
>   #endif
> 

Any chance we pick these patches in stable branches so that
we can build them with RHEL 7.5 without disabling KNI?

I think it should apply cleanly on all of them, but I can send the
backport patches for each of them if necessary.

Thanks,
Maxime
  
Luca Boccassi April 19, 2018, 9:49 p.m. UTC | #6
On Thu, 2018-04-19 at 15:09 +0200, Maxime Coquelin wrote:
> Hi Luca, Yuanhan,
> 
> On 03/02/2018 12:20 AM, Lee Roberts wrote:
> > Fix kni compilation under RHEL 7.5.
> > 
> > Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
> > ---
> >   lib/librte_eal/linuxapp/kni/compat.h | 5 +++++
> >   1 file changed, 5 insertions(+)
> > 
> > diff --git a/lib/librte_eal/linuxapp/kni/compat.h
> > b/lib/librte_eal/linuxapp/kni/compat.h
> > index 3f8c0bc..6a6968d 100644
> > --- a/lib/librte_eal/linuxapp/kni/compat.h
> > +++ b/lib/librte_eal/linuxapp/kni/compat.h
> > @@ -101,6 +101,11 @@
> >   #undef NET_NAME_UNKNOWN
> >   #endif
> >   
> > +#if (defined(RHEL_RELEASE_CODE) && \
> > +	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
> > +#define ndo_change_mtu ndo_change_mtu_rh74
> > +#endif
> > +
> >   #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
> >   #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
> >   #endif
> > 
> 
> Any chance we pick these patches in stable branches so that
> we can build them with RHEL 7.5 without disabling KNI?
> 
> I think it should apply cleanly on all of them, but I can send the
> backport patches for each of them if necessary.
> 
> Thanks,
> Maxime

Sure, I can have a look early next week for 16.11.
  

Patch

diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h
index 3f8c0bc..6a6968d 100644
--- a/lib/librte_eal/linuxapp/kni/compat.h
+++ b/lib/librte_eal/linuxapp/kni/compat.h
@@ -101,6 +101,11 @@ 
 #undef NET_NAME_UNKNOWN
 #endif
 
+#if (defined(RHEL_RELEASE_CODE) && \
+	(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)))
+#define ndo_change_mtu ndo_change_mtu_rh74
+#endif
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
 #define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER
 #endif