dpdk.git
8 years agofm10k: allow to disable vector driver
Chen Jing D(Mark) [Tue, 24 Nov 2015 06:15:53 +0000 (14:15 +0800)]
fm10k: allow to disable vector driver

fm10k driver will meet compile error on non-x86 platforms due to
SSE instructions. Original implementation didn't have switch to
turn off vPMD.
The improvement introduces a macro to turn on/off vPMD functions,
it's on by default. On non-x86 platforms, it can simply be turned
off to fix compile issue.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
8 years agofm10k: fix crash when closing
Chen Jing D(Mark) [Tue, 24 Nov 2015 03:10:16 +0000 (11:10 +0800)]
fm10k: fix crash when closing

When the fm10k port is closed, both func tx_queue_clean() and
fm10k_tx_queue_release_mbufs_vec() will try to release buffer in
SW ring. The latter func won't do sanity check on those pointers
and cause crash.

The fix removed Vector TX buffer release func since it can share
the release functions with regular TX.

Fixes: fb9066e479a6 ("fm10k: reset and release mbuf for vector Tx")

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
8 years agofm10k: fix VLAN in Rx mbuf
Shaopeng He [Fri, 20 Nov 2015 14:09:47 +0000 (22:09 +0800)]
fm10k: fix VLAN in Rx mbuf

vlan_tci should be copied from RX descriptor to mbuf,
and flag PKT_RX_VLAN_PKT should be set for every RX packet,
this patch fixes this issue.
Packets in fm10k device always carry at least one VLAN tag.
For those packets coming in without VLAN tag,
the port default VLAN tag will be used.
So in fm10k, always PKT_RX_VLAN_PKT flag is set and vlan_tci
is valid for each RX packet's mbuf.

Signed-off-by: Shaopeng He <shaopeng.he@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agoi40evf: fix write flush
Jingjing Wu [Mon, 16 Nov 2015 07:08:30 +0000 (15:08 +0800)]
i40evf: fix write flush

For i40e vf driver, should use I40EVF_WRITE_FLUSH to flush
configuration but not I40E_WRITE_FLUSH. This patch fixed this issue.

Fixes: be6c228d4da3 (i40evf: support Rx interrupt)

Reported-by: Qian Xu <qian.q.xu@intel.com>
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
8 years agoi40e: fix BW info without DCB enabled
Jingjing Wu [Sun, 22 Nov 2015 12:35:20 +0000 (20:35 +0800)]
i40e: fix BW info without DCB enabled

If DCB is not enabled, the BW info is not stored for VSI. This
patch fixes this issue by merging functions i40e_vsi_dump_bw_config
and i40e_vsi_get_bw_info together.

Fixes: c8b9a3e3fe1b (i40e: support DCB mode)

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
8 years agoi40e: fix DCB configuration with firmware >= 5.x
Jingjing Wu [Mon, 16 Nov 2015 08:56:57 +0000 (16:56 +0800)]
i40e: fix DCB configuration with firmware >= 5.x

When NVM version is updated to 5.x, DCB can not be configured. This
issue is because of the FW version validation is not correct.
This patch fixed this issue.

Fixes: c8b9a3e3fe1b (i40e: support DCB mode)

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Tested-by: Yulong Pei <yulong.pei@intel.com>
8 years agoi40e: skip link control as firmware workaround
Helin Zhang [Tue, 17 Nov 2015 07:09:47 +0000 (15:09 +0800)]
i40e: skip link control as firmware workaround

As firmware does not support any link control from software driver
side, any phy config should be ignored as a workaround. Otherwise
the link might not be up again after binding back to kernel driver.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
8 years agoi40e: fix reconfiguring hash enable flags
Helin Zhang [Mon, 23 Nov 2015 06:19:24 +0000 (14:19 +0800)]
i40e: fix reconfiguring hash enable flags

It fixes the issue of not re-configuring hash enable flags (HENA)
if there is no key.

Fixes: d0a349409bd7 ("i40e: support AQ based RSS config")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
8 years agoi40e: remove CRC size from byte counters
Harry van Haaren [Wed, 18 Nov 2015 10:48:09 +0000 (10:48 +0000)]
i40e: remove CRC size from byte counters

This patch removes the crc bytes from byte counter statistics.

Doing so fixes a bug that CRC bytes were included on TX but not
on RX, causing mismatch of bytes received / sent.

Fixes: 9aace75fc82e ("i40e: fix statistics")

Reported-by: Weichun Chen <weichunx.chen@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agoixgbe: remove CRC size from byte counters
Harry van Haaren [Wed, 18 Nov 2015 10:48:08 +0000 (10:48 +0000)]
ixgbe: remove CRC size from byte counters

This patch removes the crc bytes from byte counter statistics.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agoe1000: remove CRC size from byte counters
Harry van Haaren [Wed, 18 Nov 2015 10:48:07 +0000 (10:48 +0000)]
e1000: remove CRC size from byte counters

This patch removes the crc bytes from byte counter statistics.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agoe1000: fix PCI device info with secondary process
Jon DeVree [Mon, 23 Nov 2015 15:13:53 +0000 (10:13 -0500)]
e1000: fix PCI device info with secondary process

This fixes a bug added to em and igb drivers which causes the pci info
seen by the primary process to become invalidated by secondary process
startup.
This call was added after the process type check in the other drivers.

