[dpdk-dev] [PATCH] Fix KNI compilation under Wind River Linux 6.0 recent RCPLs.

2016-03-30 Thread Lee Roberts
skb_set_hash() has been backported to recent Wind River Linux 6.0 RCPLs.
As a result, the corresponding stanza in kcompat.h must be removed.
Similar patches have already been applied for RHEL, SLES and Ubuntu.

Wind River Linux does not provide convenient macros for kernel version
identification.  Add macros to Makefile to identify the Wind River Linux
version.

Signed-off-by: Lee Roberts 
---
 lib/librte_eal/linuxapp/kni/Makefile  |  8 
 lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 13 +
 2 files changed, 21 insertions(+)

diff --git a/lib/librte_eal/linuxapp/kni/Makefile 
b/lib/librte_eal/linuxapp/kni/Makefile
index ac99d3f..6310615 100644
--- a/lib/librte_eal/linuxapp/kni/Makefile
+++ b/lib/librte_eal/linuxapp/kni/Makefile
@@ -51,6 +51,14 @@ UBUNTU_KERNEL_CODE := $(shell echo `grep UTS_RELEASE 
$(RTE_KERNELDIR)/include/ge
 MODULE_CFLAGS += 
-D"UBUNTU_KERNEL_CODE=UBUNTU_KERNEL_VERSION($(UBUNTU_KERNEL_CODE))"
 endif

+ifeq ($(shell lsb_release -si 2>/dev/null),wrlinux)
+WRLINUX_MAJOR := $(shell lsb_release -sr | cut -d. -f1)
+WRLINUX_MINOR := $(shell lsb_release -sr | cut -d. -f2)
+WRLINUX_RCPL  := $(shell lsb_release -sr | cut -d. -f4)
+MODULE_CFLAGS += 
-D"WRLINUX_RELEASE_CODE=WRLINUX_RELEASE_VERSION($(WRLINUX_MAJOR),$(WRLINUX_MINOR))"
+MODULE_CFLAGS += -D"WRLINUX_RCPL=$(WRLINUX_RCPL)"
+endif
+
 # this lib needs main eal
 DEPDIRS-y += lib/librte_eal/linuxapp/eal

diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h 
b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
index e2cf71e..b25a35f 100644
--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
@@ -730,6 +730,17 @@ struct _kc_ethtool_pauseparam {
 #define UBUNTU_KERNEL_CODE 0
 #endif

+/* Wind River release codes must be specified from Makefile */
+#ifndef WRLINUX_RELEASE_VERSION
+#define WRLINUX_RELEASE_VERSION(a,b) (((a) * 256) + (b))
+#endif
+#ifndef WRLINUX_RELEASE_CODE
+#define WRLINUX_RELEASE_CODE 0
+#endif
+#ifndef WRLINUX_RCPL
+#define WRLINUX_RCPL 0
+#endif
+
 #ifdef __KLOCWORK__
 #ifdef ARRAY_SIZE
 #undef ARRAY_SIZE
@@ -3868,6 +3879,7 @@ static inline struct sk_buff 
*__kc__vlan_hwaccel_put_tag(struct sk_buff *skb,
 && (UBUNTU_RELEASE_CODE == UBUNTU_RELEASE_VERSION(12,4) \
  || UBUNTU_RELEASE_CODE == UBUNTU_RELEASE_VERSION(14,4
 #if (!(SLE_VERSION_CODE == SLE_VERSION(12,0,0)))
+#if (!(WRLINUX_RELEASE_CODE == WRLINUX_RELEASE_VERSION(6,0) && WRLINUX_RCPL >= 
26))
 #ifdef NETIF_F_RXHASH
 #define PKT_HASH_TYPE_L3 0
 static inline void
@@ -3876,6 +3888,7 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, 
__always_unused int type)
skb->rxhash = hash;
 }
 #endif /* NETIF_F_RXHASH */
+#endif /* < WRLINUX */
 #endif /* < SLES12 */
 #endif /* < 3.13.0-30.54 (Ubuntu 14.04) */
 #endif /* < RHEL7 */
-- 
1.9.1



[dpdk-dev] [PATCH 1/1] kni: Fix compilation problems on RHEL 7.2.

2015-12-07 Thread Lee Roberts
RHEL 7.2 contains additional backports from newer upstream kernels.
Add RHEL_RELEASE_CODE logic for RHEL_RELEASE_VERSION(7,2) to pick up
the changes to kernel functions.

Signed-off-by: Lee Roberts 
---
 lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c |  4 ++--
 lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h  | 15 ---
 2 files changed, 14 insertions(+), 5 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 b330b20..9d4fa59 100644
--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
@@ -2274,7 +2274,7 @@ 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
+#ifdef HAVE_NDO_DFLT_BRIDGE_ADD_MASK
 #ifdef HAVE_NDO_BRIDGE_GETLINK_NLFLAGS
 #ifdef HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK_VLAN_FILL
return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0,
@@ -2287,7 +2287,7 @@ static int igb_ndo_bridge_getlink(struct sk_buff *skb, 
u32 pid, u32 seq,
 #endif /* HAVE_NDO_BRIDGE_GETLINK_NLFLAGS */
 #else
return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode);
-#endif /* HAVE_NDO_FDB_ADD_VID */
+#endif /* HAVE_NDO_DFLT_BRIDGE_ADD_MASK */
 }
 #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 68a3b9f..e2cf71e 100644
--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
@@ -3881,20 +3881,29 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, 
__always_unused int type)
 #endif /* < RHEL7 */
 #endif /* < 3.14.0 */

-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0) )
+#if (( LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0) ) \
+|| ( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2) ))
+#undef SET_ETHTOOL_OPS
 #define SET_ETHTOOL_OPS(netdev, ops) ((netdev)->ethtool_ops = (ops))
 #define HAVE_VF_MIN_MAX_TXRATE 1
 #endif /* >= 3.16.0 */

-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) )
+#if (( LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) ) \
+|| ( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2) ))
+#define HAVE_NDO_DFLT_BRIDGE_ADD_MASK
+#if (!( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2) ))
 #define HAVE_NDO_FDB_ADD_VID
+#endif /* !RHEL 7.2 */
 #endif /* >= 3.19.0 */

-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) )
+#if (( LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0) ) \
+|| ( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2) ))
 /* vlan_tx_xx functions got renamed to skb_vlan */
 #define vlan_tx_tag_get skb_vlan_tag_get
 #define vlan_tx_tag_present skb_vlan_tag_present
+#if (!( RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,2) ))
 #define HAVE_NDO_BRIDGE_SET_DEL_LINK_FLAGS
+#endif /* !RHEL 7.2 */
 #endif /* 4.0.0 */

 #if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) )
-- 
1.9.1