dpdk.git
5 years agombuf: add function to generate raw Tx offload value
Konstantin Ananyev [Tue, 2 Apr 2019 08:34:36 +0000 (09:34 +0100)]
mbuf: add function to generate raw Tx offload value

Operations to set/update bit-fields often cause compilers
to generate suboptimal code.
To help avoid such situation for tx_offload fields:
introduce new enum for tx_offload bit-fields lengths and offsets,
and new function to generate raw tx_offload value.
Add new test-case into UT for introduced function.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
5 years agoapp/compress-perf: add incompressible data handling
Tomasz Jozwiak [Fri, 1 Mar 2019 08:45:10 +0000 (09:45 +0100)]
app/compress-perf: add incompressible data handling

Currently, compress-perf doesn't respect incompressible
data inside one operation.

This patch adds such a functionality. Now the output buffer
in one operation is big enough to store such a data after
compression. Also added segment size checking to pass
values in right range.

Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocompress/isal: fix getting information about CPU
Tomasz Cel [Thu, 7 Mar 2019 11:28:21 +0000 (12:28 +0100)]
compress/isal: fix getting information about CPU

This patch adds query about CPU features

Fixes: 53a9baa98c36 ("compress/isal: add basic PMD ops")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
Acked-by: Lee Daly <lee.daly@intel.com>
5 years agodrivers/qat: fix queue pair NUMA node
Tomasz Jozwiak [Tue, 26 Mar 2019 14:20:48 +0000 (15:20 +0100)]
drivers/qat: fix queue pair NUMA node

This patch assigns QAT queue pair resources to the correct NUMA nodes.
Any DMA'able memory should use NUMA node of QAT device
rather than socket_id of the initializing process.

Fixes: 98c4a35c736f ("crypto/qat: move common qat files to common dir")
Fixes: a795248d740b ("compress/qat: add configure and clear functions")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocompress/isal: add appropriate flag on overflow
Lee Daly [Thu, 24 Jan 2019 15:19:13 +0000 (15:19 +0000)]
compress/isal: add appropriate flag on overflow

This patch will change the operation status when ISA-L returns because
of a recoverable out of space error, rather than a just generic fail.

Signed-off-by: Lee Daly <lee.daly@intel.com>
Tested-by: Tomasz Cel <tomaszx.cel@intel.com>
5 years agotest/crypto: check key type feature flag for asym
Ayuj Verma [Thu, 28 Mar 2019 10:28:40 +0000 (10:28 +0000)]
test/crypto: check key type feature flag for asym

crypto pmds are queried to check if Sign and Decrypt
with CRT keys or exponent is supported, thus call
operation with relevant key type.

Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Shally Verma <shallyv@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/openssl: set RSA private op feature flag
Ayuj Verma [Thu, 28 Mar 2019 10:28:32 +0000 (10:28 +0000)]
crypto/openssl: set RSA private op feature flag

openssl PMD support RSA private key operation
using both qt and exp key type.
Set rsa key type feature flag

Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Shally Verma <shallyv@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocryptodev: add RSA private key feature flag
Ayuj Verma [Thu, 28 Mar 2019 10:28:22 +0000 (10:28 +0000)]
cryptodev: add RSA private key feature flag

Add feature flag to reflect RSA private key
operation support using quintuple (crt) or
exponent type key. if PMD support both,
then it should set both.

App should query cryptodev feature flag to check
if Sign and Decryt with CRT keys or exponent is
supported, thus call operation with relevant
key type.

Signed-off-by: Ayuj Verma <ayverma@marvell.com>
Signed-off-by: Shally Verma <shallyv@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/dpaa2_sec: support multi-process
Akhil Goyal [Wed, 27 Mar 2019 11:53:37 +0000 (11:53 +0000)]
crypto/dpaa2_sec: support multi-process

- fle pool allocations should be done for each process.
- cryptodev->data is shared across muliple processes but
cryptodev itself is allocated for each process. So any
information which needs to be shared between processes,
should be kept in cryptodev->data.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/dpaa_sec: fix session queue attach/detach
Akhil Goyal [Wed, 27 Mar 2019 11:53:36 +0000 (11:53 +0000)]
crypto/dpaa_sec: fix session queue attach/detach

session inq and qp are assigned for each core from which the
packets arrive. This was not correctly handled while supporting
multiple sessions per queue pair.
This patch fixes the attach and detach of queues for each core.

Fixes: e79416d10fa3 ("crypto/dpaa_sec: support multiple sessions per queue pair")
Cc: stable@dpdk.org
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/dpaa2_sec: remove unnecessary flc configurations
Akhil Goyal [Wed, 27 Mar 2019 11:53:34 +0000 (11:53 +0000)]
crypto/dpaa2_sec: remove unnecessary flc configurations

The removed fields are required in case the SEC block
allocates the buffer from bman pool.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agodrivers/crypto: update inline desc for sharing mode
Akhil Goyal [Wed, 27 Mar 2019 11:53:33 +0000 (11:53 +0000)]
drivers/crypto: update inline desc for sharing mode

SEC HW descriptor sharing mode can now be controlled
during Session preparation by the respective drivers

shared descriptors in case of non-protocol offload does not need
any sync between the subsequent jobs. Thus, changing it to
SHR_NEVER from SHR_SERIAL for cipher_only, auth_only, and gcm.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/dpaa2_sec: fix offset calculation for GCM
Akhil Goyal [Wed, 27 Mar 2019 11:53:32 +0000 (11:53 +0000)]
crypto/dpaa2_sec: fix offset calculation for GCM