Fixes: eeefe73f0af1 ("drivers: copy PCI device info to ethdev data")

Signed-off-by: Jon DeVree <nuxi@vault24.org>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
8 years agoring: fix memory leak when detaching
Mauricio Vasquez B [Fri, 20 Nov 2015 18:24:19 +0000 (19:24 +0100)]
ring: fix memory leak when detaching

When freeing the device it is also neccesary to free
rx_queues and tx_queues

Signed-off-by: Mauricio Vasquez B <mauricio.vasquezbernal@studenti.polito.it>
8 years agoconfig: disable i40e vector driver
Zhe Tao [Mon, 23 Nov 2015 18:47:11 +0000 (02:47 +0800)]
config: disable i40e vector driver

Issue: l3fwd app need the ptype in the mbuf to forward the packets properly.
But now some drivers like virtio driver and FVL vPMD will not set the ptype
in mbuf, so l3fwd cannot work properly on that kind of drivers.

Configure the vector PMD option as no for default as a work around for l3fwd.
After the l3fwd app can handle the undefined ptype or the i40e vPMD can
return the ptype, the option will be set as yes for default again.

Signed-off-by: Zhe Tao <zhe.tao@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
8 years agoethdev: add a missing sanity check for Tx queue setup
Rahul Lakkireddy [Fri, 20 Nov 2015 10:26:37 +0000 (15:56 +0530)]
ethdev: add a missing sanity check for Tx queue setup

Add a sanity check for number of tx descriptors requested during tx
queue setup.  Return -EINVAL if the number requested does not meet
the tx descriptor requirements of the device.

Fixes: 80a1deb4c77a ("ethdev: add API to retrieve queue information")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agoethdev: fix missing symbol export
Panu Matilainen [Wed, 18 Nov 2015 07:33:52 +0000 (09:33 +0200)]
ethdev: fix missing symbol export

It prevents some drivers to load:
undefined symbol: rte_eth_dma_zone_reserve

Fixes: 719dbebceb81 ("xen: allow determining DOM0 at runtime")

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
8 years agoeal: fix plugin directory scan to be filesystem agnostic
Panu Matilainen [Wed, 18 Nov 2015 06:45:23 +0000 (08:45 +0200)]
eal: fix plugin directory scan to be filesystem agnostic

Not all filesystems supply struct dirent d_type field, in which case
everything in the specified directory would go ignored. One such
filesystem being XFS which RHEL 7 defaults to... stat() the entries
instead.

Fixes: 9f8eb1d9ca0f ("eal: support driver loading from directory")

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
8 years agoeal: fix plugin loading without requiring full path
Panu Matilainen [Mon, 23 Nov 2015 12:05:55 +0000 (14:05 +0200)]
eal: fix plugin loading without requiring full path

The added error checking on plugin initialization in
commit 9f8eb1d9ca0f56d6292db5858c52e6873d0abe51 broke the ability of
loading plugins by their basename from default linker locations.
Only use stat() for directory discovery and leave error handling
to dlopen() to restore former behavior.

Fixes: 9f8eb1d9ca0f ("eal: support driver loading from directory")

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
8 years agoeal: restrict empty declarations to doxygen
David Marchand [Fri, 13 Nov 2015 09:35:26 +0000 (10:35 +0100)]
eal: restrict empty declarations to doxygen

No need for those forward declarations (which breaks build when asking for
C++11 or adding pedantic flag).

Signed-off-by: David Marchand <david.marchand@6wind.com>
8 years agoeal: revert C++ app build fix
David Marchand [Fri, 13 Nov 2015 09:35:25 +0000 (10:35 +0100)]
eal: revert C++ app build fix

It does not build with every C++ compilers.
Reverts the _UNDERLYING_TYPE workarounds to prepare
for another fix in the next patch.

Fixes: 621389bbbe08 ("eal: fix C++ app build")

Signed-off-by: David Marchand <david.marchand@6wind.com>
8 years agoeal: fix alarm clock type for glibc < 2.12
Ferruh Yigit [Thu, 19 Nov 2015 11:23:42 +0000 (11:23 +0000)]
eal: fix alarm clock type for glibc < 2.12

CLOCK_MONOTONIC_RAW added in glibc 2.12, using this define in older
glibc versions cause compile error:
'error: identifier "CLOCK_MONOTONIC_RAW" is undefined'

This patch replaces "CLOCK_MONOTONIC_RAW" with "CLOCK_MONOTONIC" for
older glibc versions, versions that support "CLOCK_MONOTONIC_RAW"
will keep using this clock type.

Fixes: d08d304508a8 ("eal/linux: make alarm not affected by system time jump")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
8 years agoszedata2: add scattered Rx
Matej Vido [Tue, 10 Nov 2015 14:18:16 +0000 (15:18 +0100)]
szedata2: add scattered Rx

Add new RX function for handling scattered packets.

Signed-off-by: Matej Vido <matejvido@gmail.com>
8 years agoszedata2: add Tx
Matej Vido [Tue, 10 Nov 2015 14:18:15 +0000 (15:18 +0100)]
szedata2: add Tx

TX function handles scattered and non-scattered packets.

Signed-off-by: Matej Vido <matejvido@gmail.com>
8 years agoszedata2: add non-scattered Rx
Matej Vido [Tue, 10 Nov 2015 14:18:14 +0000 (15:18 +0100)]
szedata2: add non-scattered Rx

