DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] 1.7.0 release failed to compile on linux
@ 2014-08-14 21:44 Qiaobing Xie
  2014-08-14 21:55 ` Wiles, Roger Keith
  2014-08-14 22:15 ` [dpdk-dev] 1.7.0 release failed to compile on linux Aws Ismail
  0 siblings, 2 replies; 10+ messages in thread
From: Qiaobing Xie @ 2014-08-14 21:44 UTC (permalink / raw)
  To: dev

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 21:44 [dpdk-dev] 1.7.0 release failed to compile on linux Qiaobing Xie
@ 2014-08-14 21:55 ` Wiles, Roger Keith
  2014-08-14 22:24   ` Aws Ismail
  2014-08-15 22:41   ` Thomas Monjalon
  2014-08-14 22:15 ` [dpdk-dev] 1.7.0 release failed to compile on linux Aws Ismail
  1 sibling, 2 replies; 10+ messages in thread
From: Wiles, Roger Keith @ 2014-08-14 21:55 UTC (permalink / raw)
  To: Qiaobing Xie; +Cc: dev

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@gmail.com<mailto:qiaobing.xie@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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 21:44 [dpdk-dev] 1.7.0 release failed to compile on linux Qiaobing Xie
  2014-08-14 21:55 ` Wiles, Roger Keith
@ 2014-08-14 22:15 ` Aws Ismail
  2014-08-15  0:16   ` Neil Horman
  1 sibling, 1 reply; 10+ messages in thread
From: Aws Ismail @ 2014-08-14 22:15 UTC (permalink / raw)
  To: Qiaobing Xie; +Cc: dev


On 08/14/2014 05:44 PM, Qiaobing Xie 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"
 From the error, nmmintrin.h contains built-in CPU calls that depend on 
the CPU having SSE4.2 extensions. You need to hunt down the call that is 
being executed and see which file is including nmmintrin.h. For example, 
I have encountered similar error on a CPU that does not have SSE4.1 and 
4.2 extension and it was trying to call the built-in HW crc hashing 
call. instead I switched with rte_jhash.h, the alternative SW 
implementation of the hashing call.

Looking below, nmmintrin.h is being included by the 
lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c, from the looks of it. This means 
that your defconfig (did you use the default one?) has 
CONFIG_RTE_IXGBE_INC_VECTOR value set to "y". try setting it to "n" and 
see where the build would stop next looking for another SSE4.x based 
builtin call.

My ultimate recommendation is to update you CPU to a newer one or 
perform the build/run on a separate newer CPU.

Aws\

> /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
>
>
>
>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 21:55 ` Wiles, Roger Keith
@ 2014-08-14 22:24   ` Aws Ismail
  2014-08-14 22:57     ` Qiaobing Xie
  2014-08-14 23:27     ` Qiaobing Xie
  2014-08-15 22:41   ` Thomas Monjalon
  1 sibling, 2 replies; 10+ messages in thread
From: Aws Ismail @ 2014-08-14 22:24 UTC (permalink / raw)
  To: Qiaobing Xie; +Cc: dev



On 08/14/2014 05:55 PM, Wiles, Roger Keith wrote:
> 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@gmail.com<mailto:qiaobing.xie@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
Last time I checked, I overcame this error by not using the tarball but 
by simply cloning the dpdk git repo and checking out the v1.7.0-rc4 tag. 
For example:

git clone git://dpdk.org/dpdk
git checkout v1.7.0-rc4
git checkout -b dpdk1.7.0-rc4  <---- the branch name is just an example, 
you could decide on any other name as you see fit.

My machine info:

3.11.0-20 kernel, ubuntu 12.04, gcc 4.6.3

 From the v1.7.0-rc4 tag, viewing 
lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3848, you could see:

<snip>
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) )
#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 */
<snip>

> 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
>
>
>
>
>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 22:24   ` Aws Ismail
@ 2014-08-14 22:57     ` Qiaobing Xie
  2014-08-14 23:27     ` Qiaobing Xie
  1 sibling, 0 replies; 10+ messages in thread
From: Qiaobing Xie @ 2014-08-14 22:57 UTC (permalink / raw)
  To: aws.ismail; +Cc: dev

Aws,

Thanks, I will move to v1.7.0-rc4 and get it a try...

-Q

On 8/14/14 5:24 PM, Aws Ismail wrote:
>
>
> On 08/14/2014 05:55 PM, Wiles, Roger Keith wrote:
>> 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@gmail.com<mailto:qiaobing.xie@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
> Last time I checked, I overcame this error by not using the tarball 
> but by simply cloning the dpdk git repo and checking out the 
> v1.7.0-rc4 tag. For example:
>
> git clone git://dpdk.org/dpdk
> git checkout v1.7.0-rc4
> git checkout -b dpdk1.7.0-rc4  <---- the branch name is just an 
> example, you could decide on any other name as you see fit.
>
> My machine info:
>
> 3.11.0-20 kernel, ubuntu 12.04, gcc 4.6.3
>
> From the v1.7.0-rc4 tag, viewing 
> lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3848, you could see:
>
> <snip>
> #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) )
> #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 */
> <snip>
>
>> 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
>>
>>
>>
>>
>>
>>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 22:24   ` Aws Ismail
  2014-08-14 22:57     ` Qiaobing Xie
@ 2014-08-14 23:27     ` Qiaobing Xie
  1 sibling, 0 replies; 10+ messages in thread
