dpdk.git
7 years agodoc: add notes on service cores API updates
Harry van Haaren [Mon, 21 Aug 2017 12:58:16 +0000 (13:58 +0100)]
doc: add notes on service cores API updates

Add a section on the service cores API changes to 17.11 release notes.

Suggested-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: clarify documentation for register
Harry van Haaren [Mon, 21 Aug 2017 12:58:15 +0000 (13:58 +0100)]
service: clarify documentation for register

This commit adds a section to the service register function
to make it clear that registering a service, must not configure
service-cores (eg: adding lcores or changing mappings).

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: add component runstate
Harry van Haaren [Mon, 21 Aug 2017 12:58:14 +0000 (13:58 +0100)]
service: add component runstate

This commit adds a new flag that the component (or "backend")
can use to indicate readyness. The service function callback
will not be called until the component sets itself as ready.

The use-case behind adding this feature is eg: a service that
requires configuration before it can start. Any service that
emulates an ethdev will have rte_eth_dev_configure() called,
and only after that the service will know how many queues/etc
to allocate. Once that configuration is complete, the service
marks itself as ready using rte_service_component_runstate_set().

This feature request results from prototyping services, and
requiring a flag in each service to note "internal" readyness.
Instead that logic is now lifted to the service library.

The unit tests have been updated to test the component runstate.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: reset core call stats on dump
Harry van Haaren [Mon, 21 Aug 2017 12:58:13 +0000 (13:58 +0100)]
service: reset core call stats on dump

This aligns with the service stats, which are currently
also reset on read. A generic statistics API would be
helpful for the service library in future.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix lcore in wait state in lcore add
Harry van Haaren [Mon, 21 Aug 2017 12:58:12 +0000 (13:58 +0100)]
service: fix lcore in wait state in lcore add

This commit ensures that after an lcore is added, that
it is in the WAIT state. Previously, adding an lcore did
not ensure that the core was ready for being relaunch, which
would cause errors during lcore_start(). Now that the lcore is
ensured to be in WAIT state by the lcore_add() function, this
is no longer an issue.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix return values of functions to 0 or 1
Harry van Haaren [Mon, 21 Aug 2017 12:58:11 +0000 (13:58 +0100)]
service: fix return values of functions to 0 or 1

Previously to this commit, the return value of the following
functions was the mask value, instead of a neat 0 or 1.

This commit fixes this using the "!!" trick, to force the
number to 1 instead of the bitmask value itself, bringing
the return value in line with the function documentation.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix loops to always scan all services
Harry van Haaren [Mon, 21 Aug 2017 12:58:10 +0000 (13:58 +0100)]
service: fix loops to always scan all services

Services can be registered and unregistered, and "holes" can
appear in the contiguous array of services if a service is
unregistered. As a result, we must never iterate to the
number of services (as counted by rte_service_count), instead
scanning the service array and checking if the service is valid.

After this commit, the rte_service_count variable is only used
for its intended purpose; tracking the number of services that
are present.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix and refactor atomic service accesses
Harry van Haaren [Mon, 21 Aug 2017 12:58:09 +0000 (13:58 +0100)]
service: fix and refactor atomic service accesses

This commit fixes an issue in the service runner function,
where the atomic value was not cleared on exiting the service
function. This resulted in future attempts to run the service
to appear like the function was running, however it was in
reality deadlocked.

This commit refactors the atomic handling to be more readable,
by splitting the implementation code into a new static inline
function. The remaining flow control of atomics in the existing
function is refactored for readability.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in get by name function
Harry van Haaren [Mon, 21 Aug 2017 12:58:08 +0000 (13:58 +0100)]
service: use id in get by name function

This commit reworks the service_get_by_name() function to
accept an integer, and removes the service_get_by_id() function.

All functions now accept an integer argument representing the
service, so it is no longer required to expose the service_spec
pointers to the application.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in unregister
Harry van Haaren [Mon, 21 Aug 2017 12:58:07 +0000 (13:58 +0100)]
service: use id in unregister

This commit reworks the unregister API to accept an integer.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in service stats functions
Harry van Haaren [Mon, 21 Aug 2017 12:58:06 +0000 (13:58 +0100)]
service: use id in service stats functions

This commit reworks the statistics functions to use integer ids
for services instead of pointers. Passing UINT32_MAX to the dump
function prints all info, similar to passing NULL previously.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in runstate function
Harry van Haaren [Mon, 21 Aug 2017 12:58:05 +0000 (13:58 +0100)]
service: use id in runstate function

This commit reworks the API to move from two separate start
and stop functions, to a "runstate" API which allows setting
the runstate. The is_running API is replaced with an function
to query the runstate. The runstate functions take a id value
for service. Unit tests and the eventdev sw pmd are updated.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: return integer service id from register
Harry van Haaren [Mon, 21 Aug 2017 12:58:04 +0000 (13:58 +0100)]
service: return integer service id from register

This commit reworks the service register function to accept
an extra parameter. The parameter is a uint32_t *, which when
provided will be set to the integer service_id that the newly
registered service is represented by.

This is useful for services that wish to validate settings at
a later point in time - they need to know their own service id.

This commit updates the eventdev sw pmd, as well as unit tests
to use the new register API.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in lcore to service map functions
Harry van Haaren [Mon, 21 Aug 2017 12:58:03 +0000 (13:58 +0100)]
service: use id in lcore to service map functions

This commit updates the APIs exposed to map service cores and
services. The previous APIs required a pointer to a service,
and used two separate functions for enable and disable. The
new API uses an integer ID for the service and has a parameter
for map or unmap. Unit tests are updated and passing, and the
map file is updated to the new function names.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in probe and get name
Harry van Haaren [Mon, 21 Aug 2017 12:58:02 +0000 (13:58 +0100)]
service: use id in probe and get name

