summaryrefslogtreecommitdiffstats
path: root/dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch')
-rw-r--r--dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch b/dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch
new file mode 100644
index 00000000000..09bca06ed69
--- /dev/null
+++ b/dpdk/dpdk-2.1.0_patches/0001-kni-fix-igb-build-with-kernel-4.2.patch
@@ -0,0 +1,78 @@
+From 2de9d1629312a32f82c43167467640bc793805a6 Mon Sep 17 00:00:00 2001
+From: Damjan Marion <damarion@cisco.com>
+Date: Mon, 12 Oct 2015 14:23:30 +0200
+Subject: [PATCH 1/9] kni: fix igb build with kernel 4.2
+
+Kernel 4.2 has introduced two new parameters in ndo_bridge_getlink,
+which breaks DPDK compilation.
+
+Linux: 7d4f8d87 ("switchdev: ad VLAN support for ports bridge-getlink")
+
+This patch adds the necessary checks to fix it.
+
+Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
+---
+ lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 13 +++++++++----
+ lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 7 ++++++-
+ 2 files changed, 15 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 eed8df6..b330b20 100644
+--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
++++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
+@@ -2250,14 +2250,14 @@ static int igb_ndo_bridge_setlink(struct net_device *dev,
+ }
+
+ #ifdef HAVE_BRIDGE_FILTER
+-#ifdef HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK
++#ifdef HAVE_NDO_BRIDGE_GETLINK_NLFLAGS
+ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
+ struct net_device *dev, u32 filter_mask,
+ int nlflags)
+ #else
+ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
+ struct net_device *dev, u32 filter_mask)
+-#endif /* HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK */
++#endif /* HAVE_NDO_BRIDGE_GETLINK_NLFLAGS */
+ #else
+ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
+ struct net_device *dev)
+@@ -2275,11 +2275,16 @@ static int igb_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
+ mode = BRIDGE_MODE_VEPA;
+
+ #ifdef HAVE_NDO_FDB_ADD_VID
+-#ifdef HAVE_NDO_BRIDGE_GETLINK_FILTER_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,
++ nlflags, filter_mask, NULL);
++#else
+ return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0, nlflags);
++#endif /* HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK_VLAN_FILL */
+ #else
+ return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode, 0, 0);
+-#endif /* HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK */
++#endif /* HAVE_NDO_BRIDGE_GETLINK_NLFLAGS */
+ #else
+ return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode);
+ #endif /* HAVE_NDO_FDB_ADD_VID */
+diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
+index 852f80f..5f45b8b 100644
+--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
++++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h
+@@ -3899,6 +3899,11 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type)
+
+ #if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) )
+ /* ndo_bridge_getlink adds new nlflags parameter */
+-#define HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK
++#define HAVE_NDO_BRIDGE_GETLINK_NLFLAGS
+ #endif /* >= 4.1.0 */
++
++#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) )
++/* ndo_bridge_getlink adds new filter_mask and vlan_fill parameters */
++#define HAVE_NDO_BRIDGE_GETLINK_FILTER_MASK_VLAN_FILL
++#endif /* >= 4.2.0 */
+ #endif /* _KCOMPAT_H_ */
+--
+2.5.0
+