From: Qiaobing Xie @ 2014-08-14 23:27 UTC (permalink / raw)
  To: aws.ismail; +Cc: dev

OK, I made the following 3 changes and the v1.7.0 release tarball got 
built cleanly on my older machine (Ubuntu 12.04/kernel 
3.13.0-32-generic, Intel C2D E6550 without SSE4.x, gcc 4.6.3):

1) kcompat.h change version check from 3.14.0 -> 3.13.8, as Roger suggested.

2) disable RTE_IXGBE_INC_VECTOR:
-CONFIG_RTE_IXGBE_INC_VECTOR=y
+CONFIG_RTE_IXGBE_INC_VECTOR=n

3) disable CONFIG_RTE_LIBRTE_ACL:
-CONFIG_RTE_LIBRTE_ACL=y
+CONFIG_RTE_LIBRTE_ACL=n

I haven't tried to test run anything yet... What would be the 
implication without LIBRTE_ACL and IXGBE_INC_VECTOR built?

-Q

On 8/14/14 5:24 PM, Aws Ismail wrote:
>
>
> On 08/14/2014 05:55 PM, Wiles, Roger Keith wrote:
>> 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@gmail.com<mailto:qiaobing.xie@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
> Last time I checked, I overcame this error by not using the tarball 
> but by simply cloning the dpdk git repo and checking out the 
> v1.7.0-rc4 tag. For example:
>
> git clone git://dpdk.org/dpdk
> git checkout v1.7.0-rc4
> git checkout -b dpdk1.7.0-rc4  <---- the branch name is just an 
> example, you could decide on any other name as you see fit.
>
> My machine info:
>
> 3.11.0-20 kernel, ubuntu 12.04, gcc 4.6.3
>
> From the v1.7.0-rc4 tag, viewing 
> lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3848, you could see:
>
> <snip>
> #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) )
> #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 */
> <snip>
>
>> 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
>>
>>
>>
>>
>>
>>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 22:15 ` [dpdk-dev] 1.7.0 release failed to compile on linux Aws Ismail
@ 2014-08-15  0:16   ` Neil Horman
  2014-08-15  0:31     ` Qiaobing Xie
  0 siblings, 1 reply; 10+ messages in thread
From: Neil Horman @ 2014-08-15  0:16 UTC (permalink / raw)
  To: Aws Ismail; +Cc: dev

On Thu, Aug 14, 2014 at 06:15:24PM -0400, Aws Ismail wrote:
> 
> On 08/14/2014 05:44 PM, Qiaobing Xie 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"
> From the error, nmmintrin.h contains built-in CPU calls that depend on the
> CPU having SSE4.2 extensions. You need to hunt down the call that is being
> executed and see which file is including nmmintrin.h. For example, I have
> encountered similar error on a CPU that does not have SSE4.1 and 4.2
> extension and it was trying to call the built-in HW crc hashing call.
> instead I switched with rte_jhash.h, the alternative SW implementation of
> the hashing call.
> 
> Looking below, nmmintrin.h is being included by the
> lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c, from the looks of it. This means that
> your defconfig (did you use the default one?) has
> CONFIG_RTE_IXGBE_INC_VECTOR value set to "y". try setting it to "n" and see
> where the build would stop next looking for another SSE4.x based builtin
> call.
> 
This is fixed at the head of the dpdk git tree.  The vector rx code has been
converted to use builtin intrinsics that can work without sse support in the
cpu.  The ACL library has a simmilar problem, but we are working at enabling it
for all cpus, with runtime updates to faster paths when the executing cpu
supports it.

> My ultimate recommendation is to update you CPU to a newer one or perform
> the build/run on a separate newer CPU.
> 
Building on a newer cpu won't help if you intend to run it on an older cpu.

Neil

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-15  0:16   ` Neil Horman
@ 2014-08-15  0:31     ` Qiaobing Xie
  0 siblings, 0 replies; 10+ messages in thread
From: Qiaobing Xie @ 2014-08-15  0:31 UTC (permalink / raw)
  To: Neil Horman, Aws Ismail; +Cc: dev

Nail,

Thanks for the info... I got v1.7.0 tarball compile after configuring 
out both IXGBE_INC_VECTOR and ACL. I will take a look at the head.

-Q

On 8/14/14 7:16 PM, Neil Horman wrote:
> On Thu, Aug 14, 2014 at 06:15:24PM -0400, Aws Ismail wrote:
>> On 08/14/2014 05:44 PM, Qiaobing Xie 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"
>>  From the error, nmmintrin.h contains built-in CPU calls that depend on the
>> CPU having SSE4.2 extensions. You need to hunt down the call that is being
>> executed and see which file is including nmmintrin.h. For example, I have
>> encountered similar error on a CPU that does not have SSE4.1 and 4.2
>> extension and it was trying to call the built-in HW crc hashing call.
>> instead I switched with rte_jhash.h, the alternative SW implementation of
>> the hashing call.
>>
>> Looking below, nmmintrin.h is being included by the
>> lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c, from the looks of it. This means that
>> your defconfig (did you use the default one?) has
>> CONFIG_RTE_IXGBE_INC_VECTOR value set to "y". try setting it to "n" and see
>> where the build would stop next looking for another SSE4.x based builtin
>> call.
>>
> This is fixed at the head of the dpdk git tree.  The vector rx code has been
> converted to use builtin intrinsics that can work without sse support in the
> cpu.  The ACL library has a simmilar problem, but we are working at enabling it
> for all cpus, with runtime updates to faster paths when the executing cpu
> supports it.
>
>> My ultimate recommendation is to update you CPU to a newer one or perform
>> the build/run on a separate newer CPU.
>>
> Building on a newer cpu won't help if you intend to run it on an older cpu.
>
> Neil
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] 1.7.0 release failed to compile on linux
  2014-08-14 21:55 ` Wiles, Roger Keith
  2014-08-14 22:24   ` Aws Ismail
@ 2014-08-15 22:41   ` Thomas Monjalon
  2014-08-17  0:10     ` [dpdk-dev] [please ignore this test email] Wiles, Roger Keith
  1 sibling, 1 reply; 10+ messages in thread
From: Thomas Monjalon @ 2014-08-15 22:41 UTC (permalink / raw)
  To: Wiles, Roger Keith; +Cc: dev

Hi Keith,

2014-08-14 21:55, Wiles, Roger Keith:
> /* #### 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 */

I really don't understand why changing condition from
	< 3.14.0
to
	< 3.13.8
would be better?
This function appeared in 3.14.0. Maybe that Ubuntu backported it for their
12.04 version, so it must be handled with a specific Ubuntu check as it was
already done for Ubuntu 14.04:
	#if (!(UBUNTU_RELEASE_CODE == UBUNTU_RELEASE_VERSION(14,4) &&
	UBUNTU_KERNEL_CODE >= UBUNTU_KERNEL_VERSION(3,13,0,30,54)))

Please help to improve what is done in master branch by providing patches.

Note: please do not top post and try to use cite mark '>'

Thanks
-- 
Thomas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [please ignore this test email]
  2014-08-15 22:41   ` Thomas Monjalon