This commit adds a macro to easily validate a service ID, and then
lookup the service pointer, or return a user-specified error code.
This macro will be heavily used in the following patches as it will
be ID based instead of pointer-based.

The probe_capability function is reworked to use an integer ID instead
of a pointer. Rework the service_get_name() function is updated to use
IDs. Unit tests are updated to keep things compiling after each commit.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: add count per lcore
Pavan Nikhilesh [Tue, 29 Aug 2017 12:32:51 +0000 (18:02 +0530)]
service: add count per lcore

This new API returns the number of services that are running on a specific
service core. It allows an application to decide which service core to run
a new service on.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agobuildtools: zero elf info variable in pmdinfogen
Harry van Haaren [Tue, 5 Sep 2017 13:27:58 +0000 (14:27 +0100)]
buildtools: zero elf info variable in pmdinfogen

This commit zeros out the elf_info struct at startup of the
pmdinfogen code. If it is not zeroed, later in the code gcc
produces "may be unused" prints. Clang does not report any
issue.

This issue is only observed when compiling pmdinfogen as an
optimized build, hence this warning is not disabled in the
existing Makefile.

This commit enables a simplification in the meson build
system, removing the requirement for "-Wno-maybe-uninitialized".

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agoapp/testpmd: add port reset command
Wei Dai [Sun, 23 Jul 2017 09:15:12 +0000 (17:15 +0800)]
app/testpmd: add port reset command

When PF is reset, a message will show it and all its
VF need to be reset.
User can run the command "port reset port_id"
to reset the VF port and to keep same port id without
any configuration. Then user can run "port stop port_id"
and "port start port_id" to reconfigure its forwarding
mode and parameters as previous ones.
To avoid crash, current forwarding should be stopped
before running "port reset port_id".

Signed-off-by: Wei Dai <wei.dai@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: support NIC reset
Wei Dai [Sun, 23 Jul 2017 09:15:11 +0000 (17:15 +0800)]
net/i40e: support NIC reset

Reset a NIC by calling dev_uninit() and then dev_init().
Go through the same way in NIC PCI remove without release
of ethdev resource and then NIC PCI probe function without
ethdev resource allocation.

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/ixgbe: support NIC reset
Wei Dai [Sun, 23 Jul 2017 09:15:10 +0000 (17:15 +0800)]
net/ixgbe: support NIC reset

Reset a NIC by calling dev_uninit and then dev_init.
Go through same way in NIC PCI remove without release of
ethdev resource and then NIC PCI probe function without
ethdev resource allocation.

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agoethdev: add NIC reset operation
Wei Dai [Sun, 23 Jul 2017 09:15:09 +0000 (17:15 +0800)]
ethdev: add NIC reset operation

This patch adds a new eth_dev layer API function rte_eth_dev_reset(),
which a DPDK application can call to reset a NIC and keep its port id
afterwards. It means that all software resources allocated in the ethdev
layer are kept, and software & hardware resources of the NIC within the
NIC's PMD are reset to a state simular to that obtained by calling the
PCI dev_uninit() and then dev_init(). This effective sequence of
dev_uninit() and dev_init() is packed into a single API function
rte_eth_dev_reset().

Please see the comments before the declaration of rte_eht_dev_reset()
in lib/librte_ether/rte_ethdev.h to get more details on why this
function is needed, what it does, when it should be called
and what an application should do after calling this function.
See also detailed explanations in the programmer's guide.

Signed-off-by: Wei Dai <wei.dai@intel.com>
Reviewed-by: Remy Horton <remy.horton@intel.com>
7 years agocrypto/qat: remove dependency on ether library
Bruce Richardson [Thu, 31 Aug 2017 13:42:44 +0000 (14:42 +0100)]
crypto/qat: remove dependency on ether library

The QAT crypto driver does not need to depend on the ether library, so
remove the unnecessary header inclusion.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoethdev: rename map file to match library name
Bruce Richardson [Thu, 31 Aug 2017 13:42:43 +0000 (14:42 +0100)]
ethdev: rename map file to match library name

While almost all libraries have the library name match the directory name,
some libraries and drivers do not. For those that don't, some have the
version filename use the libname, e.g. null_crypto, others have it use the
directory name, e.g. ether. Using the library name seems the better
standard to follow, so rename rte_ether_version.map to
rte_ethdev_version.map.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/ring: rename map file to standardized name
Bruce Richardson [Thu, 31 Aug 2017 13:42:42 +0000 (14:42 +0100)]
net/ring: rename map file to standardized name

The filenames of the linker map files for DPDK PMDs, all follow a
standard format: rte_pmd_<libname>_version.map. The ring version, however,
had eth instead of pmd in the name, so was non-standard. By changing
this, we no longer need the build system to explicitly be given the name of
the mapfile, as it can determine it from the directory name.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoip_frag: rename map file to standardized name
Bruce Richardson [Thu, 31 Aug 2017 13:42:41 +0000 (14:42 +0100)]
ip_frag: rename map file to standardized name

The filenames of the linker map files for DPDK libraries, all follow a
standard format: rte_<libname>_version.map. The ip_frag version, however,
was missing an underscore in the name, so was non-standard. By changing
this, we no longer need the build system to explicitly be given the name of
the mapfile, as it can determine it from the directory/library name.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agogro: fix typo in map file
Jiayu Hu [Tue, 22 Aug 2017 13:58:49 +0000 (21:58 +0800)]
gro: fix typo in map file

The names of rte_gro_ctx_create() and rte_gro_ctx_destroy() in
rte_gro_version.map are incorrect. This patch is to fix this issue.

Fixes: e996506a1c07 ("lib/gro: add Generic Receive Offload API framework")
Cc: stable@dpdk.org
Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoversion: 17.11-rc0
Thomas Monjalon [Thu, 10 Aug 2017 08:14:46 +0000 (10:14 +0200)]
version: 17.11-rc0

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: add template release notes for 17.11
John McNamara [Wed, 9 Aug 2017 08:22:13 +0000 (09:22 +0100)]
doc: add template release notes for 17.11