In case of gcm, output buffer should have aad space
before the actual buffer which needs to be written.
CAAM will not write into the aad anything, it will skip
auth_only_len (aad) and write the buffer afterwards.

Fixes: 37f96eb01bce ("crypto/dpaa2_sec: support scatter gather")
Cc: stable@dpdk.org
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocrypto/dpaa2_sec: fix session clearing
Akhil Goyal [Wed, 27 Mar 2019 11:53:30 +0000 (11:53 +0000)]
crypto/dpaa2_sec: fix session clearing

private data should be cleared instead of the complete session

Fixes: 8d1f3a5d751b ("crypto/dpaa2_sec: support crypto operation")
Cc: stable@dpdk.org
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocompress/qat: add dynamic SGL allocation
Tomasz Jozwiak [Tue, 26 Mar 2019 13:51:24 +0000 (14:51 +0100)]
compress/qat: add dynamic SGL allocation

This patch adds dynamic SGL allocation instead of static one.
The number of element in SGL can be adjusted in each operation
depend of the request.

Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocrypto/aesni_mb: support newer library version only
Fan Zhang [Mon, 25 Mar 2019 13:58:35 +0000 (13:58 +0000)]
crypto/aesni_mb: support newer library version only

As stated in 19.02 deprecation notice, this patch updates the
aesni_mb PMD to remove the support of older Intel-ipsec-mb
library version earlier than 0.52.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
5 years agotest/crypto: check out of place for AESNI-MB
Fan Zhang [Mon, 25 Mar 2019 13:51:21 +0000 (13:51 +0000)]
test/crypto: check out of place for AESNI-MB

This patch updates the unit test to enable AESNI-MB PMD
out-of-place tests. A special test type that swap both
the source and destination buffer is added for a more
comprehensive test set to take place.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocrypto/aesni_mb: enable out of place processing
Fan Zhang [Mon, 25 Mar 2019 13:51:20 +0000 (13:51 +0000)]
crypto/aesni_mb: enable out of place processing

Add out-of-place processing, i.e. different source and
destination m_bufs, plus related capability update, tests
and documentation.

Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Signed-off-by: Paul Luse <paul.e.luse@intel.com>
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
5 years agotest/crypto: check asymmetric crypto
Damian Nowak [Wed, 27 Mar 2019 09:45:21 +0000 (10:45 +0100)]
test/crypto: check asymmetric crypto

This patch adds new test structure for modexp
and modinv for asymmetric cryptography.

Signed-off-by: Damian Nowak <damianx.nowak@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocrypto/qat: add modular multiplicative inverse
Arek Kusztal [Thu, 28 Mar 2019 13:37:03 +0000 (14:37 +0100)]
crypto/qat: add modular multiplicative inverse

This commit adds modular multiplicative inverse to Intel
QuickAssist Technology driver. For capabilities or limitations
please refer to qat.rst or qat_asym_capabilities.h.

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocrypto/qat: add modular exponentiation
Arek Kusztal [Thu, 28 Mar 2019 13:37:02 +0000 (14:37 +0100)]
crypto/qat: add modular exponentiation

This commit adds modular exponentiation to Intel QuickAssist
Technology driver. For capabilities or limitations please refer to
qat.rst or qat_asym_capabilities.h.

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocrypto/qat: add asymmetric crypto PMD
Arek Kusztal [Thu, 28 Mar 2019 13:37:01 +0000 (14:37 +0100)]
crypto/qat: add asymmetric crypto PMD

This patch adds Poll Mode Driver for asymmetric crypto
functions of Intel QuickAssist Technology hardware.

It contains plain driver with no functions implemented, specific
algorithms will be introduced in separate patches.

This patch depends on a QAT PF driver for device initialization. See
the file docs/guides/cryptodevs/qat.rst for configuration details.

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agocommon/qat: add headers for asymmetric crypto
Arek Kusztal [Thu, 28 Mar 2019 13:37:00 +0000 (14:37 +0100)]
common/qat: add headers for asymmetric crypto

This commit adds headers to be used in conjunction with asymmetric
cryptography operations using Intel QuickAssist Technology driver

Signed-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agotest/crypto: check SNOW3G when digest is encrypted
Lukasz Krakowiak [Mon, 25 Mar 2019 10:47:58 +0000 (05:47 -0500)]
test/crypto: check SNOW3G when digest is encrypted

Add test case for encryption, decryption for snow3g when digest
is encrypted

Signed-off-by: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agoexamples/ipsec-secgw: fix test script
Konstantin Ananyev [Wed, 27 Mar 2019 09:33:29 +0000 (09:33 +0000)]
examples/ipsec-secgw: fix test script

Fixes: 929784452094 ("examples/ipsec-secgw: add scripts for functional test")
Cc: stable@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agoexamples/ipsec_secgw: fix possible null dereference
Konstantin Ananyev [Wed, 27 Mar 2019 09:33:28 +0000 (09:33 +0000)]
examples/ipsec_secgw: fix possible null dereference

Coverity issue: 336844
Fixes: 3e5f4625dc17 ("examples/ipsec-secgw: make data-path to use IPsec library")
Cc: stable@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agoexamples/ipsec-secgw: fix out-of-bound check
Konstantin Ananyev [Wed, 27 Mar 2019 09:33:27 +0000 (09:33 +0000)]
examples/ipsec-secgw: fix out-of-bound check