Signed-off-by: Matej Vido <matejvido@gmail.com>
8 years agoszedata2: add new poll mode driver
Matej Vido [Tue, 10 Nov 2015 14:18:13 +0000 (15:18 +0100)]
szedata2: add new poll mode driver

Add virtual PMD which communicates with COMBO cards through sze2
layer using libsze2 library.

Since link_speed is uint16_t, there can not be used number for 100G
speed, therefore link_speed is set to ETH_LINK_SPEED_10G until the
type of link_speed is solved.

Signed-off-by: Matej Vido <matejvido@gmail.com>
8 years agomk: fix extra options when linking lib through compiler
Thomas Monjalon [Fri, 20 Nov 2015 13:56:56 +0000 (14:56 +0100)]
mk: fix extra options when linking lib through compiler

When using a linker option not known by the compiler like -rpath,
the library linkage was failing.
It is fixed by prefixing the option with -Wl, as it is done in other
makefiles.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
8 years agomk: fix build with icc 16
Declan Doherty [Fri, 20 Nov 2015 14:34:33 +0000 (14:34 +0000)]
mk: fix build with icc 16

This patch changes the ICC conditional check to disable
-no-inline-max-size and -no-inline-max-total-size to be
for all versions of icc greater than 14 and not just for version 15.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
8 years agoacl: fix native build on haswell with icc
Konstantin Ananyev [Fri, 20 Nov 2015 15:38:50 +0000 (15:38 +0000)]
acl: fix native build on haswell with icc

On HSW box with icc 16.0.0 build for x86_64-native-linuxapp-icc fails with:
icc: command line warning #10120: overriding '-march=native' with '-msse4.1'
...
dpdk.org/x86_64-native-linuxapp-icc/include/rte_memcpy.h(96): error: identifier "__m256i" is undefined

The reason is that icc treats "-march=native ... -msse4.1"
in a different way, then gcc and clang.
For icc it means override all flags enabled with
'-march=native' with '-msse4.1'.
Even when '-march=native' is a superset for '-msse4.1'.
To overcome the problem add a check is SSE4.1 compilation flag already enabled.
If yes, then no need to add '-msse4.1'
Similar change for avx2 compilation option.

Fixes: 074f54ad03ee ("acl: fix build and runtime for default target")

Reported-by: Declan Doherty <declan.doherty@intel.com>
Reported-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
8 years agoexamples/l2fwd-keepalive: add sample application
Remy Horton [Wed, 18 Nov 2015 14:05:16 +0000 (14:05 +0000)]
examples/l2fwd-keepalive: add sample application

Modified version of l2fwd to demonstrate keep-alive functionality.

Signed-off-by: Remy Horton <remy.horton@intel.com>
Signed-off-by: Maryam Tahhan <maryam.tahhan@intel.com>
Signed-off-by: John J Browne <john.j.browne@intel.com>
8 years agoeal: add keep alive monitoring
Remy Horton [Wed, 18 Nov 2015 14:05:14 +0000 (14:05 +0000)]
eal: add keep alive monitoring

Adds functions for detecting and reporting the live-ness of LCores,
the primary requirement of which is minimal overheads for the
core(s) being checked. Core failures are notified via an application
defined callback.

Signed-off-by: Remy Horton <remy.horton@intel.com>
8 years agokni: fix build with kernel 2.6.32
Helin Zhang [Mon, 9 Nov 2015 06:26:12 +0000 (14:26 +0800)]
kni: fix build with kernel 2.6.32

It fixes the compile issue on kernel version 2.6.32 or old ones.

Error logs:
lib/librte_eal/linuxapp/kni/kni_misc.c:121: error: unknown field id specified in initializer
lib/librte_eal/linuxapp/kni/kni_misc.c:121: error: excess elements in struct initializer
lib/librte_eal/linuxapp/kni/kni_misc.c:121: error: (near initialization for kni_net_ops)
lib/librte_eal/linuxapp/kni/kni_misc.c:122: error: unknown field size specified in initializer
lib/librte_eal/linuxapp/kni/kni_misc.c:122: error: excess elements in struct initializer
lib/librte_eal/linuxapp/kni/kni_misc.c:122: error: (near initialization for kni_net_ops)

Fixes: 72a7a2b2469e ("kni: allow per-net instances")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agokni: use utsrelease to determine Ubuntu kernel version
Simon Kagstrom [Thu, 20 Aug 2015 06:51:06 +0000 (08:51 +0200)]
kni: use utsrelease to determine Ubuntu kernel version

/proc/version_signature is the version for the host machine, but in
e.g., chroots, this does not necessarily match that DPDK is built
for. DPDK will then build for the wrong kernel version - that of the
server, and not that installed in the (build) chroot.

The patch uses utsrelease.h from the kernel sources instead and fakes
the upload version.

Tested on a server with Ubuntu 12.04, building in a chroot for Ubuntu
14.04.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Signed-off-by: Johan Faltstrom <johan.faltstrom@netinsight.net>
Acked-by: Helin Zhang <helin.zhang@intel.com>
8 years agoconfig: disable KNI module on tile
Zhigang Lu [Tue, 17 Nov 2015 06:23:54 +0000 (14:23 +0800)]
config: disable KNI module on tile