Add template release notes for DPDK 17.11 with inline
comments and explanations of the various sections.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
7 years agoversion: 17.08.0
Thomas Monjalon [Tue, 8 Aug 2017 10:37:34 +0000 (12:37 +0200)]
version: 17.08.0

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agoeventdev: bump library version
Jerin Jacob [Tue, 8 Aug 2017 14:48:27 +0000 (20:18 +0530)]
eventdev: bump library version

Bumping the library version to reflect the ABI change, where
rte_event_pmd_pci_probe(), rte_event_pmd_pci_remove(),
rte_event_pmd_vdev_init(), rte_event_pmd_vdev_uninit()
functions removed from the library.

Fixes: b1b3d9f90502 ("eventdev: make vdev init and uninit functions optional")
Fixes: 9a8269d56942 ("eventdev: make PCI probe and remove functions optional")

Reported-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agodoc: add eventdev lib in 17.05 release notes
Jerin Jacob [Tue, 8 Aug 2017 14:48:26 +0000 (20:18 +0530)]
doc: add eventdev lib in 17.05 release notes

librte_eventdev.so.1 was introduced in v17.05, and it missed to
update in release_17_05 release notes.

Fixes: 222555480a7f9 ("version: 17.05.0")
Cc: stable@dpdk.org
Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoeal: bump ABI version
Gaetan Rivet [Tue, 8 Aug 2017 14:26:00 +0000 (16:26 +0200)]
eal: bump ABI version

1. PCI domain field in PCI address structure grew from 16 to 32 bits.

   commit: 463ced957c3f ("pci: increase domain storage to 32 bits")

2. rte_bus structure gaining new ops.

   commit: 3a8f0bc68a90 ("bus: add method to find device")
   commit: 7c8810f43f6e ("bus: introduce device plug/unplug")
   commit: 609eb7dde6d0 ("bus: introduce parsing functionality")
   commit: 98eb4b845c1a ("bus: introduce scan policies")

3. rte_devargs structure having been mostly rewritten.

   commit: f3a1188cee4a ("devargs: make device representation generic")
   commit: 47828c5f3bc3 ("devargs: parse bus info")
   commit: 39f403e0d5bb ("devargs: restore device type API")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agodoc: announce API change for meter library
Cristian Dumitrescu [Fri, 4 Aug 2017 13:19:40 +0000 (14:19 +0100)]
doc: announce API change for meter library

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
7 years agodoc: announce API change in crypto driver allocation
Pablo de Lara [Thu, 3 Aug 2017 01:02:36 +0000 (02:02 +0100)]
doc: announce API change in crypto driver allocation

rte_cryptodev_allocate_driver() function gets one parameter
(rte_driver), as the cryptodev_driver structure is
allocated inside the function with rte_malloc.

This function is called from a constructor function,
when crypto PMDs are registered.
If malloc fails, there is no way to recover from it,
so it is better to allocate this structure
statically, in each PMD.

Therefore, it is required to add an extra parameter in
this function, to also get a pointer to this structure.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
7 years agodoc: announce crypto vdev init removal
Pablo de Lara [Thu, 3 Aug 2017 02:12:21 +0000 (03:12 +0100)]
doc: announce crypto vdev init removal

In order to remove all dependencies on vdev for cryptodev,
the implementation of rte_cryptodev_vdev_pmd_init() function
needs to be moved to rte_cryptodev_vdev.h, and all crypto
vdevs will include it, and therefore, this function will
be removed as a public API.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
7 years agodoc: announce ABI change for cryptodev/ethdev offloads
Akhil Goyal [Thu, 3 Aug 2017 15:32:11 +0000 (21:02 +0530)]
doc: announce ABI change for cryptodev/ethdev offloads

Support for security operations is planned to be added
in ethdev and cryptodev for the 17.11 release.

For this following changes are required.
- rte_cryptodev and rte_eth_dev structures need to be added
new parameter rte_security_ops which extend support for
security ops to the corresponding driver.
- rte_cryptodev_info and rte_ethd_dev_info need to be added
with rte_security_capabilities to identify the capabilities of
the corresponding driver.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Boris Pismenny <borisp@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agoethdev: announce ethdev name size increase
Stephen Hemminger [Thu, 6 Jul 2017 15:07:51 +0000 (08:07 -0700)]
ethdev: announce ethdev name size increase

VMBUS support will use GUID in eth_dev_data name field which requires
at least 37 characters. Plan for increase in size now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: announce ethdev port id range increase
Zhiyong Yang [Mon, 7 Aug 2017 12:42:30 +0000 (20:42 +0800)]
doc: announce ethdev port id range increase

This is an API/ABI change notice for DPDK 17.11 announcing the redefinition
of port_id. port_id is currently defined as uint8_t, which is limited to
the range 0 to 255. A larger range is required for vdev scalability.

It is necessary for a redefinition of port_id to extend it from 1 bytes to
2 bytes. All ethdev APIs and usages related to port_id will be changed at
the same time.

Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agodoc: announce ethdev API change for detach flag
Gaetan Rivet [Mon, 31 Jul 2017 09:40:43 +0000 (11:40 +0200)]
doc: announce ethdev API change for detach flag

The flag RTE_ETH_DEV_DETACHABLE will disappear.

This flag is not needed anymore following the hotplug work done for
v17.08. It can be removed, its function is now implicitly made available
by the relevant EAL and rte_bus implementations.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: announce API changes for mempool
Santosh Shukla [Thu, 20 Jul 2017 10:29:15 +0000 (15:59 +0530)]
doc: announce API changes for mempool

An API/ABI change is planned for 17.11 to change following

