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

Roberts, Lee A. lee.roberts at hpe.com
Fri Mar 2 04:18:51 CET 2018


> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Thursday, March 01, 2018 5:18 PM
> To: Roberts, Lee A. <lee.roberts at hpe.com>
> Cc: ferruh.yigit at intel.com; dev at 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 at hpe.com> wrote:
> 
> > Fix kni compilation under RHEL 7.5.
> >
> > Signed-off-by: Lee Roberts <lee.roberts at 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


More information about the dev mailing list