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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Julien Meunier [Fri, 30 Oct 2015 16:13:23 +0000 (17:13 +0100)]
enic: fix vlan filtering
Report an error when something went wrong.
Signed-off-by: Julien Meunier <julien.meunier@6wind.com>
Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Sujith Sankar <ssujith@cisco.com>
Bernard Iremonger [Fri, 6 Nov 2015 17:20:01 +0000 (17:20 +0000)]
ethdev: fix error handling in PCI fields copy
add return statement to if branch
Dereferencing NULL pointer reported by Coverity, CID 119256.
Dereferencing NULL pointer reported by Coverity, CID 119257.
Fixes:
494adb7f63f2 ("ethdev: add device fields from PCI layer")
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Wenzhuo Lu [Fri, 6 Nov 2015 07:49:30 +0000 (15:49 +0800)]
app/testpmd: fix flow director help and doc
After implementing the fdir new modes for x550, the CLIs are modified.
Forgot to update the related help info and doc.
Fixes:
53b2bb9b7ea7 ("app/testpmd: new flow director commands")
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
John McNamara [Fri, 6 Nov 2015 17:28:37 +0000 (17:28 +0000)]
ring: fix memory freeing on error
Fix minor memory free issue in error clean-up.
Reported-by Coverity (CID 119258)
Fixes:
651c505af862 ("ring: enhance device setup from rings")
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Pablo de Lara [Fri, 6 Nov 2015 16:02:54 +0000 (16:02 +0000)]
app/test: increase memory for hash unit tests
Hash_autotest is in test group 2 which had only 32 MB
of memory, which is increased to 64 MB to make it run.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Pablo de Lara [Fri, 6 Nov 2015 15:15:13 +0000 (15:15 +0000)]
app/test: fix unit test for option -n
eal_flags_autotest was broken after commit
19bfa4dd ("eal: make the -n argument optional"),
since the unit test was checking that app would not run
if -n flag was missing, which now it is possible.
Also, subtest test_missing_n_flag() has been renamed
to test_invalid_n_flag(), as now -n flag is not compulsory.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Thomas Monjalon [Wed, 4 Nov 2015 23:48:18 +0000 (00:48 +0100)]
version: 2.2.0-rc1
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Wed, 4 Nov 2015 23:40:39 +0000 (00:40 +0100)]
doc: fix release notes
A fix in hash library was in the drivers section.
Some ABI changes have been done without removing the notices.
Fixes:
62dbd2ffea9a ("ethdev: add more flow director modes")
Fixes:
381316f6a225 ("vhost-user: support protocol features")
Fixes:
5915699153d7 ("hash: fix scaling by reducing contention")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
David Hunt [Fri, 30 Oct 2015 12:14:17 +0000 (12:14 +0000)]
igb_uio: fix build with kernel 4.3
Fix to take this change into account: https://lkml.org/lkml/2015/7/9/101
Has been applied to Kernel 4.3.0-rc6
Linux:
4a7cc831 ("genirq/MSI: Move msi_list from struct pci_dev to struct device")
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Raslsn Darawsheh [Mon, 26 Oct 2015 07:07:57 +0000 (09:07 +0200)]
bonding: fix freeing with no queue
In case of creating bond device without add any slaves and
quit from testpmd, application crashed since rx/tx queues
are NULL.
Add checking of this parameters before trying to free.
Signed-off-by: Raslsn Darawsheh <rdarawsheh@asaltech.com>
Signed-off-by: Yaacov Hazan <yaacovh@mellanox.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
Chas Williams [Mon, 2 Nov 2015 18:32:40 +0000 (13:32 -0500)]
bnx2x: fix probing driver for VF devices
Signed-off-by: Chas Williams <3chas3@gmail.com>
Acked-by: Harish Patil <harish.patil@qlogic.com>
Tiwei Bie [Mon, 19 Oct 2015 13:13:10 +0000 (21:13 +0800)]
eal: do not reset getopt lib
Someone may need to call rte_eal_init() with a fake argc/argv array
in the middle of using getopt() to parse its own unrelated argc/argv
parameters. So getopt lib shouldn't be reset by rte_eal_init().
Now eal will always save optind, optarg and optopt (and optreset on
FreeBSD) at the beginning, initialize optind (and optreset on FreeBSD)
to 1 before calling getopt_long(), then restore all values after.
Suggested-by: Don Provan <dprovan@bivio.net>
Suggested-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Tiwei Bie <btw@mail.ustc.edu.cn>
Reviewed-by: Don Provan <dprovan@bivio.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Tim Shearer [Tue, 27 Oct 2015 21:38:55 +0000 (17:38 -0400)]
ethdev: fix link status race condition
Calling the Ethernet driver's link_update function from
rte_eth_dev_start can result in a race condition if the NIC raises
the link interrupt at the same time.
Depending on the interrupt handler implementation, the race can cause
the it to think that it received two consecutive link up interrupts,
and it exits without calling the user callback. Appears to impact
E1000/IGB and virtio drivers only.
Signed-off-by: Tim Shearer <tim.shearer@overturenetworks.com>
Simon Kagstrom [Tue, 20 Oct 2015 13:20:55 +0000 (15:20 +0200)]
ethdev: clarify rate limit parameter
The tx_rate unit is Mbps.
Gleaned from the ixgbe implementation, the 82599 datasheet and the use
in test-pmd.
Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Andrey Chilikin [Wed, 30 Sep 2015 13:43:03 +0000 (14:43 +0100)]
ixgbe: check for supported flow director behaviors
Handle only supported flow director behaviors.
Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Andrey Chilikin [Wed, 30 Sep 2015 13:43:02 +0000 (14:43 +0100)]
i40e: add flow director passthru
Add support for RTE_ETH_FDIR_PASSTHRU flow director behavior so
output queue is assigned by other filters.
Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
Chao Zhu [Wed, 4 Nov 2015 06:15:26 +0000 (14:15 +0800)]
config: turn off fm10k driver on IBM POWER
The fm10k vector driver is specific for x86 platform which can't compile
on IBM POWER for lacking of tmmintrin.h header file. This patch turns
off fm10k driver compilation on IBM POWER to prevent compile issue.
Signed-off-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Acked-by: Michael Qiu <michael.qiu@intel.com>
Bruce Richardson [Wed, 4 Nov 2015 17:05:57 +0000 (17:05 +0000)]
eal/bsd: fix build
The i40e driver was using a #define value for the max number of rxtx interrupts
supported. This value was defined only for linux, giving an error when compiling
on FreeBSD.
CC i40e_ethdev.o
/usr/home/bruce/dpdk.org/drivers/net/i40e/i40e_ethdev.c:3885:9: fatal error: use of undeclared
identifier 'RTE_MAX_RXTX_INTR_VEC_ID'
Copying the necessary #define into the FreeBSD EAL header fixes the compile
error.
Fixes:
d37641029ada ("eal/linux: add interrupt vectors")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Harry van Haaren [Wed, 4 Nov 2015 16:14:43 +0000 (16:14 +0000)]
ixgbe: fix Rx errors statistics for UDP checksum
This patch removes l3_l4_xsum_errors from rx errors.
The reason to remove it is that UDP packets have an optional checksum, and
when not calculated the checksum field should be set to zero. When the
checksum is not calculated (zero-ed out), the hardware still counts a valid
UDP packet as an l3_l4_xsum_error.
This hardware issue is documented in 82599 errata, titled:
"Integrity Error Reported for IPv4/UDP Packets with Zero Checksum"
The solution is to remove l3_l4_xsum_errors from rx_errors, as discussed on
http://thread.gmane.org/gmane.comp.networking.dpdk.devel/25590/
Fixes:
f6bf669b9900 ("ixgbe: account more Rx errors")
Suggested-by: Martin Weiser <martin.weiser@allegro-packets.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Pablo de Lara [Wed, 16 Sep 2015 21:51:24 +0000 (22:51 +0100)]
ethdev: check queue state before starting or stopping
Following the same approach taken with dev_started field
in rte_eth_dev_data structure, this patch adds two new fields
in it, rx_queue_state and tx_queue_state arrays, which track
which queues have been started and which not.
This is important to avoid trying to start/stop twice a queue,
which will result in undefined behaviour
(which may cause RX/TX disruption).
Mind that only the PMDs which have queue_start/stop functions
have been changed to update this field, as the functions will
check the queue state before switching it.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Jingjing Wu [Wed, 4 Nov 2015 15:01:25 +0000 (23:01 +0800)]
i40e: fix interrupt disabling when stopping
When stop device, should disable interrupt of FDIR but not
enable it. This patch corrected it.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:40 +0000 (16:45 +0800)]
i40evf: support Rx interrupt
The patch enables rx interrupt support on i40e VF and some necessary
change on PF IOV mode to support VF.
On PF side, running in IOV mode via uio won't allow rx interrupt
which is exclusive with mbox interrupt in single vector competition.
On VF side, one single vector is shared for all the rx queues.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:39 +0000 (16:45 +0800)]
i40e: support Rx interrupt
The patch enables rx interrupt support on i40e PF non-IOV mode.
Per queue rx interrupt works on vfio, however on uio, all rx queues
share one interrupt vector.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:37 +0000 (16:45 +0800)]
ixgbevf: cleanup unnecessary interrupt handler
As ixgbe vf doesn't support lsc, the patch removes those unused code.
In addition, it does some tiny cleanup.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:36 +0000 (16:45 +0800)]
ixgbe: remove useless interrupt freeing when closing
The intr_vec is free in dev_stop. It's not necessary to check in dev_close.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:35 +0000 (16:45 +0800)]
ixgbe: fix VF start with PF stopped
When ixgbe runs as a PF, mbox interrupt is prerequisite to make VF
start normally.
And PF sometimes won't 'dev_start', so the mbox interrupt register
during 'dev_init' is required.
The patch rolls back the interrupt register for mbox,lsc to the 'dev_init'.
As UIO doesn't support multiple vector, mbox has to occupy the only one.
It adds condition check on 'dev_start', rxq interrupt is not allowed
when PF running in IOV mode via UIO.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:38 +0000 (16:45 +0800)]
igb: fix VF start with PF stopped
When igb runs as a PF, mbox interrupt is prerequisite to make VF
start normally.
And PF sometimes won't 'dev_start', so the mbox interrupt register
during 'dev_init' is required.
The patch rolls back the interrupt register for mbox,lsc to the 'dev_init'.
As UIO doesn't support multiple vector, mbox has to occupy the only one.
It adds condition check on 'dev_start', rxq interrupt is not allowed
when PF running in IOV mode via UIO.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:34 +0000 (16:45 +0800)]
eal: query multi-vector interrupt capability
VFIO allows multiple MSI-X vector, others doesn't, but maybe will
allow it in the future.
Device drivers need to be aware of the capability.
It's better to avoid condition check on interrupt type (VFIO) everywhere,
instead a capability api is more flexible for the condition change.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:32 +0000 (16:45 +0800)]
ixgbe: avoid enabling interrupt with zero vector
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:33 +0000 (16:45 +0800)]
igb: avoid enabling interrupt with zero vector
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:31 +0000 (16:45 +0800)]
eal/linux: forbid enabling zero interrupt vector
The patch adds condition check to avoid enable nothing.
In disable state, both max_intr and nb_efd are zero.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:29 +0000 (16:45 +0800)]
ixgbe: reserve VFIO vector zero for misc interrupt
According to the VFIO interrupt mapping, the interrupt vector id
for rxq starts from RX_VEC_START.
It doesn't impact the UIO cases.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:30 +0000 (16:45 +0800)]
igb: reserve VFIO vector zero for misc interrupt
According to the VFIO interrupt mapping, the interrupt vector id
for rxq starts from RX_VEC_START.
It doesn't impact the UIO cases.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Cunming Liang [Wed, 4 Nov 2015 08:45:28 +0000 (16:45 +0800)]
eal: reserve VFIO vector zero for misc interrupt
During VFIO_DEVICE_SET_IRQS, the previous order is
{Q0_fd, ... Qn_fd, misc_fd}.
The vector number of misc is indeterminable which is
ugly to some NIC (e.g. i40e, fm10k).
The patch adjusts the order in {misc_fd, Q0_fd, ... Qn_fd},
always reserve the first vector to misc interrupt.
Signed-off-by: Cunming Liang <cunming.liang@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Jingjing Wu [Wed, 4 Nov 2015 03:29:11 +0000 (11:29 +0800)]
app/testpmd: extend commands for flow director in VF
This patch extends commands to support filtering in VFs of flow director.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Jingjing Wu [Wed, 4 Nov 2015 03:29:10 +0000 (11:29 +0800)]
i40e: extend flow director to support VF
This patch extends flow director to filtering in VFs.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Jingjing Wu [Wed, 4 Nov 2015 03:29:09 +0000 (11:29 +0800)]
ethdev: extend flow director to support VF
This patch extends struct rte_eth_fdir_flow_ext to support flow
director in VFs.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Xutao Sun [Wed, 4 Nov 2015 09:20:48 +0000 (17:20 +0800)]
i40e: fix statistics
The old statistics on i40e only counted the packets on ports.
So the discarding packets on VSI were not counted.
This patch is to make statistics for packets both on ports and VSI.
Also update release notes.
Signed-off-by: Xutao Sun <xutao.sun@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>