* Remove unused flag param from rte_mempool_generic_get and _put.
* Change data type for mempool 'flag' from int to unsigned int.
  Refer [1].
* Add struct rte_mempool * param into func rte_mempool_xmem_size,
  rte_mempool_xmem_usage to make it mempool aware.
  Refer [2].

[1] http://dpdk.org/dev/patchwork/patch/25603/
[2] http://dpdk.org/dev/patchwork/patch/25605/

Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agodoc: announce change to make DPDK IOVA aware
Jerin Jacob [Tue, 11 Jul 2017 10:01:41 +0000 (15:31 +0530)]
doc: announce change to make DPDK IOVA aware

When we run DPDK on guest or VFIO mode on host,
the dpdk library or device will not be directly accessing
the physical address. Instead, the device does go through
an IO address translation memory management unit. On x86,
we call it as IOMMU and on ARM as SMMU.

More details:
http://osidays.com/osidays/wp-content/uploads/2014/12/Final_OSI2014_IOMMU_DetailedView_Sanil_Anurup.pdf

Based on discussion in the following thread
http://dpdk.org/ml/archives/dev/2017-July/070850.html

We would like to change reference to physical address to more
appropriate name as with IOMMU/SMMU with
the device won't be dealing directly with the physical address.

An ABI change is planned for 17.11 to change following
data structure or functions to more appropriate name.
Currently planned to change it iova as instead of phys

Please note: The change will be only for the name and
functional aspects of the API will remain same.

Following functions/data structures name may change.
This list is based on v17.05-rc1. It may change based on v17.11 code base.

typedef:
phys_addr_t

structures:

struct rte_memseg::phys_addr
struct rte_mbuf::buf_physaddr

functions:
rte_mempool_populate_phys()
rte_mempool_populate_phys_tab()
rte_eal_using_phys_addrs()
rte_mem_virt2phy()
rte_dump_physmem_layout()
rte_eal_get_physmem_layout()
rte_eal_get_physmem_size()
rte_malloc_virt2phy()
rte_mem_phy2mch()

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: deprecate Xen support
Jianfeng Tan [Thu, 3 Aug 2017 20:38:10 +0000 (20:38 +0000)]
doc: deprecate Xen support

Following the calls on the mailing list:
http://dpdk.org/ml/archives/dev/2017-June/068151.html
The Technical Board decided to drop Xen dom0 support from EAL:
http://dpdk.org/ml/archives/dev/2017-June/068615.html

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agodoc: update devargs changes planned in 17.11
Gaetan Rivet [Fri, 4 Aug 2017 13:29:00 +0000 (15:29 +0200)]
doc: update devargs changes planned in 17.11

Suggested-by: Jan Blunck <jblunck@infradead.org>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: remove bus rework notices
Thomas Monjalon [Mon, 7 Aug 2017 23:39:47 +0000 (01:39 +0200)]
doc: remove bus rework notices

The vdev subsystem is a driver,
and the struct rte_pci_driver is not used anymore
in generic driver interfaces.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: postpone VLAN flags rework
Thomas Monjalon [Mon, 7 Aug 2017 23:31:54 +0000 (01:31 +0200)]
doc: postpone VLAN flags rework

The rework of VLAN flags in mbuf was not completed in 17.08.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: postpone legacy log functions removal
Thomas Monjalon [Thu, 3 Aug 2017 14:29:34 +0000 (16:29 +0200)]
doc: postpone legacy log functions removal

The replacement function rte_log_get_level() has just been implemented
in 17.08. Better to postpone the removal of legacy functions to 17.11.

Fixes: 4f0981e6ec6c ("eal: deprecate log functions")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoapp/crypto-perf: fix operation free
Pablo de Lara [Mon, 7 Aug 2017 03:16:54 +0000 (04:16 +0100)]
app/crypto-perf: fix operation free

In crypto latency test, when some crypto operations cannot be
enqueued, they are returned to its mempool.
However, instead of freeing the operations in the array passed
to the enqueue function, the app was freeing the operations
in the array passed to the dequeue function, leading to incorrect
results.

Fixes: 15b55dd75120 ("app/crypto-perf: return crypto ops to mempool in bulk")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agodoc: update release notes for 17.08
John McNamara [Fri, 4 Aug 2017 14:20:12 +0000 (15:20 +0100)]
doc: update release notes for 17.08

Fix grammar, spelling and formatting of DPDK 17.08 release notes.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: include fail-safe PMD in release notes
Gaetan Rivet [Fri, 4 Aug 2017 15:33:04 +0000 (17:33 +0200)]
doc: include fail-safe PMD in release notes

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: add GRO guide
Jiayu Hu [Fri, 4 Aug 2017 09:59:16 +0000 (17:59 +0800)]
doc: add GRO guide

Add prog_guide doc to explain the design of the GRO library.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: list NPAR as supported feature in qede
Shahed Shaikh [Mon, 24 Jul 2017 10:19:06 +0000 (03:19 -0700)]
doc: list NPAR as supported feature in qede

Existing qede PMD code already supports NPAR feature.
So adding this in "Supported Features" section after testing it with
latest DPDK.

Also, add myself to the list of maintainers of qede PMD

Signed-off-by: Shahed Shaikh <shahed.shaikh@cavium.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agomem: minor fix spelling and format
Keith Wiles [Fri, 7 Jul 2017 00:36:35 +0000 (19:36 -0500)]
mem: minor fix spelling and format

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
7 years agodoc: update FAQ with new testpmd default burst size
Bruce Richardson [Fri, 4 Aug 2017 12:44:11 +0000 (13:44 +0100)]
doc: update FAQ with new testpmd default burst size

Fixes: 836853d3d4cf ("app/testpmd: increase default burst size to 32")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: remove unneeded TLB from FAQ question 2
Bruce Richardson [Fri, 4 Aug 2017 12:44:10 +0000 (13:44 +0100)]
doc: remove unneeded TLB from FAQ question 2