Commit 36080ff96b0e causes compiling error on tile, as tile
does not support KNI, so we disable the CONFIG_RTE_KNI_KMOD.

Fixes: 36080ff96b0e ("config: add KNI kmod option")

Reported-by: Guo Xin <gxin@ezchip.com>
Signed-off-by: Zhigang Lu <zlu@ezchip.com>
8 years agoeal: introduce SMP memory barriers
Jerin Jacob [Fri, 6 Nov 2015 09:40:32 +0000 (15:10 +0530)]
eal: introduce SMP memory barriers

This commit introduce rte_smp_mb(), rte_smp_wmb() and rte_smp_rmb(), in
order to enable memory barriers between lcores.
The patch does not provide any functional change for IA, the goal is to
have infrastructure for weakly ordered machines like ARM to work on DPDK.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agomk: add thunderx machine target based on armv8-a
Jerin Jacob [Fri, 6 Nov 2015 09:40:29 +0000 (15:10 +0530)]
mk: add thunderx machine target based on armv8-a

Created the new thunderx machine target to address difference
in "cache line size" and "-mcpu=thunderx" vs default armv8-a machine target

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agomk: introduce ARMv8 architecture
Jerin Jacob [Fri, 6 Nov 2015 09:40:28 +0000 (15:10 +0530)]
mk: introduce ARMv8 architecture

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoacl: add NEON optimization for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:27 +0000 (15:10 +0530)]
acl: add NEON optimization for ARMv8

The implementation uses NEON gcc intrinsic.
Verified with testacl and acl_autotest applications on arm64 architecture.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
8 years agoeal/arm: add CPU flags for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:21 +0000 (15:10 +0530)]
eal/arm: add CPU flags for ARMv8

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoeal/arm: add vector header for ARM NEON
Jerin Jacob [Mon, 2 Nov 2015 23:47:25 +0000 (00:47 +0100)]
eal/arm: add vector header for ARM NEON

Added the definition of rte_xmm and xmm_t for acl neon implementation.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoeal/arm: add memcpy based on libc for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:24 +0000 (15:10 +0530)]
eal/arm: add memcpy based on libc for ARMv8

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoeal/arm: add atomic operations for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:20 +0000 (15:10 +0530)]
eal/arm: add atomic operations for ARMv8

except rte_?wb() functions other functions are used from
RTE_FORCE_INTRINSICS=y scheme

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoeal/arm: add prefetch operations for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:22 +0000 (15:10 +0530)]
eal/arm: add prefetch operations for ARMv8

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agoeal/arm: add cpu cycle operations for ARMv8
Jerin Jacob [Fri, 6 Nov 2015 09:40:23 +0000 (15:10 +0530)]
eal/arm: add cpu cycle operations for ARMv8

cntcvt_el0 ticks are not based on cpu clk unlike rdtsc in x86.
Its a fixed clock running based at constant speed.
Though its a armv8-a implementer choice, typically it runs at 50 or 100 MHz

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
8 years agomk: introduce ARMv7 architecture
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:27 +0000 (00:47 +0100)]
mk: introduce ARMv7 architecture

Make DPDK run on ARMv7-A architecture. This patch assumes
ARM Cortex-A9. However, it is known to be working on Cortex-A7
and Cortex-A15.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agomk: ignore alignment errors for ARMv7
Jan Viktorin [Mon, 2 Nov 2015 23:47:26 +0000 (00:47 +0100)]
mk: ignore alignment errors for ARMv7

There several issues with alignment when compiling for ARMv7.
They are not considered to be fatal (ARMv7 supports unaligned
access of 32b words), so we just leave them as warnings. They
should be solved later, however.

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: detect ARMv7 architecture in CPU flags
Jan Viktorin [Mon, 2 Nov 2015 23:47:23 +0000 (00:47 +0100)]
eal/arm: detect ARMv7 architecture in CPU flags

Based on the patch by David Hunt and Armuta Zende:

  lib: added support for armv7 architecture

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: Amruta Zende <amruta.zende@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add CPU flags for ARMv7
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:22 +0000 (00:47 +0100)]
eal/arm: add CPU flags for ARMv7

This implementation is based on IBM POWER version of
rte_cpuflags. We use software emulation of HW capability
registers, because those are usually not directly accessible
from userspace on ARM.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: use vector memcpy only when NEON is enabled
Jan Viktorin [Mon, 2 Nov 2015 23:47:21 +0000 (00:47 +0100)]
eal/arm: use vector memcpy only when NEON is enabled

The GCC can be configured to avoid using NEON extensions.
For that purpose, we provide just the memcpy implementation
of the rte_memcpy.

Based on the patch by David Hunt and Armuta Zende:

  lib: added support for armv7 architecture

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: Amruta Zende <amruta.zende@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add vector memcpy for ARMv7
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:20 +0000 (00:47 +0100)]
eal/arm: add vector memcpy for ARMv7

The SSE based memory copy in DPDK only support x86. This patch
adds ARM NEON based memory copy functions for ARM architecture.

The implementation improves memory copy of short or well aligned
data buffers. The following measurements show improvements over
the libc memcpy on Cortex CPUs.

               by X % faster
