Adrien Mazarguil [Mon, 23 Nov 2015 14:44:44 +0000 (15:44 +0100)]
mlx5: fix memory registration for indirect mbuf data
Indirect mbuf data may come from a different mempool which must be
registered separately as another memory region, otherwise such mbufs cannot
be sent.
Fixes: 2e22920b85d9 ("mlx5: support non-scattered Tx and Rx") Signed-off-by: Jesper Wramberg <jesper.wramberg@gmail.com> Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Adrien Mazarguil [Mon, 23 Nov 2015 14:44:37 +0000 (15:44 +0100)]
mlx4: fix memory registration for indirect mbuf data
Indirect mbuf data may come from a different mempool which must be
registered separately as another memory region, otherwise such mbufs cannot
be sent.
Rahul Lakkireddy [Fri, 20 Nov 2015 13:13:38 +0000 (18:43 +0530)]
cxgbe: use trylock in Tx callback instead of spinning for a lock
CXGBE PMD depends on an alarm to periodically transmit any pending
coalesced packets and hence spins for a lock for each tx queue in the
alarm callback.
A better solution is to try to get a lock whenever possible, instead
of spinning for it.
Rahul Lakkireddy [Fri, 20 Nov 2015 13:13:37 +0000 (18:43 +0530)]
cxgbe: fix minimum descriptors requirement
Most dpdk examples and apps seem to initialize with a minimum of 128 rx
descriptors and 512 tx descriptors for queue setup. However, CXGBE PMD
enforces a minimum of 1024 descriptors. This causes the dpdk stack
to return -EINVAL because the apps do not request the minimum required.
The fix is to relax this enforcing in CXGBE PMD. A minimum of 128
descriptors seems to be a good number with the least impact on the
performance.
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.
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>
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>
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.
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.
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.
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>
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>
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>
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>
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>
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>
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.
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>
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.
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>
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.
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>
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>
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>
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>
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>
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>
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.
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: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>
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>
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>
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: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>