Hugepages are just that, hugepages. The TLB is a sort of cache for doing
address translation and does not need to be referenced in the title, since
"TLB hugepages" doesn't make any sense (as there are no non-TLB hugepages
that you can allocate).

Fixes: 6e718ae062d0 ("doc: release notes 1.7")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: clarify restrictions to run as non-root
Bruce Richardson [Fri, 4 Aug 2017 12:44:09 +0000 (13:44 +0100)]
doc: clarify restrictions to run as non-root

Since modern kernels don't allow unprivileged processes to read the
pagemaps file, the instructions on running as non-root are out-of-date. Add
a note clarifying that they will only work with earlier kernel versions.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: fix typo in KNI guide
Jerin Jacob [Fri, 4 Aug 2017 03:27:06 +0000 (08:57 +0530)]
doc: fix typo in KNI guide

Fixes: fc1f2750a3ec ("doc: programmers guide")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: document NIC features
Ferruh Yigit [Fri, 4 Aug 2017 13:06:13 +0000 (14:06 +0100)]
doc: document NIC features

Document NIC features, add more information about them and add more
implementation related support.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
7 years agodoc: add tags and cscope make targets to quick help
Gabriel Carrillo [Fri, 7 Jul 2017 17:09:59 +0000 (12:09 -0500)]
doc: add tags and cscope make targets to quick help

Update the "make help" output to reflect the additions
of make targets for tags database generation.

Fixes: aafaea3d3b70 ("devtools: add tags and cscope index generation")

Signed-off-by: Gabriel Carrillo <erik.g.carrillo@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agomaintainers: volunteer to take power management
David Hunt [Fri, 4 Aug 2017 14:07:34 +0000 (15:07 +0100)]
maintainers: volunteer to take power management

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agomk: add sensible default target with defconfig
David Hunt [Fri, 4 Aug 2017 10:39:02 +0000 (11:39 +0100)]
mk: add sensible default target with defconfig

Users can now use 'make defconfig' to generate a configuration using
the most appropriate defaults for the current machine.

<arch-machine-execenv-toolchain>
  arch taken from uname -m
  machine defaults to native
  execenv is taken from uname, Linux=linuxapp, otherwise bsdapp
  toolchain is taken from $CC -v to see which compiler to use

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Tested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agoexamples/eventdev: fix run forever with -n option
Harry van Haaren [Fri, 4 Aug 2017 15:49:10 +0000 (16:49 +0100)]
examples/eventdev: fix run forever with -n option

During the refactoring of the sample app to be more generic, the
option to set -n0 and process a huge number of packets was lost.
This commit re-adds -n0, and will process INT64_MAX number of packets.

Fixes: adb5d5486c39 ("examples/eventdev_pipeline_sw_pmd: add sample app")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agoexamples/l3fwd: fix IPv6 packet type parse
Qi Zhang [Fri, 4 Aug 2017 07:52:06 +0000 (15:52 +0800)]
examples/l3fwd: fix IPv6 packet type parse

Fix a typo that cause IPv6 packet type not be parsed.

Fixes: 71a7e2424e07 ("examples/l3fwd: fix using packet type blindly")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agonet/i40e: revert fix of PF notify when VF not up
Xiaoyun Li [Fri, 4 Aug 2017 15:50:06 +0000 (23:50 +0800)]
net/i40e: revert fix of PF notify when VF not up

This reverts commit 035a8cf88f010c82de3040c895c801ce0849b065.
Don't send messages to inactive VF will cause DPDK PF failing
to send messages to kernel VF.
With this revert, this issue will be solved.

Fixes: 035a8cf88f01 ("net/i40e: fix PF notify when VF is not up")
Cc: stable@dpdk.org
Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/ixgbe: fix mask flag on flow rule creation
Qi Zhang [Wed, 2 Aug 2017 21:38:09 +0000 (05:38 +0800)]
net/ixgbe: fix mask flag on flow rule creation

After fail to create a flow and if this is the first flow, the
mask_added flag should be reset, or it will prevent a new flow
which require different mask be created, since the mask config
remains impact.

Fixes: 72c135a89f8 ("net/ixgbe: create consistent filter")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agogro: fix missing includes
Thomas Monjalon [Fri, 4 Aug 2017 09:55:41 +0000 (11:55 +0200)]
gro: fix missing includes

The GRO header file depends on stdint and mbuf.

Spotted with devtools/check-includes.sh

Fixes: e996506a1c07 ("lib/gro: add Generic Receive Offload API framework")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agoeventdev: fix missing includes
Thomas Monjalon [Fri, 4 Aug 2017 10:00:53 +0000 (12:00 +0200)]
eventdev: fix missing includes

The PCI helper file depends on some EAL definitions.
Spotted with devtools/check-includes.sh:
error: implicit declaration of function ‘rte_eal_process_type’
error: ‘RTE_PROC_PRIMARY’ undeclared
error: implicit declaration of function ‘rte_socket_id’

There was also this error because the inline keyword was missing:
error: ‘rte_event_pmd_pci_probe’ defined but not used

Fixes: 9a8269d56942 ("eventdev: make PCI probe and remove functions optional")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agocryptodev: fix C11 extensions in exported header
Adrien Mazarguil [Fri, 4 Aug 2017 11:56:22 +0000 (13:56 +0200)]
cryptodev: fix C11 extensions in exported header

Fix issues reported by check-includes.sh:

 rte_crypto_sym.h:586:3: error: anonymous structs are a C11 extension
     [-Werror,-Wc11-extensions]
 rte_crypto_sym.h:510:2: error: anonymous unions are a C11 extension
     [-Werror,-Wc11-extensions]

Fixes: b59502a5e3d0 ("cryptodev: add AEAD parameters in crypto operation")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoethdev: fix C11 extensions in exported TM header
Adrien Mazarguil [Fri, 4 Aug 2017 11:56:21 +0000 (13:56 +0200)]
ethdev: fix C11 extensions in exported TM header