Length (B)   a15    a7     a9
   1         4.9  15.2    3.2
   7        56.9  48.2   40.3
   8        37.3  39.8   29.6
   9        69.3  38.7   33.9
  15        60.8  35.3   23.7
  16        50.6  35.9   35.0
  17        57.7  35.7   31.1
  31        16.0  23.3    9.0
  32        65.9  13.5   21.4
  33         3.9  10.3   -3.7
  63         2.0  12.9   -2.0
  64        66.5   0.0   16.5
  65         2.7   7.6  -35.6
 127         0.1   4.5  -18.9
 128        66.2   1.5  -51.4
 129        -0.8   3.2  -35.8
 255        -3.1  -0.9  -69.1
 256        67.9   1.2    7.2
 257        -3.6  -1.9  -36.9
 320        67.7   1.4    0.0
 384        66.8   1.4  -14.2
 511       -44.9  -2.3  -41.9
 512        67.3   1.4   -6.8
 513       -41.7  -3.0  -36.2
1023       -82.4  -2.8  -41.2
1024        68.3   1.4  -11.6
1025       -80.1  -3.3  -38.1
1518       -47.3  -5.0  -38.3
1522       -48.3  -6.0  -37.9
1600        65.4   1.3  -27.3
2048        59.5   1.5  -10.9
3072        52.3   1.5  -12.2
4096        45.3   1.4  -12.5
5120        40.6   1.5  -14.5
6144        35.4   1.4  -13.4
7168        32.9   1.4  -13.9
8192        28.2   1.4  -15.1

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add rwlock operations for ARM
Jan Viktorin [Mon, 2 Nov 2015 23:47:24 +0000 (00:47 +0100)]
eal/arm: add rwlock operations for ARM

Just a copy from PPC.

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add spinlock operations for ARM
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:19 +0000 (00:47 +0100)]
eal/arm: add spinlock operations for ARM

This patch adds spinlock operations for ARM architecture.
We do not support HTM in spinlocks on ARM. Setting of the
RTE_FORCE_INTRINSICS=y is required.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add atomic operations for ARMv7
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:14 +0000 (00:47 +0100)]
eal/arm: add atomic operations for ARMv7

This patch adds architecture specific atomic operation file
for ARM architecture. The RTE_FORCE_INTRINSICS=y is required.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add prefetch operations for ARMv7
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:18 +0000 (00:47 +0100)]
eal/arm: add prefetch operations for ARMv7

This patch adds architecture specific prefetch operations
for ARM architecture. It utilizes the pld instruction that
starts filling the appropriate cache line without blocking.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: read timer from PMU if enabled
Jan Viktorin [Mon, 2 Nov 2015 23:47:17 +0000 (00:47 +0100)]
eal/arm: read timer from PMU if enabled

Enable to choose a preferred way to read timer based on the
configuration entry CONFIG_RTE_ARM_EAL_RDTSC_USE_PMU.
It requires a kernel module that is not included to work.

Based on the patch by David Hunt and Armuta Zende:

  lib: added support for armv7 architecture

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Signed-off-by: Amruta Zende <amruta.zende@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add cpu cycle operations for ARMv7
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:16 +0000 (00:47 +0100)]
eal/arm: add cpu cycle operations for ARMv7

ARM architecture doesn't have a suitable source of CPU cycles. This
patch uses clock_gettime instead. The implementation should be improved
in the future.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal/arm: add byte order operations for ARM
Vlastimil Kosar [Mon, 2 Nov 2015 23:47:15 +0000 (00:47 +0100)]
eal/arm: add byte order operations for ARM

This patch adds architecture specific byte order operations
for ARM. The architecture supports both big and little endian.
It requires RTE_FORCE_INTRINSICS=y.

Signed-off-by: Vlastimil Kosar <kosar@rehivetech.com>
Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agodoc: add PTP client sample guide
Daniel Mrzyglod [Fri, 13 Nov 2015 16:09:14 +0000 (16:09 +0000)]
doc: add PTP client sample guide

Add a sample app guide for the ptpclient application.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoexamples/ptpclient: add minimal PTP client
Daniel Mrzyglod [Fri, 13 Nov 2015 16:09:13 +0000 (16:09 +0000)]
examples/ptpclient: add minimal PTP client

Add a sample application that acts as a PTP slave using the
DPDK ieee1588 functions.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoapp/testpmd: add nanosecond output for ieee1588
Pablo de Lara [Fri, 13 Nov 2015 16:09:12 +0000 (16:09 +0000)]
app/testpmd: add nanosecond output for ieee1588

Testpmd was only printing out second values when printing
RX/TX timestamp value, instead of both second and nanoseconds.
Since resolution of time counters is in nanoseconds,
testpmd should print out both.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoi40e: support ieee1588 functions for device time
Pablo de Lara [Fri, 13 Nov 2015 16:09:11 +0000 (16:09 +0000)]
i40e: support ieee1588 functions for device time

Add additional functions to support the existing IEEE1588
functionality and to enable getting, setting and adjusting
the device time.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoigb: support ieee1588 functions for device time
Pablo de Lara [Fri, 13 Nov 2015 16:09:10 +0000 (16:09 +0000)]
igb: support ieee1588 functions for device time

Add additional functions to support the existing IEEE1588
functionality and to enable getting, setting and adjusting
the device time.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoixgbe: support ieee1588 functions for device time
Daniel Mrzyglod [Fri, 13 Nov 2015 16:09:09 +0000 (16:09 +0000)]
ixgbe: support ieee1588 functions for device time