@ 2014-08-17  0:10     ` Wiles, Roger Keith
  0 siblings, 0 replies; 10+ messages in thread
From: Wiles, Roger Keith @ 2014-08-17  0:10 UTC (permalink / raw)
  To: <dev@dpdk.org>


Test 1 
On Aug 15, 2014, at 5:41 PM, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:

> Hi Keith,
> 
> 2014-08-14 21:55, Wiles, Roger Keith:
>> /* #### 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 */
> 
Test 2
Test 3
> I really don't understand why changing condition from
> 	< 3.14.0
> to
> 	< 3.13.8
> would be better?
> This function appeared in 3.14.0. Maybe that Ubuntu backported it for their
> 12.04 version, so it must be handled with a specific Ubuntu check as it was
> already done for Ubuntu 14.04:
> 	#if (!(UBUNTU_RELEASE_CODE == UBUNTU_RELEASE_VERSION(14,4) &&
> 	UBUNTU_KERNEL_CODE >= UBUNTU_KERNEL_VERSION(3,13,0,30,54)))
> 
> Please help to improve what is done in master branch by providing patches.
> 
Test 4
> Note: please do not top post and try to use cite mark '>'
> 
> Thanks
> -- 
> Thomas
Thanks
++Keith
Keith Wiles, Principal Technologist with CTO office, Wind River mobile 972-213-5533

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-08-17  0:07 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-14 21:44 [dpdk-dev] 1.7.0 release failed to compile on linux Qiaobing Xie
2014-08-14 21:55 ` Wiles, Roger Keith
2014-08-14 22:24   ` Aws Ismail
2014-08-14 22:57     ` Qiaobing Xie
2014-08-14 23:27     ` Qiaobing Xie
2014-08-15 22:41   ` Thomas Monjalon
2014-08-17  0:10     ` [dpdk-dev] [please ignore this test email] Wiles, Roger Keith
2014-08-14 22:15 ` [dpdk-dev] 1.7.0 release failed to compile on linux Aws Ismail
2014-08-15  0:16   ` Neil Horman
2014-08-15  0:31     ` Qiaobing Xie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).