Fix issues reported by check-includes.sh:

 rte_tm.h:473:2: error: anonymous unions are a C11 extension
     [-Werror,-Wc11-extensions]
 rte_tm.h:696:2: error: anonymous unions are a C11 extension
     [-Werror,-Wc11-extensions]
 rte_tm.h:904:2: error: anonymous unions are a C11 extension
     [-Werror,-Wc11-extensions]

Fixes: 5d109deffa87 ("ethdev: add traffic management API")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
7 years agoeal: fix hotplug device parsing
Gaetan Rivet [Fri, 4 Aug 2017 15:30:23 +0000 (17:30 +0200)]
eal: fix hotplug device parsing

snprintf returns the length it would have written had the given length
been enough, *terminating null byte excluded*.

It will however limit the length of its writing to given length minus
one, and always put a terminating null-byte at the end of the string.

This must be taken into account when calculating the total length of the
device declaration string.

Fixes: 3054036f054a ("eal: fix possible crash in hotplug")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoversion: 17.08-rc4
Thomas Monjalon [Thu, 3 Aug 2017 23:42:04 +0000 (01:42 +0200)]
version: 17.08-rc4

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: remove unnecessary deprecation notice
Jianfeng Tan [Wed, 2 Aug 2017 17:34:11 +0000 (17:34 +0000)]
doc: remove unnecessary deprecation notice

The original purpose of this deprecation is to make sure PCI devices
are reset whenever DPDK apps crash.
Since the commit b58eedfc7dd5 from Shijith can fix this problem without
deprecating anything, now there is no need to deprecate iomem and ioport
mapping in igb_uio.

Fixes: 3bac1dbc1ed5 ("doc: announce iomem and ioport removal from igb_uio")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agomaintainers: add event ring test to eventdev
Thomas Monjalon [Sun, 16 Jul 2017 17:47:07 +0000 (19:47 +0200)]
maintainers: add event ring test to eventdev

This file was not referenced in MAINTAINERS list.
The miss is spotted with devtools/check-maintainers.sh.

As this test file is related to eventdev, they should both
have the same maintainer.

Fixes: 1ee55d7a6e4d ("test/eventdev: add auto-tests for event ring functions")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agodoc: move metrics libs to device API section
Thomas Monjalon [Sun, 16 Jul 2017 18:10:56 +0000 (20:10 +0200)]
doc: move metrics libs to device API section

The metrics headers were listed in misc section,
whereas they belong to the device API family.

Fixes: 349950ddb9c5 ("metrics: add information metrics library")
Fixes: 2ad7ba9a6567 ("bitrate: add bitrate statistics library")
Fixes: 5cd3cac9ed22 ("latency: added new library for latency stats")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: move keepalive to multicore API section
Thomas Monjalon [Sun, 16 Jul 2017 17:57:07 +0000 (19:57 +0200)]
doc: move keepalive to multicore API section

The keepalive header was listed in misc section,
despite its doxygen comment is "LCore Keepalive Monitor".

Fixes: 75583b0d1efd ("eal: add keep alive monitoring")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: remove outdated list of supported OS
Thomas Monjalon [Thu, 3 Aug 2017 14:50:55 +0000 (16:50 +0200)]
doc: remove outdated list of supported OS

It is very difficult to list OS which are really supported.
Instead of continuing this unrealistic effort, a more reliable list
of tested platforms and OS is updated in the release notes.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: add tested Intel platforms with Intel NICs
Yulong Pei [Mon, 31 Jul 2017 04:30:29 +0000 (12:30 +0800)]
doc: add tested Intel platforms with Intel NICs

Add tested Intel platforms with Intel NICs to the release note.

Signed-off-by: Yulong Pei <yulong.pei@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: warn about UIO not working with UEFI secure boot
John McNamara [Thu, 3 Aug 2017 17:19:45 +0000 (18:19 +0100)]
doc: warn about UIO not working with UEFI secure boot

Added notes to the documentation warning that if UEFI secure boot
is enabled the Linux kernel may disallow the use of UIO on the
system, and a suggested workaround of using the vfio-pci kernel
module instead of igb_uio or uio_pci_generic.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: add how-to on packet capture framework
Reshma Pattan [Thu, 3 Aug 2017 13:09:40 +0000 (14:09 +0100)]
doc: add how-to on packet capture framework

Add How-To doc to describe the use of the pdump library
and the dpdk-pdump tool to capture traffic on DPDK
ports.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: describe traffic management API
Jasvinder Singh [Tue, 25 Jul 2017 17:40:51 +0000 (18:40 +0100)]
doc: describe traffic management API

This patch adds description of the traffic management api to dpdk
programmers guide.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agotest/crypto: fix error message
Pablo de Lara [Thu, 3 Aug 2017 10:34:29 +0000 (11:34 +0100)]
test/crypto: fix error message

Fixes: 7a364faef185 ("cryptodev: remove crypto device type enumeration")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agoapp/crypto-perf: fix IV allocation for AEAD
Pablo de Lara [Tue, 1 Aug 2017 00:33:36 +0000 (01:33 +0100)]
app/crypto-perf: fix IV allocation for AEAD

Memory is reserved after each crypto operation
for the necessary IV(s), which could be for cipher,
authentication or AEAD algorithms.
However, for AEAD algorithms (such as AES-GCM), this
memory was not being reserved, leading to potential
memory overflow.

Fixes: 8a5b494a7f99 ("app/test-crypto-perf: add AEAD parameters")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/testpmd: fix Tx first with LSC interrupt
David Hunt [Tue, 25 Jul 2017 10:27:52 +0000 (11:27 +0100)]
app/testpmd: fix Tx first with LSC interrupt

