[dpdk-dev] distributor crash with user assigned flow ids

2017-10-24 Thread Suryanathan P
Hi,

We see a crash in the dpdk packet distributor library when the packets are
assigned used defined flow ids. I was able to narrow down this issue to
incorrect worker ids returned by the sse implementation of find_match_vec().

Debug:

Non zero flow ids picked up from each mbuf in this burst
(gdb) p flows
$63 = {9521, 9521, 9521, 9521, 9521, 9521, 9521, 9521}

There are eight workers:
(gdb) p d->num_workers
$64 = 8

And eight packets being processed in this burst
(gdb) p pkts
$65 = 8

A call using vec instructions returns incorrect worker ids:

(gdb) call find_match_vec(d, &flows[0], &matches[0])
(gdb) p matches
$66 = {9, 9, 9, 9, 9, 9, 9, 9}

Where as, a call to the scalar implementation returns workers ids up to 8.
A comment in rte_distributor_process_v1705() says the matches array now
contain the intended worker ID (+1). So it makes sense to have worker ids
up to eight. (0-7)+1

(gdb) call find_match_scalar(d, &flows[0], &matches[0])
(gdb) p matches
$67 = {1, 1, 1, 0, 8, 0, 0, 0}

Is this a bug in the sse implementation of the find match function?

The function SEG faults when trying to access non-existent workers backlog
structure:

(gdb) p d->backlog[matches[j]-1]
$76 = {start = 0, count = 1, pkts = {0, 0, 0, 0, 0, 0, 0, 0}, tags = 0x0}


Regards,
Suryanathan


[dpdk-dev] How to set RTE_MACHINE on DPDK 1.7.0 correctly?

2014-07-23 Thread Suryanathan P
Hi,

I am trying to compile the test-pmd app on an Intel Core i7 targeted to run
on Intel Atom target.

When I run test pmd binary on the target machine, it fails to start with:

ERROR: This system does not support "AVX".
Please check that RTE_MACHINE is set correctly.

This is how I am building dpdk:

RTE_MAHCHINE=atm
export RTE_MACHINE

make install T=x86_64-native-linuxapp-gcc

Since this didn't work, I copied

cp config/defconfig_x86_64-native-linuxapp-gcc to
config/defconfig_x86_64-atm-linuxapp-gcc

and changed:

CONFIG_RTE_MACHINE="atm"

Followed by build:
make install T=x86_64-atm-linuxapp-gcc

This failed when compiling:
== Build lib/librte_pmd_ixgbe
. 
. 
CC ixgbe_rxtx_vec.o
In file included from
/home/sp/dpdk/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/sp/dpdk/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: In function
'ixgbe_recv_pkts_vec'

Any help is appreciated.

Thanks.
Suryanathan