From 645b0d13c93d1761d7ba2aa138403df817348f30 Mon Sep 17 00:00:00 2001 From: Aaro Koskinen Date: Tue, 4 Feb 2014 13:59:09 +0100 Subject: [PATCH] kni: fix build with kernel 3.14 ether_addr_equal() was added in Linux 3.5. compare_ether_addr() was deleted in 3.14. Start using ether_addr_equal() and provide an own implementation for older kernels. This fixes the compilation with Linux 3.14-rc1. Signed-off-by: Aaro Koskinen Acked-by: Thomas Monjalon --- lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 2 +- lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h | 4 ++++ lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c | 2 +- lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h | 4 ++++ 4 files changed, 10 insertions(+), 2 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 a647644f2f..6933626a07 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c @@ -9275,7 +9275,7 @@ int igb_del_mac_filter(struct igb_adapter *adapter, u8* addr, u16 queue) if (is_zero_ether_addr(addr)) return 0; for (i = 0; i < hw->mac.rar_entry_count; i++) { - if (!compare_ether_addr(addr, adapter->mac_table[i].addr) && + if (ether_addr_equal(addr, adapter->mac_table[i].addr) && adapter->mac_table[i].queue == queue) { adapter->mac_table[i].state = IGB_MAC_STATE_MODIFIED; memset(adapter->mac_table[i].addr, 0, ETH_ALEN); diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h index 9dc9c9cdde..a404c9f856 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h @@ -3528,6 +3528,10 @@ extern void _kc_skb_add_rx_frag(struct sk_buff *, int, struct page *, /*****************************************************************************/ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) ) #define skb_tx_timestamp(skb) do {} while (0) +static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2) +{ + return !compare_ether_addr(addr1, addr2); +} #else #define HAVE_FDB_OPS #define HAVE_ETHTOOL_GET_TS_INFO diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c index 947be4428e..cb569068ca 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c +++ b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_main.c @@ -525,7 +525,7 @@ int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, u8* addr, u16 queue) if (is_zero_ether_addr(addr)) return 0; for (i = 0; i < hw->mac.num_rar_entries; i++) { - if (!compare_ether_addr(addr, adapter->mac_table[i].addr) && + if (ether_addr_equal(addr, adapter->mac_table[i].addr) && adapter->mac_table[i].queue == queue) { adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED; adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE; diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h index 3fe777ae57..3fb6b14b19 100644 --- a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h +++ b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h @@ -3107,6 +3107,10 @@ typedef netdev_features_t kni_netdev_features_t; /*****************************************************************************/ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0) ) +static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2) +{ + return !compare_ether_addr(addr1, addr2); +} #else #define HAVE_FDB_OPS #endif /* < 3.5.0 */ -- 2.20.1