The lsc_interrupt flag is enabled by default, and when the --tx-first is
used as a command line parameter, the 32 packets can be sent out before
the link state is up, resulting in the loss of the packets, and no further
forwarding will take place.

E.g. ./build/app/testpmd -c f0 -- --tx-first --stats-period 1

When the --tx-first is used, the lsc_interrupt flag needs to be disabled,
ensuring the links are up before forwarding traffic.  Therefore, during the
parameter checking at startup, if --tx-first is used, we now warn the user,
and set lsc_interrupt to 0.

Fixes: 99cabef08855 ("app/testpmd: add parameter to start forwarding Tx first")

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/testpmd: fix GRO command description
Jiayu Hu [Thu, 3 Aug 2017 09:45:19 +0000 (17:45 +0800)]
app/testpmd: fix GRO command description

In testpmd, GRO is supported by csum forwarding engine, but the cmdline
message shows GRO is supported by io forwarding engine. This patch is
to fix this issue.

Fixes: b40f8d782ba1 ("app/testpmd: enable TCP/IPv4 GRO")

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/mlx5: add parameters to enable/disable vector datapath
Nelio Laranjeiro [Wed, 2 Aug 2017 15:32:56 +0000 (17:32 +0200)]
net/mlx5: add parameters to enable/disable vector datapath

Vector code is very young and can present some issues for users, to avoid
them to modify the selections function by commenting the code and recompile
the PMD, new devices parameters are added to deactivate the Tx and/or Rx
vector code.
By using such device parameters, the user will be able to fall back to
regular burst functions.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/mlx5: fix error statistics in SSE Rx
Yongseok Koh [Wed, 2 Aug 2017 17:25:54 +0000 (10:25 -0700)]
net/mlx5: fix error statistics in SSE Rx

If there's a Rx completion with error (e.g, MTU mismatch), it is handled
later out of main burst loop as a slow path for performance reason.
Statistics should be corrected by subtracting counters of errored packets.
Also, the last entry of mlx5_ptype_table[] must be RTE_PTYPE_ALL_MASK to
mark error in completion.

Fixes: ea16068c0064 ("net/mlx5: fix L4 packet type support")
Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: fix offload flags in SSE Rx
Yongseok Koh [Wed, 2 Aug 2017 17:29:52 +0000 (10:29 -0700)]
net/mlx5: fix offload flags in SSE Rx

The pinfo variable has wrong data. This has to have merged data of two
fields from Rx completion - pkt_info and hdr_type_etc.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: fix buffer address posting in SSE Rx
Yongseok Koh [Tue, 1 Aug 2017 16:35:20 +0000 (09:35 -0700)]
net/mlx5: fix buffer address posting in SSE Rx

The data_off field of newly allocated mbufs is stale data. This shouldn't
be used in calculating Rx address for device when posting free buffers.
RTE_PKTMBUF_HEADROOM should be used instead and data_off of a mbuf will be
reset on packet reception anyway.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: fix trimming SW ring for vectorized Rx
Yongseok Koh [Thu, 3 Aug 2017 21:12:40 +0000 (14:12 -0700)]
net/mlx5: fix trimming SW ring for vectorized Rx

Unlike mlx5_rx_burst(), mlx5_rx_burst_vec() doesn't replace completed
buffers one by one right after completion is processed but replenishes
multiple buffers later with rte_mempool_get_bulk(). Therefore, there could
be some buffer addresses left in the SW ring (rxq->elts[]) which have
already been delivered to application. As PMD doesn't own such buffers, it
must not be freed by PMD.  "Trimming" is needed before cleanup.

A problem can be seen when quitting testpmd when
CONFIG_RTE_LIBRTE_MBUF_DEBUG=y and CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=y

Trimming should be as simple as possible, it shouldn't touch any indexes
and buffer allocation isn't necessary.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: fix MTU update
Nelio Laranjeiro [Thu, 3 Aug 2017 09:31:27 +0000 (11:31 +0200)]
net/mlx5: fix MTU update

Changing the MTU is not related to changing the number of segments,
activating or not the multi-segment support should be handled by the
application.

Fixes: 9964b965ad69 ("net/mlx5: re-add Rx scatter support")
Cc: stable@dpdk.org
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/mlx4: workaround verbs error after plug-out
Matan Azrad [Wed, 2 Aug 2017 19:00:50 +0000 (22:00 +0300)]
net/mlx4: workaround verbs error after plug-out

Current mlx4 OFED version has bug which returns error to
ibv destroy functions when the device was plugged out, in
spite of the resources were destroyed correctly.

Hence, failsafe PMD was aborted, only in debug mode, when
it tries to remove the device in plug-out process.

The workaround added option to replace all claim_zero
assertions with debugging messages, by the way, this option
affects non ibv destroy assertions.

DPDK 18.02 release should work with Mellanox OFED-4.2 which will
include the verbs fix to this bug, then, this patch can
be removed.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/enic: fix crash when freeing 0 packet to mempool
Aaron Conole [Wed, 2 Aug 2017 18:02:13 +0000 (14:02 -0400)]
net/enic: fix crash when freeing 0 packet to mempool

Occasionally, the amount of packets to free from the work queue ends
perfectly on a boundary to have nb_free = 0 and pool = 0.  This causes
a segfault as follows:

  (gdb) bt
  #0  rte_mempool_default_cache
  #1  rte_mempool_put_bulk (n=0, obj_table=0x7f10deff2530, mp=0x0)
  #2  enic_free_wq_bufs (wq=wq@entry=0x7efabffcd5b0,
      completed_index=completed_index@entry=33)
  #3  0x00007f11e9c86e17 in enic_cleanup_wq (enic=<optimized out>,
      wq=wq@entry=0x7efabffcd5b0)
      at /usr/src/debug/openvswitch-2.6.1/dpdk-16.11/drivers/net/enic/enic_rxtx.c:442
  #4  0x00007f11e9c86e5f in enic_xmit_pkts (tx_queue=0x7efabffcd5b0,
      tx_pkts=0x7f10deffb1a8, nb_pkts=<optimized out>)
      at /usr/src/debug/openvswitch-2.6.1/dpdk-16.11/drivers/net/enic/enic_rxtx.c:470
  #5  0x00007f11e9e147ad in rte_eth_tx_burst (nb_pkts=<optimized out>,
      tx_pkts=0x7f10deffb1a8, queue_id=0, port_id=<optimized out>)