Coverity issue: 336791
Fixes: 7622291b641d ("examples/ipsec-secgw: allow to specify neighbour MAC address")
Cc: stable@dpdk.org
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agodoc: announce ABI change for cryptodev config
Anoob Joseph [Thu, 7 Mar 2019 10:39:50 +0000 (10:39 +0000)]
doc: announce ABI change for cryptodev config

Add new field ff_disable in rte_cryptodev_config. This enables
applications to control the features enabled on the crypto device.

Proposed new layout:

/** Crypto device configuration structure */
struct rte_cryptodev_config {
    int socket_id;            /**< Socket to allocate resources on */
    uint16_t nb_queue_pairs;
    /**< Number of queue pairs to configure on device */
+   uint64_t ff_disable;
+   /**< Feature flags to be disabled. Only the following features are
+    * allowed to be disabled,
+    *  - RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO
+    *  - RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO
+    *  - RTE_CRYTPODEV_FF_SECURITY
+    */
};

For eth devices, rte_eth_conf.rx_mode.offloads and
rte_eth_conf.tx_mode.offloads fields are used by applications to
control the offloads enabled on the eth device. This proposal adds a
similar ability for the crypto device.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
5 years agocompress/isal: fix compression stream initialization
Tomasz Cel [Thu, 28 Mar 2019 09:06:27 +0000 (10:06 +0100)]
compress/isal: fix compression stream initialization

This patch fixes ISAL internal state fields initialization.

Fixes: dc49e6aa4879 ("compress/isal: add ISA-L compression functionality")
Cc: stable@dpdk.org
Signed-off-by: Tomasz Cel <tomaszx.cel@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
5 years agotest/event: replace sprintf with snprintf
Pallantla Poornima [Wed, 6 Feb 2019 10:43:42 +0000 (10:43 +0000)]
test/event: replace sprintf with snprintf

sprintf function is not secure as it doesn't check the length of string.
More secure function snprintf is used.

Fixes: 2a9c83ae3b ("test/eventdev: add multi-ports test")
Cc: stable@dpdk.org
Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
5 years agoapp/eventdev: add option for global dequeue timeout
Pavan Nikhilesh [Fri, 29 Mar 2019 07:11:46 +0000 (07:11 +0000)]
app/eventdev: add option for global dequeue timeout

Add option to provide a global dequeue timeout that is used to create
the eventdev.
The dequeue timeout provided will be common across all the worker
ports. If the eventdev hardware supports power management through
dequeue timeout then this option can be used for verifying power
demands at various packet rates.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
5 years agoevent/sw: fix enqueue checks in self-test
Harry van Haaren [Wed, 27 Mar 2019 18:45:46 +0000 (18:45 +0000)]
event/sw: fix enqueue checks in self-test

This patch fixes a number of instances of the same return
value mis-check, where previously we checked for a negative
return value as error, however the API returns an unsigned
integer, so these return value checks are invalid.

The rte_event_enqueue_burst() API returns the number of
events enqueued, so in order to identify the error case,
we must check for != the number of intended enqueues.

Fixes: cd1a9e3eab55 ("test/eventdev: add SW tests for load balancing")
Cc: stable@dpdk.org
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
5 years agotest/event: improve compatibility for timer adapter
Pavan Nikhilesh [Sat, 16 Mar 2019 20:27:39 +0000 (20:27 +0000)]
test/event: improve compatibility for timer adapter

Check if eventdev is open system eventdevs i.e. max_num_events = -1
before asserting.
Allow event timer adapter to adjust the resolution using
RTE_EVENT_TIMER_ADAPTER_F_ADJUST_RES and re-calculate timeout ticks
based on the adjusted resolution.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
5 years agoeventdev: check timer adapter status before start
Pavan Nikhilesh [Sat, 16 Mar 2019 20:27:36 +0000 (20:27 +0000)]
eventdev: check timer adapter status before start

Check if timer adapter is already started before starting it.
Update the unit test accordingly.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
5 years agoeal: allow to override init macros per OS
Jerin Jacob [Wed, 3 Apr 2019 19:28:40 +0000 (19:28 +0000)]
eal: allow to override init macros per OS

baremetal execution environments may have a different
method to enable RTE_INIT instead of using compiler
constructor and/or OS specific linker scheme.
Allow an option to override RTE_INIT* macros using
rte_os.h or appropriate header file.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoeal/x86: add 128-bit atomic compare exchange
Gage Eads [Wed, 3 Apr 2019 19:44:56 +0000 (14:44 -0500)]
eal/x86: add 128-bit atomic compare exchange

This operation can be used for non-blocking algorithms, such as a
non-blocking stack or ring.

It is available only for x86_64.

Signed-off-by: Gage Eads <gage.eads@intel.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
5 years agotest/hash: check lock-free extendable bucket
Dharmik Thakkar [Tue, 2 Apr 2019 19:44:55 +0000 (19:44 +0000)]
test/hash: check lock-free extendable bucket

Add unit test to check for hash lookup and bulk-lookup perf for
extendable bucket feature.
It is tested with both lock-free enabled and lock-free disabled case.

Test includes:

- hash lookup on keys in ext bkt
- hash delete causing key-shifts of keys from ext bkt to secondary bkt

Suggested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
5 years agohash: support lock-free extendable bucket
Dharmik Thakkar [Tue, 2 Apr 2019 19:44:54 +0000 (19:44 +0000)]
hash: support lock-free extendable bucket

This patch enables lock-free read-write concurrency support for
extendable bucket feature.

Suggested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Signed-off-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Yipeng Wang <yipeng1.wang@intel.com>
5 years agomem: limit use of address hint
Shahaf Shuler [Sun, 31 Mar 2019 08:43:48 +0000 (11:43 +0300)]
mem: limit use of address hint