Add additional functions to support the existing IEEE1588
functionality and to enable getting, setting and adjusting
the device time.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoeal: add helpers for time conversions
Daniel Mrzyglod [Fri, 13 Nov 2015 16:09:08 +0000 (16:09 +0000)]
eal: add helpers for time conversions

Add common functions and structures to handle time, and cycle counts
which will be used for PTP processing.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agoethdev: add ieee1588 functions for device clock time
Daniel Mrzyglod [Fri, 13 Nov 2015 16:09:07 +0000 (16:09 +0000)]
ethdev: add ieee1588 functions for device clock time

Add additional functions to support the existing IEEE1588
functionality.

  * rte_eth_timesync_write_time():  set the device clock time.
  * rte_eth_timesync_read_time():   get the device clock time.
  * rte_eth_timesync_adjust_time(): adjust the device clock time.

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
8 years agofm10k: use common functions to manage DMA zone
Stephen Hemminger [Fri, 6 Nov 2015 00:09:34 +0000 (16:09 -0800)]
fm10k: use common functions to manage DMA zone

Adapt to Xen at runtime.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
8 years agoi40e: use common functions to manage DMA zone
Stephen Hemminger [Fri, 6 Nov 2015 00:09:33 +0000 (16:09 -0800)]
i40e: use common functions to manage DMA zone

Handle Xen support at runtime.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
8 years agoixgbe: use common functions to manage DMA zone
Stephen Hemminger [Fri, 6 Nov 2015 00:09:32 +0000 (16:09 -0800)]
ixgbe: use common functions to manage DMA zone

Adapt DMA memory for Xen at runtime.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
8 years agoe1000: use common functions to manage DMA zone
Stephen Hemminger [Fri, 6 Nov 2015 00:09:31 +0000 (16:09 -0800)]
e1000: use common functions to manage DMA zone

Use common code to handle Xen support at runtime.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
8 years agoxen: allow determining DOM0 at runtime
Stephen Hemminger [Fri, 6 Nov 2015 00:09:30 +0000 (16:09 -0800)]
xen: allow determining DOM0 at runtime

Add memory infrastructure for runtime Xen DOM0 support.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jijiang Liu <jijiang.liu@intel.com>
8 years agoethdev: mark deprecated statistics with attribute
Stephen Hemminger [Fri, 6 Nov 2015 01:04:39 +0000 (17:04 -0800)]
ethdev: mark deprecated statistics with attribute

Use deprecated attribute to highlight any use of fields that
are marked as going away in the rte_ether device statistics.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agoexamples/ip_pipeline: remove references to deprecated statistics
Thomas Monjalon [Thu, 12 Nov 2015 21:58:37 +0000 (22:58 +0100)]
examples/ip_pipeline: remove references to deprecated statistics

Keep only basic statistics which should never been deprecated.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agoapp/testpmd: remove references to deprecated statistics
Stephen Hemminger [Fri, 6 Nov 2015 01:04:38 +0000 (17:04 -0800)]
app/testpmd: remove references to deprecated statistics

Some of the statistics are deprecated, so don't test them.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agobonding: do not sum deprecated statistics
Stephen Hemminger [Fri, 6 Nov 2015 01:04:34 +0000 (17:04 -0800)]
bonding: do not sum deprecated statistics

These statistics are marked deprecated, leave them alone.
Also keep track of imissed across all ports.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agocxgbe: do not report deprecated statistics
Stephen Hemminger [Fri, 6 Nov 2015 01:04:35 +0000 (17:04 -0800)]
cxgbe: do not report deprecated statistics

Some of the ethernet device statistics are marked deprecated
and should not be reported.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agoi40e: do not report deprecated statistics
Stephen Hemminger [Fri, 6 Nov 2015 01:04:36 +0000 (17:04 -0800)]
i40e: do not report deprecated statistics

The fields in ethernet statistics that are marked deprecated
should not be filled in.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agoe1000: do not report deprecated statistics
Stephen Hemminger [Fri, 6 Nov 2015 01:04:37 +0000 (17:04 -0800)]
e1000: do not report deprecated statistics

These fields are marked deprecated don't use them.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
8 years agoi40e: refactor xstats per queue handling
Harry van Haaren [Fri, 6 Nov 2015 14:12:55 +0000 (14:12 +0000)]
i40e: refactor xstats per queue handling

This patch refactors the queue and priority statistic handling.
Generic queue stats are presented by rte_eth_xstats_get(), and the
i40e_xstats_get() exposes only the extra stats.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
8 years agoixgbe: refactor xstats per queue handling
Harry van Haaren [Fri, 6 Nov 2015 14:12:54 +0000 (14:12 +0000)]
ixgbe: refactor xstats per queue handling

This patch refactors the queue handling. Generic queue stats are
handled by rte_eth_xstats_get() and the ixgbe_xstats_get() exposes
only the extra stats.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
8 years agoethdev: format generic xstats per queue always
Harry van Haaren [Fri, 6 Nov 2015 14:12:53 +0000 (14:12 +0000)]
ethdev: format generic xstats per queue always

This patch refactors the generic queue stats to be exposed
by rte_ethdev_xstats_get().

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
8 years agoeal: support driver loading from directory
Panu Matilainen [Tue, 10 Nov 2015 14:28:15 +0000 (16:28 +0200)]
eal: support driver loading from directory

