The function rte_vlan_insert may allocate a new buffer for the
vlan header and return a different mbuf than originally passed.
In this case, the stored mbuf in txm[] array could point to wrong
buffer.
Fixes: dd856dfcb9e7 ("virtio: use any layout on Tx") Cc: stable@dpdk.org Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Jens Freimann <jfreimann@redhat.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Ying A Wang [Wed, 17 Apr 2019 01:47:52 +0000 (09:47 +0800)]
net/ice: fix promiscuous mode
When device promiscuous mode has already been enabled,
should not return error if user re-enable it.
Fixes: c945e4bf9063 ("net/ice: support promiscuous mode") Cc: stable@dpdk.org Signed-off-by: Ying A Wang <ying.a.wang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
Ying A Wang [Wed, 17 Apr 2019 01:47:51 +0000 (09:47 +0800)]
net/ice: fix variable storage type
Variable "status" should be defined as "enum ice_status"
instead of "uint16_t". This patch fixes the issue.
Fixes: c945e4bf9063 ("net/ice: support promiscuous mode") Cc: stable@dpdk.org Signed-off-by: Ying A Wang <ying.a.wang@intel.com> Acked-by: Qiming Yang <qiming.yang@intel.com>
At port detach routine after calling the rte_dev_remove()
testpmd performs some cleanup, checking the statuses of
remaining ports and closes the appropriate ones. The port
scanning is based on the new sibling iterator which uses the
invalid (already closed) port for reference. This patch
replaces the foreach iterator and uses the device object for
reference. It is worth to note this cleanup is not needed
for some drivers (at least for mlx5 and probably for others)
and is preserved due to possible compatibility issues.
Fixes: 13302cd5bd63 ("app/testpmd: use port sibling iterator in device cleanup") Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Yongseok Koh <yskoh@mellanox.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
Xiao Wang [Mon, 15 Apr 2019 07:56:25 +0000 (15:56 +0800)]
net/ifc: fix used ring update
The vring relay thread is created after HW datapath start and is
canceled before HW datapath stop, so we need to take care of the
ring update when the relay thread is not on duty.
Fixes: 4bb531e152d3 ("net/ifc: support SW assisted VDPA live migration") Cc: stable@dpdk.org Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Xiao Wang [Mon, 15 Apr 2019 07:56:23 +0000 (15:56 +0800)]
net/ifc: do not relay for Tx queue
Relay for Tx queue doesn't provide any benefit, since the packet buffer
in Tx queue is read-only, there's no dirty page logging for Tx buffer.
This change further reduces CPU usage and improves throughput.
Andrew Rybchenko [Fri, 12 Apr 2019 13:12:33 +0000 (14:12 +0100)]
app/testpmd: set fixed flag for exact link speed
Setting exact link speed makes sense if auto-negotiation is
disabled. Fixed flag is required to disable auto-negotiation.
Fixes: 88fbedcd5e5a ("app/testpmd: move speed and duplex parsing in a function") Cc: stable@dpdk.org Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
There is two eth group devices in PAC N3000 card,
each eth group include PHY device and MAC device. Exposing
APIs for DPDK PMD driver to access those devices.
1. Add Altera I2C master device driver
2. Add at24 eeprom driver which is i2c slave device
3. Introducing a new ops for opae_manager: opae_manager_networking_ops.
This ops will include some networking operation by FPGA, like vBNG
operation, MAC ROM operation and so on.
raw/ifpga/base: store private features in FME and port
Get private features attribute like size, id, address after
enumeration, and insert into FEM or Port dedicate list.
when initial the private feature driver, we just compare the
private feature id between the list and feature drivers array
to match the proper drivers.
This patch avoid the hardcore in feature_info array in previous
implementation. and the same time we can use one driver for mulitple
devices which the id is the same.
AFU can be implemented into many different acceleration
devices, these devices need shared data to store private
information when they are handled by users.
Signed-off-by: Rosen Xu <rosen.xu@intel.com> Signed-off-by: Andy Pei <andy.pei@intel.com>
Enable the optic module vendor and part number verification from driver
by setting appropriate flags. Link handling module in conjunction with
FW performs optic module verification.
Without this fix the SFP is powered down and the link doesn't come up,
if module verification is enforced in nvram setting.
The periodic callout function and the interrupt handler both modify the
periodic flags. There is a possible race condition when an application
is going through dev_stop()/dev_start() and an interrupt handler is
invoked. We also need to ensure that periodic polling is not invoked in
interrupt context.
This patch handles such case by using separate variable to check for
interrupt context. Also, atomically load and store the periodic flag
value.
Fixes: 0f6ebeee2402 ("net/bnx2x: fix call to link handling periodic function") Cc: stable@dpdk.org Signed-off-by: Rasesh Mody <rmody@marvell.com>
In some cases, DPDK application may send packets
while PMD is going through load or unload flow.
This causes firmware to access invalid/unallocated
memory to process transmit buffer. Which results in
error on PCI bus and chip further blocks access to host,
causing a DMAE timeout.
Fix this issue by installing dummy empty transmit and receive
handlers at the beginning of unload path (rte_eth_dev_stop())
and install actual transmit and receive handlers after successful
load of the PMD port (rte_eth_dev_start()). This way, application
won't be able to send packets while device is going through
load/unload flow.
There is a race condition while processing RAMROD
completion in fast path queue through interrupt handler
and polling method.
Interrupt handler invoked from actual interrupt event
and from RAMROD processing polling flow may create a
situation where one flow will read and clear a fastpath
interrupt without actually processing the RAMROD completion.
Thus, causing a RAMROD timeout even though HW sent an
completion event.
Fix this by introducing an atomic variable which will be
set only when interrupt handler needs to process RAMROD
completion.
Bruce Richardson [Fri, 19 Apr 2019 12:04:49 +0000 (13:04 +0100)]
devtools: fix meson build test for plain bourne shell
The pipefail option is not supported in /bin/sh, just in bash/ksh and
similar shells - which means it's there by default on most Linux distros
but not on e.g. FreeBSD. Therefore we check for it's presence before
setting the option, and if it's missing, we upgrade verbosity level if
needed to ensure we never hide any build failures.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Luca Boccassi <bluca@debian.org>
app/test/test_compressdev.c:1949:11: note:
previous definition of 'i' was here
app/test/test_compressdev.c:1992:2: error:
'for' loop initial declarations are only allowed in C99 mode
app/test/test_compressdev.c:1992:2: note:
use option -std=c99 or -std=gnu99 to compile your code
app/test/test_compressdev.c:1996:19: warning:
assignment from incompatible pointer type [enabled by default]
Fixes: 355b02eedc65 ("test/compress: add max mbuf size test case") Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com> Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Build error seen with Linux kernel 5.1 and
when CONFIG_RTE_KNI_KMOD_ETHTOOL is enabled.
Build error:
kernel/linux/kni/igb_main.c:2352:18:
error: initialization of ... from incompatible pointer type ...
[-Werror=incompatible-pointer-types]
.ndo_fdb_add = igb_ndo_fdb_add,
^~~~~~~~~~~~~~~
ndo_fdb_add() is changed in Linux kernel version 5.1 and now requires
a new parameter, 'struct netlink_ext_ack *extack':
Linux Commit 87b0984ebfab ("net: Add extack argument to ndo_fdb_add()")
ndo_fdb_add() parameter updated with compile time Linux kernel version
check.
Added crypto_dequeue_burst() function to call
rte_crypto_dequeue_burst() in a loop with a
delay to ensure that all the packets are
dequeued from the crypto device.
Fixes: 59d7353b0df0 ("test/ipsec: fix test suite setup") Cc: stable@dpdk.org Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
The socket_id is used as an array index so should be within the range
of zero to max numa nodes. Add a range check to ensure we don't get
excessive values.
Coverity issue: 336812
Coverity issue: 336829 Fixes: 2c59bd32b70d ("cryptodev: do not create session mempool internally") CC: stable@dpdk.org Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Fan Zhang <roy.fan.zhang@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
crypto/caam_jr: fix memory leak and illegal access
Opendir() returns allocated storage which must be freed at the
end of function or in case any return on error. so freeing the
allocation using closedir in an error case.
Marko Kovacevic [Mon, 15 Apr 2019 15:04:48 +0000 (16:04 +0100)]
examples/fips_validation: fix CMAC test
As a result of the cmac test running the test where
PT len is 65536 it should give a result back to the
user USER1: Error -1: Prepare op USER1: PT len 65536
as this MSG len is not supported. Issue was
that the application was not freeing the op properly after
a while causing the app to fail.
CRYPTODEV: rte_cryptodev_sym_session_create() line 1340:
couldn't get object from session mempool
USER1: Error -12: test block
USER1: Error -12: Failed test CMAC/req/CMAC.req
Fixes: cd255ccf5764 ("examples/fips_validation: support AES parsing") Cc: stable@dpdk.org Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Marko Kovacevic [Mon, 15 Apr 2019 15:04:47 +0000 (16:04 +0100)]
examples/fips_validation: fix HMAC test
Application was failing as the HMAC and
Plain SHA fips request files are similar in a
way that they both have SHA- in the top section to
determine the hash algo and hash sizes. And HMAC having the
algo in the second line but the Plain SHA in the third
meant that when the HMAC files was used once it parsed the third
line Plain SHA was set as the algo and not HMAC.
USER1: Failed to get capability for cdev 0
USER1: Error -22: test block
[L=20 SHAAlg=SHA_2]
USER1: Error -22: Failed test /root/FIPS/HMAC/req/HMAC.req
Fixes: f4797bae0050 ("examples/fips_validation: support plain SHA") Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Current default cache line size for armv8 CPUs having Implementor ID of
0x41 is 128 bytes, changing it to 64 bytes. Also, the max number of lcores
is changed to 16 from 256.
If MLNX_OFED is installed, there's no .pc file installed for libraries and
dependency() can't find libraries by pkg-config. By adding fallback of
using cc.find_library(), libraries are properly located.
Add a function to the timer API that allows a caller to traverse a
specified set of timer lists, stopping each timer in each list,
and invoking a callback function.
Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Currently, the timer library uses a per-process table of structures to
manage skiplists of timers presumably because timers contain arbitrary
function pointers whose value may not resolve properly in other
processes.
However, if the same callback is used handle all timers, and that
callback is only invoked in one process, then it woud be safe to allow
the data structures to be allocated in shared memory, and to allow
secondary processes to modify the timer lists. This would let timers be
used in more multi-process scenarios.
The library's global variables are wrapped with a struct, and an array
of these structures is created in shared memory. The original APIs
are updated to reference the zeroth entry in the array. This maintains
the original behavior for both primary and secondary processes since
the set intersection of their coremasks should be empty [1]. New APIs
are introduced to enable the allocation/deallocation of other entries
in the array.
New variants of the APIs used to start and stop timers are introduced;
they allow a caller to specify which array entry should be used to
locate the timer list to insert into or delete from.
Finally, a new variant of rte_timer_manage() is introduced, which
allows a caller to specify which array entry should be used to locate
the timer lists to process; it can also process multiple timer lists per
invocation.
Within EAL we had a series of if statements for selecting the EAL directory
to use. Now that the directory names match those of the OS's they are for
we can instead just use a generated subdirectory name, shortening the code.
To avoid strange errors, we still need to check for unsupported OS's, but
do this check up-front in the config meson.build file.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: David Marchand <david.marchand@redhat.com> Acked-by: Luca Boccassi <bluca@debian.org>
The arguments being passed will cause failures on laptops that have,
for instance, 2 cores only. Most of the tests don't require more
than a single core. Some require multiple cores (but those tests
should be modified to 'SKIP' when the correct number of cores
aren't available).
The unit test results shouldn't be impacted by this change, but it
allows for a future enhancement to pass flags such as '--no-huge'.
Also include a fix to a reported issue with running on FreeBSD.
Signed-off-by: Aaron Conole <aconole@redhat.com> Reviewed-by: David Marchand <david.marchand@redhat.com> Acked-by: Luca Boccassi <bluca@debian.org> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
David Marchand [Fri, 5 Apr 2019 08:17:47 +0000 (10:17 +0200)]
devtools: accept experimental symbol promotion
Currently, when symbols get promoted from the EXPERIMENTAL section to a
stable ABI section, the script complains they should go to the
EXPERIMENTAL section.
Example:
ERROR: symbol rte_devargs_add is added in the DPDK_19.05 section, but is
expected to be added in the EXPERIMENTAL section of the version map
This is legit.
Moving from a stable ABI to another is also allowed, but must have gone
through the proper process.
Fixes: 4bec48184e33 ("devtools: add checks for ABI symbol addition") Cc: stable@dpdk.org Signed-off-by: David Marchand <david.marchand@redhat.com> Acked-by: Neil Horman <nhorman@tuxdriver.com>
Currently, RTE_* flags are set based on the implementer ID but there might
be some micro arch specific differences from the same vendor
eg. CACHE_LINESIZE. Add support to set micro arch specific flags.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Jerin Jacob [Sat, 13 Apr 2019 20:19:43 +0000 (01:49 +0530)]
mk: introduce helper to check compiler argument
Introduce rte_cc_has_argument() Makefile helper to
check a given argument is support by the compiler.
Example Usage:
include $(RTE_SDK)/mk/rte.helper.mk
MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=octeontx2)
This would allow adding -mcpu=octeontx2 in MACHINE_CFLAGS
if it is only supported by the compiler. The use case for such
scheme is to enable the mcpu optimization if the compiler
supports else it needs to compile the source code without
any errors.
This patch also moves inclusion of toolchain's rte.vars.mk
to before the machine's rte.vars.mk inclusion to make
correct CC available for the cross compile case.
Signed-off-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Joyce Kong [Mon, 15 Apr 2019 09:04:39 +0000 (17:04 +0800)]
test/ticketlock: fix autotest
Add ticketlock_autotest implementation in python.
Fixes: efbcdaa55b93 ("test/ticketlock: add test cases") Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com> Tested-by: Phil Yang <phil.yang@arm.com>