The commit below added an address hint as starting address for 64-bit
systems in case an explicit base virtual address was not set by the user.

The justification for such hint was to help devices that work in VA
mode and has a address range limitation to work smoothly with the eal
memory subsystem.

While the base address value selected may work fine for the eal
initialization, it easily breaks when trying to register external memory
using rte_extmem_register API.

Trying to register anonymous memory on RH x86_64 machine took several
minutes, during them the function eal_get_virtual_area repeatedly
scanned for a good VA candidate.

The attempt to guess which VA address will be free for mapping will
always result in not portable, error prone code:
* different application may use different libraries along w/ DPDK. One
  can never guess which library was called first and how much virtual
  memory it consumed.
* external memory can be registered at any time in the application run
  time.

In order not to break the existing secondary process design, this patch
only limits the max number of tries that will be done with the
address hint.
When the number of tries exceeds the threshold the code
will use the suggested address from kernel.

Fixes: 1df21702873d ("mem: use address hint for mapping hugepages")
Cc: stable@dpdk.org
Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Tested-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Alejandro Lucero <alejandro.lucero@netronome.com>
5 years agoring: fix an error message
Stephen Hemminger [Tue, 2 Apr 2019 15:30:26 +0000 (08:30 -0700)]
ring: fix an error message

Log message should end with newline.

Fixes: 4e32101f9b01 ("ring: support freeing")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
5 years agoeal: align hexdump output
Stephen Hemminger [Tue, 2 Apr 2019 15:23:50 +0000 (08:23 -0700)]
eal: align hexdump output

This fixes the issue where if the length of the output is not
a multiple of 16 the formatting was off.

Before:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37 |  |  |  |  |  |  |  |  |  |  |  |  | ...7

After:
00000000: 45 00 00 1C 12 34 2C E0 40 06 B8 2E C0 A8 01 12 | E....4,.@.......
00000010: C0 A8 01 37                                     | ...7

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
5 years agoeal: clean formatting of hexdump functions
Stephen Hemminger [Tue, 2 Apr 2019 15:23:49 +0000 (08:23 -0700)]
eal: clean formatting of hexdump functions

The hexdump code obviously came from somewhere else originally.
It is not formatted according to DPDK coding style.

Also, drop the comment which is not useful the docbock comment
is already in the rte_hexdump.h

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
5 years agoeal: make u64 reciprocal divisor const
Stephen Hemminger [Thu, 21 Mar 2019 19:59:10 +0000 (12:59 -0700)]
eal: make u64 reciprocal divisor const

The divisor is not modified here. Doesn't really matter for optimizaton
since the function is inline already; but helps with expressing
intent.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agodoc: add guide for Windows
Anand Rawat [Tue, 2 Apr 2019 03:54:57 +0000 (20:54 -0700)]
doc: add guide for Windows

Added documentation to build helloworld example
on Windows using meson and clang.

Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Tested-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agobuild: add workarounds for Windows helloworld
Anand Rawat [Tue, 2 Apr 2019 03:54:58 +0000 (20:54 -0700)]
build: add workarounds for Windows helloworld

Added meson workarounds to build helloworld on Windows.
Windows currently only supports kvargs and eal libraries.
This change restricts the build flow to supported libraries
only.

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal/windows: add minimum viable code
Anand Rawat [Tue, 2 Apr 2019 03:54:56 +0000 (20:54 -0700)]
eal/windows: add minimum viable code

Add Windows specific logic for eal.c, eal_lcore.c,
eal_debug.c and eal_thread.c. Updated header files to
contain suitable function declarations.

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal/windows: add headers for compatibility
Anand Rawat [Tue, 2 Apr 2019 03:54:55 +0000 (20:54 -0700)]
eal/windows: add headers for compatibility

Added headers to support Windows environment for common source.
These headers will have Windows specific implementions of the
system library APIs provided in Linux and FreeBSD.

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal/windows: add sys/queue.h implementation copy
Anand Rawat [Tue, 2 Apr 2019 03:54:54 +0000 (20:54 -0700)]
eal/windows: add sys/queue.h implementation copy

Adding sys/queue.h on Windows for supporting common code.
This implementation has BSD-3-Clause licensing.

Signed-off-by: Ranjit Menon <ranjit.menon@intel.com>
Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agobuild: add module definition files for Windows
Anand Rawat [Tue, 2 Apr 2019 03:54:53 +0000 (20:54 -0700)]
build: add module definition files for Windows

Updated lib/meson.build to create shared libraries on Windows.
Added DEF files to list the exports for the eal and kvargs libraries.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal/windows: add wrappers for string functions
Anand Rawat [Tue, 2 Apr 2019 03:54:52 +0000 (20:54 -0700)]
eal/windows: add wrappers for string functions

Updated rte_common.h to include rte_os.h to contain
OS specific macros and functions. Updated rte_string_fns.h
to include rte_common.h for rte_os.h

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Pallavi Kadam <pallavi.kadam@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal: add OS specific header file
Anand Rawat [Tue, 2 Apr 2019 03:54:51 +0000 (20:54 -0700)]
eal: add OS specific header file

Added rte_os.h files to support OS specific functionality.
Updated build system to contain OS headers in the include
path.

Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Pallavi Kadam <pallavi.kadam@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoeal/windows: introduce Windows support
Anand Rawat [Tue, 2 Apr 2019 03:54:49 +0000 (20:54 -0700)]
eal/windows: introduce Windows support

Added initial stub source files and required meson changes
for Windows support.