Add support for directories as arguments to -d for loading all drivers
from a given directory. Additionally a default driver directory can be
set in build-time configuration, in which case it will be always be used
when EAL is initialized.

This simplifies usage in shared library configuration significantly over
manually loading individual drivers with -d, and allows distros to
establish a drop-in driver directory for seamless integration
with 3rd party drivers etc.

Suggested-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Suggested-by: David Marchand <david.marchand@6wind.com>
Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agoeal: move plugin loading from linuxapp to common
Panu Matilainen [Tue, 10 Nov 2015 14:28:14 +0000 (16:28 +0200)]
eal: move plugin loading from linuxapp to common

There's no good reason to limit plugins to Linux, make it available
on FreeBSD too. Refactor the plugin code from Linux EAL to common
helper functions, also check for and fail on errors during initialization.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: David Marchand <david.marchand@6wind.com>
8 years agomaintainers: replace for reorder library
Reshma Pattan [Wed, 21 Oct 2015 10:50:43 +0000 (11:50 +0100)]
maintainers: replace for reorder library

Updated maintainers list for reorder library

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
8 years agoreorder: fix unit test for random starting point
Reshma Pattan [Wed, 21 Oct 2015 10:50:44 +0000 (11:50 +0100)]
reorder: fix unit test for random starting point

The reorder library unit test was performed under the assumption that
the start sequence number was always 0.
This is not the case anymore as the start sequence number is initialized
by the first packet inserted into the reorder buffer.

This patch updates the unit test to reflect the new behavior.

Fixes: 7e1fa1de8a53 ("reorder: allow random number as starting point")

Reported-by: Mukesh Dua <mukesh.dua81@gmail.com>
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
8 years agodoc: add enic Tx improvement in release notes
John Daley [Fri, 6 Nov 2015 23:08:35 +0000 (15:08 -0800)]
doc: add enic Tx improvement in release notes

Signed-off-by: John Daley <johndale@cisco.com>
8 years agomaintainers: add maintainers for enic
John Daley [Thu, 5 Nov 2015 19:14:25 +0000 (11:14 -0800)]
maintainers: add maintainers for enic

Signed-off-by: John Daley <johndale@cisco.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agomaintainers: claim to be reviewer of virtio and vhost
Yuanhan Liu [Thu, 12 Nov 2015 04:10:40 +0000 (12:10 +0800)]
maintainers: claim to be reviewer of virtio and vhost

Firstly, Chuangchun's email address's been invalid for a while.

Secondly, I'd like to take the responsibility to review patches
of virtio/vhost component.

Cc: Huawei Xie <huawei.xie@intel.com>
Cc: Thomas Monjalon <thomas.monjalon@6wind.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
8 years agovhost: reset device properly
Yuanhan Liu [Thu, 12 Nov 2015 04:10:41 +0000 (12:10 +0800)]
vhost: reset device properly

Currently, we reset all fields of a device to zero when reset
happens, which is wrong, since for some fields like device_fh,
ifname, and virt_qp_nb, they should be same and be kept after
reset until the device is removed. And this is what's the new
helper function reset_device() for.

And use rte_zmalloc() instead of rte_malloc, so that we could
avoid init_device(), which basically dose zero reset only so far.
Hence, init_device() is dropped in this patch.

