From 205c33c45af62349fcbfa700c7cf5d2b32973498 Mon Sep 17 00:00:00 2001 From: Adrien Mazarguil Date: Thu, 21 Mar 2013 11:09:23 +0100 Subject: [PATCH] kni: fix build with kernel < 3.3 with netdev_features_t backport The netdev_features_t typedef appeared in Linux 3.3, but checking the kernel version isn't enough with some distributions (such as Debian Wheezy) that backported it into 3.2, causing a compilation failure due to redefinition. Since the presence of a typedef can't be tested at compile time, this commit adds type kni_netdev_features_t, which, depending on the kernel version, translates either to u32 or netdev_features_t. Signed-off-by: Adrien Mazarguil Acked-by: Thomas Monjalon --- lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 6 +++--- lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 3 ++- lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h | 3 ++- 3 files changed, 7 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 9be6f2f01d..a647644f2f 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c @@ -2057,8 +2057,8 @@ void igb_reset(struct igb_adapter *adapter) } #ifdef HAVE_NDO_SET_FEATURES -static netdev_features_t igb_fix_features(struct net_device *netdev, - netdev_features_t features) +static kni_netdev_features_t igb_fix_features(struct net_device *netdev, + kni_netdev_features_t features) { /* * Since there is no support for separate tx vlan accel @@ -2080,7 +2080,7 @@ static netdev_features_t igb_fix_features(struct net_device *netdev, } static int igb_set_features(struct net_device *netdev, - netdev_features_t features) + kni_netdev_features_t features) { u32 changed = netdev->features ^ features; diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h index c293e113c9..9dc9c9cdde 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h @@ -3463,7 +3463,7 @@ static inline void __kc_skb_frag_unref(skb_frag_t *frag) #endif /*****************************************************************************/ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ) -typedef u32 netdev_features_t; +typedef u32 kni_netdev_features_t; #undef PCI_EXP_TYPE_RC_EC #define PCI_EXP_TYPE_RC_EC 0xa /* Root Complex Event Collector */ #ifndef CONFIG_BQL @@ -3475,6 +3475,7 @@ typedef u32 netdev_features_t; #define netdev_reset_queue(_n) do {} while (0) #endif #else /* ! < 3.3.0 */ +typedef netdev_features_t kni_netdev_features_t; #define HAVE_INT_NDO_VLAN_RX_ADD_VID #ifdef ETHTOOL_SRXNTUPLE #undef ETHTOOL_SRXNTUPLE diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h index 112226d6d1..3fe777ae57 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h @@ -3082,8 +3082,9 @@ static inline void __kc_skb_frag_unref(skb_frag_t *frag) /*****************************************************************************/ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ) -typedef u32 netdev_features_t; +typedef u32 kni_netdev_features_t; #else /* ! < 3.3.0 */ +typedef netdev_features_t kni_netdev_features_t; #define HAVE_INT_NDO_VLAN_RX_ADD_VID #ifdef ETHTOOL_SRXNTUPLE #undef ETHTOOL_SRXNTUPLE -- 2.20.1