kernel/windows/meson is a stub file added to support
Windows specific source in future releases.

Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
Signed-off-by: Anand Rawat <anand.rawat@intel.com>
Reviewed-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
Reviewed-by: Ranjit Menon <ranjit.menon@intel.com>
Acked-by: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
5 years agoeal: remove exec-env directory
Thomas Monjalon [Mon, 1 Apr 2019 23:07:12 +0000 (01:07 +0200)]
eal: remove exec-env directory

Only one header file (rte_kni_common.h) was in the sub-directory
include/exec-env/
This file was installed in a sub-directory of the same name
in the makefile-based build.
Source and install directories are moved as below:

   lib/librte_eal/linux/eal/include/exec-env/
-> lib/librte_eal/linux/eal/include/

   build/include/exec-env/
-> build/include/

The consequence is to have a file hierarchy a bit more flat.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Tested-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agombuf: remove Intel offload checks from generic API
Andrew Rybchenko [Fri, 29 Mar 2019 13:42:14 +0000 (13:42 +0000)]
mbuf: remove Intel offload checks from generic API

rte_validate_tx_offload() is used in Tx prepare callbacks
(RTE_LIBRTE_ETHDEV_DEBUG only) to check Tx offloads consistency.
Requirement that packet headers should not be fragmented is not
documented and unclear where it comes from except
rte_net_intel_cksum_prepare() functions which relies on it.

It could be NIC vendor specific driver or hardware limitation, but,
if so, it should be documented and checked in corresponding Tx
prepare callbacks.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
5 years agomem: do not use lockfiles for single file segments mode
Anatoly Burakov [Fri, 29 Mar 2019 17:55:29 +0000 (17:55 +0000)]
mem: do not use lockfiles for single file segments mode

Due to internal glibc limitations [1], DPDK may exhaust internal
file descriptor limits when using smaller page sizes, which results
in inability to use system calls such as select() by user
applications.

Single file segments option stores lock files per page to ensure
that pages are deleted when there are no more users, however this
is not necessary because the processes will be holding onto the
pages anyway because of mmap(). Thus, removing pages from the
filesystem is safe even though they may be used by some other
secondary process. As a result, single file segments mode no
longer stores inordinate amounts of segment fd's, and the above
issue with fd limits is solved.

However, this will not work for legacy mem mode. For that, simply
document that using bigger page sizes is the only option.

[1] https://mails.dpdk.org/archives/dev/2019-February/124386.html

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agomem: refactor segment resizing function
Anatoly Burakov [Fri, 29 Mar 2019 17:55:28 +0000 (17:55 +0000)]
mem: refactor segment resizing function

Currently, segment resizing code sits in one giant function which
handles both in-memory and regular modes. Split them up into
individual functions.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agoeal: initialize alarms early
Darek Stojaczyk [Mon, 1 Apr 2019 14:18:14 +0000 (16:18 +0200)]
eal: initialize alarms early

On Linux, we currently initialize rte_alarms after
starting to listen for IPC hotplug requests, which gives
us a data race window. Upon receiving such hotplug
request we always try to set an alarm and this obviously
doesn't work if the alarms weren't initialized yet.

To fix it, we initialize alarms before starting to
listen for IPC hotplug messages. Specifically, we move
rte_eal_alarm_init() right after rte_eal_intr_init() as
it makes some sense to keep those two close to each other.

We update the BSD code as well to keep the initialization
order the same in both EAL implementations.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Cc: stable@dpdk.org
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
5 years agoeal: increase max number of interrupt vectors
Pavan Nikhilesh [Sun, 31 Mar 2019 14:55:20 +0000 (14:55 +0000)]
eal: increase max number of interrupt vectors

MSI-X permits a device to allocate up to 2048 interrupts as per PCIe
spec.
Increase the max number of vectors to a reasonable value of 512.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
5 years agomaintainers: update for IBM POWER
David Christensen [Wed, 27 Mar 2019 22:31:39 +0000 (15:31 -0700)]
maintainers: update for IBM POWER

Succeed Chao Zhu as maintainer of EAL for IBM POWER.

Cc: stable@dpdk.org
Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
5 years agomaintainers: claim responsibility for timer library
Erik Gabriel Carrillo [Mon, 11 Mar 2019 16:13:09 +0000 (11:13 -0500)]
maintainers: claim responsibility for timer library

Add myself as co-maintainer for the timer library.

Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Acked-by: Robert Sanford <rsanford@akamai.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
5 years agoapp/test: fix sprintf with strlcat
Pallantla Poornima [Wed, 13 Mar 2019 11:07:23 +0000 (11:07 +0000)]
app/test: fix sprintf with strlcat

sprintf function is not secure as it doesn't check the length of string.
More secure function strlcat is used.

Fixes: 727909c592 ("app/test: introduce dynamic commands list")
Cc: stable@dpdk.org
Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
Reviewed-by: Aaron Conole <aconole@redhat.com>
5 years agotelemetry: fix mapping of statistics
Bruce Richardson [Thu, 28 Mar 2019 15:30:45 +0000 (15:30 +0000)]
telemetry: fix mapping of statistics

If we have two NIC ports which have a different set of NIC stats we can
end up having two different stats registered with xstats with the same
name. [Since the stats are updated in bulk as a contiguous set, the
second driver re-using the registration of the first is not possible.]

This causes issues with the invalid stat for one driver being found due to
a lookup by name which is unnecessary. Instead of getting stat names
involved do the lookup by ID instead.