This patch also removes a hack of using the offset a specific
field (which is virtqueue now) inside of `virtio_net' structure
to do reset, which could be broken easily if someone changed the
field order without caution.

Cc: Tetsuya Mukawa <mukawa@igel.co.jp>
Cc: Huawei Xie <huawei.xie@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Rich Lane <rich.lane@bigswitch.com>
8 years agovhost: make destroy callback on reset owner message
Rich Lane [Tue, 10 Nov 2015 02:15:13 +0000 (18:15 -0800)]
vhost: make destroy callback on reset owner message

QEMU sends VHOST_RESET_OWNER first when shutting down.
There was previously no way for the dataplane to know that the
virtio_net instance had become unusable and it would segfault
when trying to do RX/TX.

Signed-off-by: Rich Lane <rich.lane@bigswitch.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
8 years agoi40e: fix VSI allocation for VMDq
Helin Zhang [Thu, 12 Nov 2015 07:09:03 +0000 (15:09 +0800)]
i40e: fix VSI allocation for VMDq

It fixes the issue of trying to allocate more VSIs for VMDq than
hardware remaining. It adds a check of the hardware remaining
before allocating VSIs for VMDq.

Fixes: c80707a0fd9c ("i40e: fix VMDq pool limit")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
8 years agobonding: fix build with icc
Tomasz Kulasek [Thu, 5 Nov 2015 10:55:07 +0000 (11:55 +0100)]
bonding: fix build with icc

ICC complains about enumerated types being mixed in link bonding driver,
as ETH_MQ_RX_RSS is an enum type of mq_mode and not a bitmask as it was
being treated.

Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoixgbe: fix Tx hang when RS distance exceeds HW limit
Konstantin Ananyev [Tue, 10 Nov 2015 13:48:21 +0000 (13:48 +0000)]
ixgbe: fix Tx hang when RS distance exceeds HW limit

One of the ways to reproduce the issue:

testpmd <EAL-OPTIONS> -- -i --txqflags=0
testpmd> set fwd txonly
testpmd> set txpkts 64,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
testpmd> set txsplit rand
testpmd> start

After some time TX on ixgbe queue will hang,
and all packet transmission on that queue will stop.

This bug was first reported and investigated by
Vlad Zolotarov <vladz@cloudius-systems.com>:
"We can reproduce this issue when stressed the xmit path with a lot of highly
fragmented TCP frames (packets with up to 33 fragments with non-headers
fragments as small as 4 bytes) with all offload features enabled."

The root cause is that ixgbe_xmit_pkts() in some cases violates the HW rule
that the distance between TDs with RS bit set should not exceed 40 TDs.

>From the latest 82599 spec update:
"When WTHRESH is set to zero, the software device driver should set the RS bit
in the Tx descriptors with the EOP bit set and at least once in the 40
descriptors."

The fix is to make sure that the distance between TDs with RS bit set
would never exceed HW limit.
As part of that fix, tx_rs_thresh for ixgbe PMD is not allowed to be greater
then to 32 to comply with HW restrictions.

With that fix slight slowdown for the full-featured ixgbe TX path
might be observed (from our testing - up to 4%).

ixgbe simple TX path is unaffected by that patch.

Reported-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoapp/testpmd: add ability to split outgoing packets
Konstantin Ananyev [Tue, 10 Nov 2015 13:48:20 +0000 (13:48 +0000)]
app/testpmd: add ability to split outgoing packets

For CSUM forwarding mode add ability to copy & split outgoing packet
into the new mbuf that consists of multiple segments.
For TXONLY and CSUM forwarding modes add ability to make number of
segments in the outgoing packet to vary on a per packet basis.
Number of segments and size of each segment is controlled by
'set txpkts' command.
Split policy is controlled by 'set txsplit' command.
Possible values are: on | off | rand.
Tha allows to increase test coverage for TX PMD codepaths.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoi40e: fix stats reset
Harry van Haaren [Mon, 9 Nov 2015 10:22:22 +0000 (10:22 +0000)]
i40e: fix stats reset

This patch fixes a bug where only some of the statistics were being
reset when calling rte_eth_stats_reset() or rte_eth_xstats_reset().
As both the stats reset and xstats reset do the same, refactor away
the duplicated function.

This patch marks the VSI to update its offset, causing the stats be
look like they are reset.

Fixes: 9aace75fc82e ("i40e: fix statistics")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
8 years agoi40e: fix memzone freeing
Helin Zhang [Wed, 11 Nov 2015 05:28:34 +0000 (13:28 +0800)]
i40e: fix memzone freeing

This fixes the issue of not freeing memzone in a call to free the
memory for adminq DMA.

Fixes: 4861cde46116 ("i40e: new poll mode driver")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
8 years agoi40e: fix VMDq pool limit
Helin Zhang [Wed, 11 Nov 2015 08:56:45 +0000 (16:56 +0800)]
i40e: fix VMDq pool limit

It fixes the issue of cannot using more than 1 poor for VMDq,
according to the queues left.

Fixes: 705b57f82054 ("i40e: enlarge the number of supported queues")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
8 years agoi40e: fix build with icc 2015
Pablo de Lara [Tue, 10 Nov 2015 10:19:40 +0000 (10:19 +0000)]
i40e: fix build with icc 2015

Fix for the following error on icc 2015, due to incorrect type:
drivers/net/i40e/i40e_fdir.c(1376): error #188:
enumerated type mixed with another type
case RTE_ETH_FDIR_FILTER_INPUT_SET_SELECT:

Fixes: 98f05570 ("i40e: configure input fields for RSS or flow director")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
8 years agoi40e: fix build with icc 13
Helin Zhang [Wed, 11 Nov 2015 06:11:15 +0000 (14:11 +0800)]
i40e: fix build with icc 13

It fixes compile issue on ICC 13.0.0.

Error logs:
i40e_ethdev.c(7943): error #188: enumerated type mixed with another type

Fixes: c8b9a3e3fe1b ("i40e: support DCB mode")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoapp/testpmd: fix build with icc 13
Helin Zhang [Wed, 11 Nov 2015 06:11:16 +0000 (14:11 +0800)]
app/testpmd: fix build with icc 13

It fixes compile issue on ICC 13.0.0.

Error logs:
app/test-pmd/cmdline.c(8160): error #188: enumerated type mixed
with another type
    entry.input.flow.tunnel_flow.tunnel_type =
        str2fdir_tunneltype(res->tunnel_type);

Fixes: 53b2bb9b7ea7 ("app/testpmd: new flow director commands")

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoapp/testpmd: fix icmp echo Tx queues
David Marchand [Thu, 29 Oct 2015 08:47:03 +0000 (09:47 +0100)]
app/testpmd: fix icmp echo Tx queues

icmp echo forward engine relies on the core rank rather than the number of
queues available.
This fix is still wrong, because if we set a nb-rxq > nb-txq, then we will
use an invalid txq, but with this, we are aligned on other fwd engines.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
8 years agoigbvf: fix vlan filtering
Julien Meunier [Tue, 3 Nov 2015 14:25:22 +0000 (15:25 +0100)]
igbvf: fix vlan filtering

Once posted through mailbox, we must check for nack from the PF
and report an error in this case.

Signed-off-by: Julien Meunier <julien.meunier@6wind.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>