For the SKB function change I had to change the ifdef in the kcompat.h file
around line 3848 (I think) to:
/* #### Changed the next line to use (3,13,8) instead of (3,14,0) KeithW */
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,13,8) )
#if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,0)))
#ifdef NETIF_F_RXHASH
#define PKT_HASH_TYPE_L3 0
static inline void
skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type)
{
skb->rxhash = hash;
}
#endif /* NETIF_F_RXHASH */
#endif /* < RHEL7 */
#endif /* < 3.14.0 */
Keith Wiles, Principal Technologist with CTO office, Wind River mobile
972-213-5533
On Aug 14, 2014, at 4:44 PM, Qiaobing Xie <qiaobing.xie at
gmail.com<mailto:qiaobing.xie at gmail.com>> wrote:
Hi,
I got the following error when I tried to compile 1.7.0 release tarball on a
Linux box (Ubuntu 12.04/kernel=3.13.0-32-generic, gcc=4.6.3):
============
In file included from
/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_osdep.h:41:0,
from
/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw.h:31,
from
/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.h:31,
from
/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.c:38:
/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3853:1:
error: conflicting types for ?skb_set_hash?
/usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1: note:
previous definition of ?skb_set_hash? was here
make[8]: ***
[/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.o]
Error 1
============
Apparently the version check around 'skb_set_hash' in kcompat.h failed for some
reason. To work around it, I temporarily commented out that 'skb_set_hash'
definition code and rte_kni complied fine. But it failed again in
librte_pmd_ixgbe:
=============
In file included from
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0:
/usr/lib/gcc/x86_64-linux-gnu/4.6/include/nmmintrin.h:31:3: error: #error
"SSE4.2 instruction set not enabled"
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: In function
?ixgbe_recv_pkts_vec?:
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: error:
implicit declaration of function ?_mm_shuffle_epi8?
[-Werror=implicit-function-declaration]
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: error:
nested extern declaration of ?_mm_shuffle_epi8? [-Werror=nested-externs]
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:11: error:
incompatible types when assigning to type ?__m128i? from type ?int?
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:298:11: error:
incompatible types when assigning to type ?__m128i? from type ?int?
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:313:11: error:
incompatible types when assigning to type ?__m128i? from type ?int?
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:314:11: error:
incompatible types when assigning to type ?__m128i? from type ?int?
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: error:
implicit declaration of function ?_mm_popcnt_u64?
[-Werror=implicit-function-declaration]
/home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: error:
nested extern declaration of ?_mm_popcnt_u64? [-Werror=nested-externs]
cc1: all warnings being treated as errors
make[3]: *** [ixgbe_rxtx_vec.o] Error 1
==============
My CPU is the older Intel C2D E6550 which does not have sse4.2/sse4.1 support.
Is there a way to work around this?
-Q