From 0fed81ddabb3474ddf9e6585d59f82201b8ce09f Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Fri, 11 Nov 2016 10:22:56 +0000 Subject: Backport patch to fix kernel modules builds on 4.9 Change-Id: I82ea4413b45bc59ea5550118a9dbf5a30fb25b80 Signed-off-by: Luca Boccassi --- .../dpdk-dev-kni-fix-build-with-kernel-4.9.patch | 89 ++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 90 insertions(+) create mode 100644 debian/patches/dpdk-dev-kni-fix-build-with-kernel-4.9.patch diff --git a/debian/patches/dpdk-dev-kni-fix-build-with-kernel-4.9.patch b/debian/patches/dpdk-dev-kni-fix-build-with-kernel-4.9.patch new file mode 100644 index 00000000..931965c3 --- /dev/null +++ b/debian/patches/dpdk-dev-kni-fix-build-with-kernel-4.9.patch @@ -0,0 +1,89 @@ +Description: compile error: + CC [M] .../lib/librte_eal/linuxapp/kni/igb_main.o +.../lib/librte_eal/linuxapp/kni/igb_main.c:2317:21: +error: initialization from incompatible pointer type + [-Werror=incompatible-pointer-types] + .ndo_set_vf_vlan = igb_ndo_set_vf_vlan, + ^~~~~~~~~~~~~~~~~~~ + +Linux kernel 4.9 updates API for ndo_set_vf_vlan: +Linux: 79aab093a0b5 ("net: Update API for VF vlan protocol 802.1ad support") + +Use new API for Linux kernels >= 4.9 + +Signed-off-by: Ferruh Yigit +Tested-by: Pablo de Lara + +Origin: Upstream, http://dpdk.org/dev/patchwork/patch/16651/ +Author: Luca Boccassi +Last-Update: 2016-10-17 +--- + lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 19 +++++++++++++++++++ + lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 4 ++++ + 2 files changed, 23 insertions(+) + +--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c ++++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +@@ -195,7 +195,11 @@ static void igb_process_mdd_event(struct + #ifdef IFLA_VF_MAX + static int igb_ndo_set_vf_mac( struct net_device *netdev, int vf, u8 *mac); + static int igb_ndo_set_vf_vlan(struct net_device *netdev, ++#ifdef HAVE_VF_VLAN_PROTO ++ int vf, u16 vlan, u8 qos, __be16 vlan_proto); ++#else + int vf, u16 vlan, u8 qos); ++#endif + #ifdef HAVE_VF_SPOOFCHK_CONFIGURE + static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, + bool setting); +@@ -6411,7 +6415,11 @@ static void igb_set_vmvir(struct igb_ada + } + + static int igb_ndo_set_vf_vlan(struct net_device *netdev, ++#ifdef HAVE_VF_VLAN_PROTO ++ int vf, u16 vlan, u8 qos, __be16 vlan_proto) ++#else + int vf, u16 vlan, u8 qos) ++#endif + { + int err = 0; + struct igb_adapter *adapter = netdev_priv(netdev); +@@ -6419,6 +6427,12 @@ static int igb_ndo_set_vf_vlan(struct ne + /* VLAN IDs accepted range 0-4094 */ + if ((vf >= adapter->vfs_allocated_count) || (vlan > VLAN_VID_MASK-1) || (qos > 7)) + return -EINVAL; ++ ++#ifdef HAVE_VF_VLAN_PROTO ++ if (vlan_proto != htons(ETH_P_8021Q)) ++ return -EPROTONOSUPPORT; ++#endif ++ + if (vlan || qos) { + err = igb_vlvf_set(adapter, vlan, !!vlan, vf); + if (err) +@@ -6579,7 +6593,12 @@ static inline void igb_vf_reset(struct i + if (adapter->vf_data[vf].pf_vlan) + igb_ndo_set_vf_vlan(adapter->netdev, vf, + adapter->vf_data[vf].pf_vlan, ++#ifdef HAVE_VF_VLAN_PROTO ++ adapter->vf_data[vf].pf_qos, ++ htons(ETH_P_8021Q)); ++#else + adapter->vf_data[vf].pf_qos); ++#endif + else + igb_clear_vf_vfta(adapter, vf); + #endif +--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h ++++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +@@ -3906,6 +3906,10 @@ skb_set_hash(struct sk_buff *skb, __u32 + #endif /* !RHEL 7.2 */ + #endif /* 4.0.0 */ + ++#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) ) ++#define HAVE_VF_VLAN_PROTO ++#endif /* >= 4.9.0 */ ++ + #if ( LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) ) + /* ndo_bridge_getlink adds new nlflags parameter */ + #define HAVE_NDO_BRIDGE_GETLINK_NLFLAGS diff --git a/debian/patches/series b/debian/patches/series index 04fabca0..0d8fd299 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -19,4 +19,5 @@ dpdk-dev-ppc-enable-5-7-table-fix-verification-on-hash-bucket-header-alignme.pat dpdk-dev-ppc-enable-6-7-config-enable-packet-framework-on-ppc64le.patch dpdk-dev-ppc-enable-7-7-examples-ip_pipeline-fix-lcore-mapping-for-ppc64.patch dpdk-dev-examples-ip_pipeline-fix-pmd-driver-parameter.patch +dpdk-dev-kni-fix-build-with-kernel-4.9.patch -- cgit 1.2.3-korg