This commit makes the enic wq driver match other drivers who call the
bulk free, by checking that there are actual packets to free.

Fixes: 36935afbc53c ("net/enic: refactor Tx mbuf recycling")
CC: stable@dpdk.org
Reported-by: Vincent S. Cojot <vcojot@redhat.com>
Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1468631
Signed-off-by: Aaron Conole <aconole@redhat.com>
Reviewed-by: John Daley <johndale@cisco.com>
7 years agonet/i40e: fix Rx data segment buffer length
Qi Zhang [Wed, 2 Aug 2017 07:22:09 +0000 (15:22 +0800)]
net/i40e: fix Rx data segment buffer length

Buffer length be configured for each data segment should not exceed
the requested value, or device may fill data that exceed the boundary
of memory that be reserved.

Fixes: 4861cde46116 ("i40e: new poll mode driver")
Cc: stable@dpdk.org
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Tested-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
7 years agonet/failsafe: fix blank line parsing
Gaetan Rivet [Thu, 3 Aug 2017 15:08:34 +0000 (17:08 +0200)]
net/failsafe: fix blank line parsing

When the output of an exec() slave definition is only a single newline
character, the fail-safe currently fails to parse the device with the
value returned by the rte_devargs library.

This behavior is incorrect, because the fail-safe should make a
difference between the absence of a device, and an erroneous device
declaration.

Fix the output sanitization in the case where no newline was at its end
and detect the special case of an absent device. The correct error code
is then returned.

Fixes: a0194d828100 ("net/failsafe: add flexible device definition")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/failsafe: fix missing pclose after popen
Raslan Darawsheh [Thu, 3 Aug 2017 13:09:58 +0000 (16:09 +0300)]
net/failsafe: fix missing pclose after popen

When there is no preferred device, failsafe will always
try to scan for preferred device. And if there is no device
found with the exec option, popen() will get an empty output.
In this case, it was forgotten to close the file descriptor.
It is fixed by closing the file descriptor even if the output is empty.

Coverity issue: 158633
Fixes: a0194d828100 ("net/failsafe: add flexible device definition")

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/vmxnet3: fix filtering on promiscuous disabling
Chas Williams [Mon, 24 Jul 2017 14:22:42 +0000 (10:22 -0400)]
net/vmxnet3: fix filtering on promiscuous disabling

We should only restore shadow_vfta when hw_vlan_filter is active.
Otherwise, we should restore the previous filtering behavior.

Fixes: f003fc383487 ("vmxnet3: enable vlan filtering")
Cc: stable@dpdk.org
Signed-off-by: Chas Williams <ciwillia@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agovhost: make page logging atomic
Tiwei Bie [Tue, 1 Aug 2017 09:01:21 +0000 (17:01 +0800)]
vhost: make page logging atomic

Each dirty page logging operation should be atomic. But it's not
atomic in current implementation. So it's possible that some dirty
pages can't be logged successfully when different threads try to
log different pages into the same byte of the log buffer concurrently.
This patch fixes this issue.

Fixes: b171fad1ffa5 ("vhost: log used vring changes")
Cc: stable@dpdk.org
Reported-by: Xiao Wang <xiao.w.wang@intel.com>
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
7 years agoeal: fix leak on hotplug parsing error
Gaetan Rivet [Thu, 3 Aug 2017 12:34:31 +0000 (14:34 +0200)]
eal: fix leak on hotplug parsing error

If rte_eal_devargs_parse fails, the rte_devargs has not yet been inserted
in the global list. When jumping to err_devarg, the removal fails and it
is not properly freed.

Free the allocated rte_devargs if its removal failed.

Coverity issue: 158658
Fixes: 7e8b26650146 ("eal: fix hotplug add / remove")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoeal: fix possible crash in hotplug
Gaetan Rivet [Thu, 3 Aug 2017 12:34:19 +0000 (14:34 +0200)]
eal: fix possible crash in hotplug

If devargs is NULL, building the full_dev_name will segfault
when using strlen on it.

Coverity issue: 158630
Fixes: 7e8b26650146 ("eal: fix hotplug add / remove")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agodevargs: fix policy check when adding arguments
Gaetan Rivet [Wed, 2 Aug 2017 17:12:07 +0000 (19:12 +0200)]
devargs: fix policy check when adding arguments

Do not fail upon detecting a set bus configuration when adding an
rte_devargs. i.e. adding a blacklisted PCI device while the bus is
configured in whitelist mode.

This failure condition has been introduced when the bus policies
were implemented. This implementation however was meant to strictly
follow the existing API. This check was not and should not be performed
until the current API has been properly deprecated.

The same kind of check is already done when parsing EAL options.

Fixes: 02823c1db0bc ("devargs: parse bus policies")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoeal: read and parse device option separately
Gaetan Rivet [Wed, 2 Aug 2017 17:10:22 +0000 (19:10 +0200)]
eal: read and parse device option separately

When the EAL parses the common options given to the application,
not all subsystems are available. Some device drivers are registered
afterward upon dynamic plugin loading.

Devices using those drivers are thus unable to be parsed by any drivers
and are rejected.

Store the device options first and keep them for later processing.
Parse these right before initializing the buses, the drivers must have
been stabilized at this point.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Tested-by: Dirk-Holger Lenz <dirk.lenz@ng4t.com>