Fixes: 1b756087db93 ("telemetry: add parser for client socket messages")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Kevin Laatz <kevin.laatz@intel.com>
5 years agoexamples/distributor: detect high frequency cores
David Hunt [Mon, 1 Apr 2019 16:14:41 +0000 (17:14 +0100)]
examples/distributor: detect high frequency cores

The distributor application is bottlenecked by the distributor core,
so if we can give more frequency to this core, then the overall
performance of the application may increase.

This patch uses the rte_power_get_capabilities() API to query the
cores provided in the core mask, and if any high frequency cores are
found (e.g. Turbo Boost is enabled), we will pin the distributor
workload to that core.

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agopower: add bit for high frequency cores
David Hunt [Mon, 1 Apr 2019 16:14:40 +0000 (17:14 +0100)]
power: add bit for high frequency cores

This patch adds a new bit in the capabilities mask that's returned by
rte_power_get_capabilities(), allowing application to query which cores
have the higher frequencies, and can then pin the workloads accordingly.

Returned Bits:
 0 - Turbo Boost enabled
 1 - Higher core base_frequency

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agopower: fix governor storage to trim newlines
David Hunt [Fri, 29 Mar 2019 16:39:20 +0000 (16:39 +0000)]
power: fix governor storage to trim newlines

Currently the Power Libray stores the governor name with an embedded
newline read from the scaling_governor sysfs file. This patch strips
it out.

Fixes: 445c6528b55f ("power: common interface for guest and host")
Cc: stable@dpdk.org
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
5 years agodevtools: allow test build outside source directory
Bruce Richardson [Mon, 1 Apr 2019 16:08:33 +0000 (17:08 +0100)]
devtools: allow test build outside source directory

The test-meson-builds.sh script correctly detects the source directory and
builds the native builds successfully in a directory outside of the source
tree. However, the paths to the cross-files are not prefixed with the
source directory path, so the cross-builds all fail. Fix this by prepending
the source directory path appropriately.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
5 years agobuild: fix meson build in CI environments
Ali Alnubani [Mon, 1 Apr 2019 15:38:59 +0000 (15:38 +0000)]
build: fix meson build in CI environments

This is to fix a build error with meson in GNU/Linux that is caused
by using the 'more' command to read the VERSION file. The error:

    config/meson.build:10:10: ERROR:  String
    '::::::::::::::\n<RTE_SDK_PATH>VERSION\n::::::::::::::\n19' cannot be
    converted to int

The command 'more' prints the file name before the actual
contents of the file when it's being run without a controlling terminal.
This could happen in CI environments.

Please refer to:
https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tree/text-utils/more.c

Fixes: c04172b5f031 ("build: add single source of DPDK version number")
Fixes: d320fe56bd51 ("build: use version number from config file")

Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
5 years agonet: add PPPoE ethertypes
Nemanja Marjanovic [Mon, 21 Jan 2019 11:11:24 +0000 (11:11 +0000)]
net: add PPPoE ethertypes

Add PPPoE ethertypes in to rte_ether.h.

Signed-off-by: Nemanja Marjanovic <nemanja.marjanovic@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
5 years agonet/softnic: support QinQ PPPoE encapsulation
Nemanja Marjanovic [Mon, 21 Jan 2019 11:11:23 +0000 (11:11 +0000)]
net/softnic: support QinQ PPPoE encapsulation

Add implementation of QinQ PPPoE packet encapsulation action.

Signed-off-by: Nemanja Marjanovic <nemanja.marjanovic@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
5 years agoexamples/ip_pipeline: support QinQ PPPoE encapsulation
Nemanja Marjanovic [Mon, 21 Jan 2019 11:11:22 +0000 (11:11 +0000)]
examples/ip_pipeline: support QinQ PPPoE encapsulation

Add implementation of QinQ PPPoE packet encapsulation action.

Signed-off-by: Nemanja Marjanovic <nemanja.marjanovic@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
5 years agopipeline: support QinQ PPPoE encapsulation
Nemanja Marjanovic [Mon, 21 Jan 2019 11:11:21 +0000 (11:11 +0000)]
pipeline: support QinQ PPPoE encapsulation

Add support of QinQ PPPoE packet encapsulation action.

Signed-off-by: Nemanja Marjanovic <nemanja.marjanovic@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
5 years agometer: fix divide by zero for RFC4115
Eelco Chaudron [Tue, 19 Mar 2019 12:10:44 +0000 (12:10 +0000)]
meter: fix divide by zero for RFC4115

RFC 4115 allows a meter with either cir and/or eir configured.
When only one is configured a divide by zero would occur.

Fixes: 655796d2b5fb ("meter: support RFC4115 trTCM")

Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
5 years agoapp/testpmd: make txonly mode generate multiple flows
Yongseok Koh [Thu, 28 Mar 2019 18:46:28 +0000 (11:46 -0700)]
app/testpmd: make txonly mode generate multiple flows

Testpmd can generate multiple flows without taking much cost and this
could be a simple traffic generator for developer's quick tests.
If "--txonly-multi-flow" is specified in the command line, IP source
address is varied to generate multiple flows.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
5 years agoapp/testpmd: verify MTU with device provided limits
Ian Stokes [Fri, 29 Mar 2019 17:52:19 +0000 (17:52 +0000)]
app/testpmd: verify MTU with device provided limits

This commit uses the MTU fields populated in rte_eth_dev_info_get()
to validate the MTU value being passed in port_mtu_set().

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/e1000: set min and max MTU
Ian Stokes [Fri, 29 Mar 2019 17:52:18 +0000 (17:52 +0000)]
net/e1000: set min and max MTU

