diff options
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.patch | 78 |
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 + |