This commit sets the min and max supported MTU values for igb devices
via the eth_igb_info_get() function. Min MTU supported is set to
ETHER_MIN_MTU and max MTU is calculated as the max packet length
supported minus the transport overhead. To aid in these calculations
a new MACRO 'E1000_ETH_OVERHEAD' has been introduced to consolidate
overhead calculation and avoid duplication.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/ixgbe: set min and max MTU for VF
Ian Stokes [Fri, 29 Mar 2019 17:52:17 +0000 (17:52 +0000)]
net/ixgbe: set min and max MTU for VF

This commit sets the min and max supported MTU values for ixgbe VF
devices via the ixgbevf_dev_set_mtu() function. Min MTU supported is
set to ETHER_MIN_MTU and max MTU is calculated as the max packet length
supported minus the transport overhead. As transport overhead is the
same for VF and PF ixgbe devices, reuse MACRO 'IXGBE_ETH_OVERHEAD' to
avoid duplication.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/ixgbe: set min and max MTU
Ian Stokes [Fri, 29 Mar 2019 17:52:16 +0000 (17:52 +0000)]
net/ixgbe: set min and max MTU

This commit sets the min and max supported MTU values for ixgbe devices
via the ixgbe_dev_info_get() function. Min MTU supported is set to
ETHER_MIN_MTU and max MTU is calculated as the max packet length
supported minus the transport overhead. To aid in these calculations
a new MACRO 'IXGBE_ETH_OVERHEAD' has been introduced to consolidate
overhead calculation and avoid duplication.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/i40e: set min and max MTU for VF
Ian Stokes [Fri, 29 Mar 2019 17:52:15 +0000 (17:52 +0000)]
net/i40e: set min and max MTU for VF

This commit sets the min and max supported MTU values for i40e VF
devices via the i40evf_dev_info_get() function. Min MTU supported
is set to ETHER_MIN_MTU and max MTU is calculated as the max packet
length supported minus the transport overhead.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/i40e: set min and max MTU
Ian Stokes [Fri, 29 Mar 2019 17:52:14 +0000 (17:52 +0000)]
net/i40e: set min and max MTU

This commit sets the min and max supported MTU values for i40e devices
via the i40e_dev_info_get() function. Min MTU supported is set to
ETHER_MIN_MTU and max mtu is calculated as the max packet length
supported minus the transport overhead.

Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agoethdev: add min/max MTU to device info
Stephen Hemminger [Fri, 29 Mar 2019 17:52:13 +0000 (17:52 +0000)]
ethdev: add min/max MTU to device info

This addresses the usability issue raised by OVS at DPDK Userspace
summit. It adds general min/max MTU into device info. For compatibility,
and to save space, it fits in a hole in existing structure.

The initial version sets max MTU to normal Ethernet, it is up to
PMD to set larger value if it supports Jumbo frames.

Also remove the deprecation notice introduced in 18.11 regarding this
change and bump ethdev ABI version.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
5 years agonet/ice: fix speed capability
Chenmin Sun [Fri, 29 Mar 2019 09:53:51 +0000 (17:53 +0800)]
net/ice: fix speed capability

Device speed capability should be specified based on different PHY types
instead of a fixed value, this patch fix the issue.

Fixes: 690175ee51bf ("net/ice: support getting device information")
Cc: stable@dpdk.org
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
5 years agonet/virtio: remove useless condition
Stephen Hemminger [Wed, 27 Mar 2019 21:08:43 +0000 (14:08 -0700)]
net/virtio: remove useless condition

Since previous test is for mtu < 1519 the next else if
is always true. This causes the lgtm static tool to complain.
Not a real issue, just cosmetic.

Fixes: 76d4c652e07d ("virtio: add extended stats")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Rami Rosen <ramirose@gmail.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/netvsc: remove useless condition
Stephen Hemminger [Wed, 27 Mar 2019 21:08:42 +0000 (14:08 -0700)]
net/netvsc: remove useless condition

Since previous test is for mtu < 1519 the next else if
is always true. This causes the lgtm static tool to complain.
Not a real issue, just cosmetic.

Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Acked-by: Rami Rosen <ramirose@gmail.com>
5 years agoraw/ifpga: modify log output
Andy Pei [Wed, 27 Mar 2019 01:32:57 +0000 (09:32 +0800)]
raw/ifpga: modify log output

Print function name in ifpga log and a new line goes after
every IFPGA log.

Fixes: ef1e8ede3da5 ("raw/ifpga: add Intel FPGA bus rawdev driver")
Cc: stable@dpdk.org
Signed-off-by: Andy Pei <andy.pei@intel.com>
Reviewed-by: Rosen Xu <rosen.xu@intel.com>
5 years agonet/mlx5: add source vport match to the ingress rules
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:47 +0000 (13:15 +0000)]
net/mlx5: add source vport match to the ingress rules

For E-Switch configurations over multiport Infiniband devices
we should add source vport match to correctly distribute
traffic between representors.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: update event handler for multiport IB devices
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:46 +0000 (13:15 +0000)]
net/mlx5: update event handler for multiport IB devices

This patch modifies asynchronous event handler to support multiport
Infiniband devices. Handler queries the event parameters, including
event source port index, and invokes the handler for specific
devices with appropriate port_id.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: update install/uninstall event handlers
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:45 +0000 (13:15 +0000)]
net/mlx5: update install/uninstall event handlers

We are implementing the support for multiport Infiniband device
with representors attached to these multiple ports. Asynchronous
device event notifications (link status change, removal event, etc.)
should be shared between ports. We are going to implement shared
event handler and this patch introduces appropriate device
structure changes and updated event handler install and uninstall
routines.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: provide IB port for the object being created
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:44 +0000 (13:15 +0000)]
net/mlx5: provide IB port for the object being created

The code is updated to provide IB port index for the Verbs
objects being created - QPs and Verbs Flows.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: switch to the shared IB device context
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:43 +0000 (13:15 +0000)]
net/mlx5: switch to the shared IB device context

The code is updated to use the shared IB device context and
device handles. The IB device context is shared between
reprentors created over the single multiport IB device. All
Verbs and DevX objects will be created within this shared context.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: switch to the shared context IB attributes
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:42 +0000 (13:15 +0000)]
net/mlx5: switch to the shared context IB attributes

The code is updated to use the shared IB device attributes,
located in the shared IB context. It saves some memory if
there are representors created over the single Infiniband
device with multiple ports.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: switch to the shared protection domain
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:41 +0000 (13:15 +0000)]
net/mlx5: switch to the shared protection domain

The PMD code is updated to use Protected Domain from the
shared IB device context. The Domain is shared between
all devices belonging to the same multiport Infiniband device.
If IB device has only one port, the PD is not shared, because
there is only ethernet device created over IB one.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: switch to the names in the shared IB context
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:40 +0000 (13:15 +0000)]
net/mlx5: switch to the names in the shared IB context

The IB device names are moved from device private data
to the shared context, code involving the names is updated.
The IB port index treatment is added where it is relevant.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: add IB shared context alloc/free functions
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:39 +0000 (13:15 +0000)]
net/mlx5: add IB shared context alloc/free functions

The Mellanox NICs support SR-IOV and have E-Switch feature.
When SR-IOV is set up in switchdev mode and E-Switch is enabled
we have so called VF representors in the system. All representors
belonging to the same E-Switch are created on the basis of the
single PCI function and with current implementation each representor
has its own dedicated Infiniband device and operates within its
own Infiniband context. It is proposed to provide representors
as ports of the single Infiniband device and operate on the
shared Infiniband context saving various resources. This patch
introduces appropriate structures.

Also the functions to allocate and free shared IB context for
multiport are added. The IB device context, Protection Domain,
device attributes, Infiniband names are going to be relocated
to the shared structure from the device private one.
mlx5_dev_spawn() is updated to support shared context.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: support multiport IB device during probing
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:38 +0000 (13:15 +0000)]
net/mlx5: support multiport IB device during probing

mlx5_pci_probe() routine is refactored to probe the ports
of found Infiniband devices. All active ports (with attached
network interface), belonging to the same Infiniband device
will use the single shared Infiniband context of that device.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: add getting IB ports number for multiport IB
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:37 +0000 (13:15 +0000)]
net/mlx5: add getting IB ports number for multiport IB

There is the routine mlx5_nl_portnum() added to get
the number of ports of multiport Infiniband device.
It is assumed the Uplink/VF representors are attached
on these ports.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: modify get ifindex routine for multiport IB
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:36 +0000 (13:15 +0000)]
net/mlx5: modify get ifindex routine for multiport IB

There is the routine mlx5_nl_ifindex() returning the
network interface index associated with Infiniband device.
We are going to support multiport IB devices, now function
takes the IB port as argument and returns ifindex associated
with tuple <IB device, IB port>

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agonet/mlx5: add representor recognition on Linux 5.x
Viacheslav Ovsiienko [Wed, 27 Mar 2019 13:15:35 +0000 (13:15 +0000)]
net/mlx5: add representor recognition on Linux 5.x

The master device and VF representors were distinguished by
presence of port name, master device did not have one. The new Linux
kernels starting from 5.0 provide the port name for master device
and the implemented representor recognizing method does not work.
The new recognizing method is based on querying the VF number,
has been created on the base of the device.

The IFLA_NUM_VF attribute is returned by kernel if IFLA_EXT_MASK
attribute is specified in the Netlink request message.

Also the presence check of device symlink in device sysfs folder
is added to distinguish representors with sysfs based method.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
5 years agovhost/crypto: fix parens
Fan Zhang [Mon, 25 Mar 2019 14:37:31 +0000 (14:37 +0000)]
vhost/crypto: fix parens

Coverity issue: 277214, 277220, 277233, 277236
Fixes: cd1e8f03abf0 ("vhost/crypto: fix packet copy in chaining mode")
Cc: stable@dpdk.org
Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio: define avail and used flags as constants
Tiwei Bie [Mon, 25 Mar 2019 05:27:16 +0000 (13:27 +0800)]
net/virtio: define avail and used flags as constants

We are consistently passing 1 as the argument in the data path,
so there is no need to define avail/used flags as function-like
macros anymore. This patch changes the avail and used flags to
constants. And a frequently used combination is also introduced.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
5 years agonet/virtio-user: fix multi-process support
Tiwei Bie [Mon, 25 Mar 2019 04:12:15 +0000 (12:12 +0800)]
net/virtio-user: fix multi-process support

This patch fixes the multi-process support for virtio-user.
Currently virtio-user just provides some limited secondary
process supports. Only some basic operations can be done in
secondary process on virtio-user port, e.g. getting port stats.
Actions which will trigger the communication with vhost backend
can't be done in secondary process for now, as the fds are
not synced between processes. The processing of server mode
devargs is also moved into virtio_user_dev_init().

Fixes: cdb068f031c6 ("bus/vdev: scan by multi-process channel")
Fixes: ee27edbe0c10 ("drivers/net: share vdev data to secondary process")
Cc: stable@dpdk.org
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>