dpdk.git
7 years agocrypto/scheduler: add packet size based mode
Fan Zhang [Thu, 30 Mar 2017 10:47:14 +0000 (11:47 +0100)]
crypto/scheduler: add packet size based mode

Packet-size based distribution mode is a scheduling mode works with 2
slaves, primary slave and secondary slave, and distribute the enqueued
crypto ops to them based on their data lengths. A crypto op will be
distributed to the primary slave if its data length equals or bigger
than the designated threshold, otherwise it will be handled by the
secondary slave.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agoapp/crypto-perf: reorg options structure
Pablo de Lara [Mon, 27 Mar 2017 11:26:06 +0000 (12:26 +0100)]
app/crypto-perf: reorg options structure

Reorganize options structure, to have all the parameters
used in a single run in the first bytes of the structure,
so all fit in a single cache line.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: add extra option checks
Pablo de Lara [Mon, 27 Mar 2017 11:26:05 +0000 (12:26 +0100)]
app/crypto-perf: add extra option checks

When using the verify test, test name is necessary
to be passed when digest is needed.

Also, when using an block cipher algorithm (CBC, ECB),
the buffer size has to be aligned to the block size.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: add range/list of sizes
Pablo de Lara [Mon, 27 Mar 2017 11:26:04 +0000 (12:26 +0100)]
app/crypto-perf: add range/list of sizes

So far, the crypto performance application was only able to
test one buffer size and one burst size.

With this commit, multiple sizes can be passed, either as a range
of values or as a list of values.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: display results in test runner
Pablo de Lara [Mon, 27 Mar 2017 11:26:03 +0000 (12:26 +0100)]
app/crypto-perf: display results in test runner

Instead of printing the test results in the destructor
function, print them just after each run.
This will be useful for after the commit that allows
a range of buffer and burst sizes.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: do not append digest if not used
Pablo de Lara [Mon, 27 Mar 2017 11:26:02 +0000 (12:26 +0100)]
app/crypto-perf: do not append digest if not used

When testing cipher only operations, there is no need to append digest
at the end of the buffer.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: move verify as single test type
Sergio Gonzalez Monroy [Mon, 27 Mar 2017 11:26:01 +0000 (12:26 +0100)]
app/crypto-perf: move verify as single test type

In order to simplify throughput and latency tests,
verify option has been removed from these and moved
as a separate test.

Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/crypto-perf: fix AES CBC 128 test vectors
Pablo de Lara [Mon, 27 Mar 2017 11:26:00 +0000 (12:26 +0100)]
app/crypto-perf: fix AES CBC 128 test vectors

Ciphertext and digests for different buffer sizes
were incorrect.

Fixes: 5f1d85c5a8ab ("app/crypto-perf: add test vectors files")
Cc: stable@dpdk.org
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: remove unused file
Pablo de Lara [Mon, 27 Mar 2017 11:25:59 +0000 (12:25 +0100)]
app/crypto-perf: remove unused file

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoapp/crypto-perf: remove cyclecount test type
Pablo de Lara [Mon, 27 Mar 2017 11:25:58 +0000 (12:25 +0100)]
app/crypto-perf: remove cyclecount test type

Cyclecount test was not implemented, so it is removed.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agoexamples/ipsec-secgw: attach session-qp
Akhil Goyal [Fri, 24 Mar 2017 09:29:21 +0000 (14:59 +0530)]
examples/ipsec-secgw: attach session-qp

adding support for attaching session to queue pairs.
This is required as underlying crypto driver may only
support limited number of sessions per queue pair
if max_nb_sessions_per_qp > 0, session should be
attached to a particular qp.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
7 years agocryptodev: add API to associate session with queue pair
Akhil Goyal [Fri, 24 Mar 2017 09:29:20 +0000 (14:59 +0530)]
cryptodev: add API to associate session with queue pair

HW based crypto drivers may only support limited number of
sessions per queue pair. This requires support for attaching
sessions to specific queue pair.  New APIs  are introduced to
attach/detach a session with/from a particular queue pair.
These are optional APIs.

Application can call attach API after creating a session
and can call detach API before deleting a session.

Application needs to check if max_nb_sessions_per_qp > 0,
then it should call the attach API.

max_nb_sessions_per_qp = 0 means infinite sessions per qp

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
7 years agoexamples/dpdk-qat: remove app
Pablo de Lara [Fri, 3 Mar 2017 16:10:49 +0000 (16:10 +0000)]
examples/dpdk-qat: remove app

Remove DPDK QAT sample app, in favour of the newer applications
that use the cryptodev library: ipsec-gw and l2fwd-crypto,
which has support for Intel QuickAssist devices.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agocrypto/scheduler: improve slave configuration
Fan Zhang [Fri, 17 Feb 2017 12:01:01 +0000 (12:01 +0000)]
crypto/scheduler: improve slave configuration

Since the new device configuration API is updated, we can make use of
this feature to the crypto scheduler PMD to configure its slaves
automatically with the same configurations it got. As originally the
slaves have to be manually configured one by one, this patch should
help reducing the coding complexity.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agocryptodev: change device configuration API
Fan Zhang [Fri, 17 Feb 2017 12:01:00 +0000 (12:01 +0000)]
cryptodev: change device configuration API

This patch changes the device configuration API for rte_cryptodev_ops
function prototype, and update all cryptodev PMDs for this change.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agodoc: reformat crypto drivers overview
Pablo de Lara [Thu, 23 Mar 2017 11:38:55 +0000 (11:38 +0000)]
doc: reformat crypto drivers overview

Follow the approach in the network devices overview,
for the feature matrix, so it improves readibility
and maintainability.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: add missing supported crypto algos
Pablo de Lara [Wed, 22 Mar 2017 16:15:57 +0000 (16:15 +0000)]
doc: add missing supported crypto algos

AESNI MB supports MD5 and AES XCBC, but it wasn't reflected
in the driver documentation.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agocrypto/scheduler: optimize crypto op ordering
Fan Zhang [Thu, 2 Mar 2017 14:18:34 +0000 (14:18 +0000)]
crypto/scheduler: optimize crypto op ordering

This patch optimizes the crypto op ordering by replacing the
ordering method from using rte_reorder library to using rte_ring
to avoid unnecessary crypto op storing and recovering cost.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agocrypto/scheduler: change enqueue and dequeue functions
Fan Zhang [Thu, 2 Mar 2017 11:12:11 +0000 (11:12 +0000)]
crypto/scheduler: change enqueue and dequeue functions

This patch changes the enqueue and dequeue methods to cryptodev
scheduler PMD. Originally a 2-layer function call is carried out
upon enqueuing or dequeuing a burst of crypto ops. This patch
removes one layer to improve the performance.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agoapp/crypto-perf: fix uninitialized values for null ops
Tomasz Kulasek [Fri, 24 Feb 2017 15:26:00 +0000 (16:26 +0100)]
app/crypto-perf: fix uninitialized values for null ops

Some values are uninitialized for "cipher null" and "auth null"
operations. It may cause unpredictable results for some crypto pmd
drivers, or even segmentation fault.

This patch sets values for null operations to zero.

Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/crypto-perf: avoid wrong operation type for AEAD algos
Daniel Mrzyglod [Wed, 8 Mar 2017 17:03:25 +0000 (18:03 +0100)]
app/crypto-perf: avoid wrong operation type for AEAD algos

When somebody use bad --optype with aead algorithms
segmentation fault could happen.

Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/crypto-perf: fix invalid latency for QAT
Slawomir Mrozowicz [Thu, 16 Feb 2017 15:51:08 +0000 (16:51 +0100)]
app/crypto-perf: fix invalid latency for QAT

Fixes invalid latency result when using the performance application and
hardware QAT PMD. It occurred when the number of processed packets was
higher then the size of the internal QAT PMD ring buffer and the buffer
was overflowed.
Fixed by correcting the registration of the enqueued packets and freeing
memory space for not enqueued packets.

Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test application")

Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agocryptodev: enable BPI for Cablelabs DOCSIS security spec
Pablo de Lara [Thu, 23 Feb 2017 14:02:55 +0000 (14:02 +0000)]
cryptodev: enable BPI for Cablelabs DOCSIS security spec

Extend the DPDK cryptodev API to enable processing of packets according
to the Baseline Privacy Interface Plus (BPI+) Specification described in
the security specification of the Cablelabs Data-over-Cable Service
Interface Specification (DOCSIS).

Brief summary of BPI+ symmetric cryptography requirements:
BPI+ cryptography uses a block cipher (AES-CBC/DES-CBC) to encrypt/decrypt
all the whole blocks in the packet. However the data length is not always
a block-multiple, so where there is a final block less than the full block
size this residual block requires special handling using AES-CFB/DES-CFB
mode. Similar special handling is specified where there is only one block,
smaller than the block size for the cipher. See spec for further details.
https://apps.cablelabs.com/specification/docsis-3-1-security-specification/

Two new elements are added to the enum rte_crypto_cipher_algorithm.
Note elements of this enum are actually a combination of an algorithm (AES,
3DES, etc) and mode (CBC, CTR, etc). The new DOCSISBPI mode is used to
convey to the PMD that the mode applied should be the specific combination
of CBC and CFB required by the DOCSIS Baseline Privacy Plus Spec.

Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Deepak Kumar Jain <deepak.k.jain@intel.com>
7 years agoexamples/l2fwd-crypto: use cryptodev algorithm parser
Pablo de Lara [Mon, 27 Feb 2017 14:38:46 +0000 (14:38 +0000)]
examples/l2fwd-crypto: use cryptodev algorithm parser

L2fwd-crypto app was creating an array of strings for the
supported algorithms, which was different from the strings
that are now in cryptodev.

Use the new API in cryptodev to parse the string from the user,
to get the algorithm enum, instead, so it is not necessary to add
a new supported algorithm in the cryptodev library and this app.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agoapp/crypto-perf: use cryptodev algorithm parser
Pablo de Lara [Mon, 27 Feb 2017 14:38:45 +0000 (14:38 +0000)]
app/crypto-perf: use cryptodev algorithm parser

Instead of going through the array of supported algorithms
in the app, to get the algorithm enum, use the new API in
cryptodev to parse this string, so it is not necessary to add
a new supported algorithm in the cryptodev library and this app.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agocryptodev: add algorithm string parsers
Pablo de Lara [Mon, 27 Feb 2017 14:38:44 +0000 (14:38 +0000)]
cryptodev: add algorithm string parsers

Adds functions to get the cipher/authentication
algorithm enums, given a string. This is useful for applications
which gets the algorithm required from the user, to have a common
string-enum mapping.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agocryptodev: add missing algorithm strings
Pablo de Lara [Mon, 27 Feb 2017 14:38:43 +0000 (14:38 +0000)]
cryptodev: add missing algorithm strings

DES-CBC and AUTH NULL algorithms were missing in
the array of algorithm strings.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agotest/eventdev: fix build with crypto disabled
Olivier Matz [Thu, 6 Apr 2017 14:13:37 +0000 (16:13 +0200)]
test/eventdev: fix build with crypto disabled

There is a compilation error in the following case:

  make config T=x86_64-native-linuxapp-gcc
  sed -i 's,CONFIG_RTE_LIBRTE_CRYPTODEV=y,CONFIG_RTE_LIBRTE_CRYPTODEV=n,' \
    build/.config
  sed -i 's,CONFIG_RTE_APP_CRYPTO_PERF=y,CONFIG_RTE_APP_CRYPTO_PERF=n,' \
    build/.config
  make -j4
  make -j4 test-build

  test_eventdev.c:39:27: fatal error:
  rte_cryptodev.h: No such file or directory
  #include <rte_cryptodev.h>
                           ^

Removing the include induces a new error, (missing declaration of
rte_eal_vdev_init()), which is fixed by including rte_dev.h.

Fixes: f8f9d233ea0e ("test/eventdev: add unit tests")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoring: fix C++ cast error
Ed Czeck [Thu, 6 Apr 2017 13:59:47 +0000 (09:59 -0400)]
ring: fix C++ cast error

build error:
include/rte_ring.h:459:22: error: invalid conversion from ‘void*’
to ‘void**’ [-fpermissive]
  ENQUEUE_PTRS(r, &r[1], prod_head, obj_table, n, void *);

Implicit casts of void* to void** are considered warnings in some
compilers.  E.g. g++ version 5.8.  Cast directly to object types

Fixes: a6619414 ("ring: make struct and macros type agnostic")

Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agomk: fix lib filtering when linking app
Olivier Matz [Thu, 6 Apr 2017 14:14:55 +0000 (16:14 +0200)]
mk: fix lib filtering when linking app

I get the following error when linking the test application:
  build/lib/librte_pmd_thunderx_nicvf.a(nicvf_hw.o):
  In function `nicvf_qsize_regbit':
  drivers/net/thunderx/base/nicvf_hw.c:451: undefined reference to `log2'
  build/lib/librte_pmd_thunderx_nicvf.a(nicvf_hw.o):
  In function `nicvf_rss_reta_update':
  drivers/net/thunderx/base/nicvf_hw.c:804: undefined reference to `log2'
  build/lib/librte_pmd_thunderx_nicvf.a(nicvf_hw.o):
  In function `nicvf_rss_reta_query':
  drivers/net/thunderx/base/nicvf_hw.c:825: undefined reference to `log2'

While I don't know why it does not happen for a default build, the error
can be explained. The link command line is:

   gcc -o test ... *.o ... -Wl,-lm ... -Wl,-lrte_pmd_thunderx_nicvf ...

rte_pmd_thunderx_nicvf needs the math library, and it should be
added after. This is not the case because the test application also
adds the math library.

The makefile already filters the libraries, but it keeps the first
occurrence of the lib. Instead, the last one should be kept.

Fixes: edf4d331dcdb ("mk: eliminate duplicates from libraries list")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
7 years agomk: fix shell errors when building with clang
Olivier Matz [Thu, 6 Apr 2017 14:12:41 +0000 (16:12 +0200)]
mk: fix shell errors when building with clang

On my system, the version of the compiler is not properly retrieved,
resulting in strange logs when building the dpdk:
  /bin/sh: line 0: test: too many arguments

This happens when mk/toolchain/clang/rte.toolchain-compat.mk is included
from a directory that use gcc to build (ex: kernel modules). In that
case, the CLANG_VERSION variable contains spaces that breaks some shell
calls to the test program.

The error is because the output of "gcc -v" on my system contains 2 lines
that matches the "version" string:

  Configured with: ../src/configure -v \
    --with-pkgversion='Debian 6.3.0-6' [...]
  gcc version 6.3.0 20170205 (Debian 6.3.0-6)

This may be specific to Debian. Fix it by specializing the grep.

Fixes: 2ef6eea891e5 ("mk: add clang toolchain")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
7 years agomk: build examples list before each doxygen run
Thomas Monjalon [Thu, 6 Apr 2017 10:44:33 +0000 (12:44 +0200)]
mk: build examples list before each doxygen run

The file examples.dox was not re-generated when a file
is added or removed from examples/.
It is now removed on clean operation.
The ordering of operations (clean before generation) is also
better defined.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
7 years agonet/tap: fix max queues redefinition
Pascal Mazon [Thu, 6 Apr 2017 14:18:04 +0000 (16:18 +0200)]
net/tap: fix max queues redefinition

The macro RTE_PMD_TAP_MAX_QUEUES was defined twice.
On machines with kernel < 3.8, IFF_MULTI_QUEUE didn't exist, and thus
both definitions used different values.

Fixes: cf5643661161 ("net/tap: move private elements to external header")

Signed-off-by: Pascal Mazon <pascal.mazon@6wind.com>
7 years agonet/mlx5: fix an uninitialized variable
Nelio Laranjeiro [Thu, 6 Apr 2017 09:16:32 +0000 (11:16 +0200)]
net/mlx5: fix an uninitialized variable

Since patch "mbuf: structure reorganization" the compiler complains
sometimes (in some conditions):

 .../drivers/net/mlx5/mlx5_rxtx.c: In function ‘mlx5_rx_burst’:
 .../drivers/net/mlx5/mlx5_rxtx.c:2082:17: error: ‘len’ may be used
uninitialized in this function [-Werror=maybe-uninitialized]

len is not initialised as it will be at the first segment of a received
packet, but it remains hard for the compiler to determine it.

Fixes: 9964b965ad69 ("net/mlx5: re-add Rx scatter support")
Cc: stable@dpdk.org
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoethdev: fix missing function in version map file
Bruce Richardson [Thu, 6 Apr 2017 10:18:21 +0000 (11:18 +0100)]
ethdev: fix missing function in version map file

The function rte_eth_find_next is missing in the map file, which causes
errors with shared library builds.

  .../test-pmd/testpmd.c:1693: undefined reference to `rte_eth_find_next'

Adding function to map file fixes the issue.

Fixes: 5588909af21b ("ethdev: add device iterator")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agomaintainers: handoff ownership of Tap PMD
Keith Wiles [Thu, 30 Mar 2017 16:05:31 +0000 (11:05 -0500)]
maintainers: handoff ownership of Tap PMD

Pascal has added many features to the Tap PMD and the code
is now mostly his code. We talked and he suggested I send
the patch to change ownership.

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
7 years agomaintainers: update for vmxnet3
Shrikrishna Khare [Wed, 8 Mar 2017 02:42:05 +0000 (18:42 -0800)]
maintainers: update for vmxnet3

Taking over DPDK vmxnet3 driver maintainer role.

Signed-off-by: Shrikrishna Khare <skhare@vmware.com>
Acked-by: Yong Wang <yongwang@vmware.com>
7 years agotest: add CRC computation
Jasvinder Singh [Wed, 5 Apr 2017 20:49:50 +0000 (21:49 +0100)]
test: add CRC computation

This patch provides a set of tests for verifying the functional
correctness of 16-bit and 32-bit CRC APIs.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agonet: add CRC computation API
Jasvinder Singh [Wed, 5 Apr 2017 20:49:49 +0000 (21:49 +0100)]
net: add CRC computation API

APIs for selecting the architecure specific implementation and computing
the crc (16-bit and 32-bit CRCs) are added. For CRCs calculation, scalar
as well as x86 intrinsic(sse4.2) versions are implemented.

The scalar version is based on generic Look-Up Table(LUT) algorithm,
while x86 intrinsic version uses carry-less multiplication for
fast CRC computation.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
7 years agoapp/testpmd: use ethdev iterator to list devices
Gaetan Rivet [Fri, 31 Mar 2017 12:04:39 +0000 (14:04 +0200)]
app/testpmd: use ethdev iterator to list devices

This commit replaces redundant code with public ethdev layer calls.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoethdev: add device iterator
Gaetan Rivet [Fri, 31 Mar 2017 12:04:38 +0000 (14:04 +0200)]
ethdev: add device iterator

This iterator helps applications iterate over the device list and skip
holes caused by invalid or detached devices.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoethdev: expose device states
Gaetan Rivet [Fri, 31 Mar 2017 12:04:37 +0000 (14:04 +0200)]
ethdev: expose device states

The hotplug API introduced multiple states for a device with possible
values defined internally, while the related field in struct rte_eth_dev
was made public.

Exposing those states improves consistency because applications have to
deal with the device list directly.

"DEV_DETACHED" is renamed "RTE_ETH_DEV_UNUSED" to better reflect that
the emptiness of a slot is not necessarily the result of detaching a
device.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoevent/sw: fix build with icc
Ferruh Yigit [Wed, 5 Apr 2017 15:32:10 +0000 (16:32 +0100)]
event/sw: fix build with icc

build error:
.../drivers/event/sw/sw_evdev_scheduler.c(379):
error #300: const variable "dummy_rob" requires an initializer
        static const struct reorder_buffer_entry dummy_rob;
                                                          ^

Variable "dummy_rob" defined as const but already cast to another
pointer and its content updated. Remove const qualifier from variable.

Fixes: 617995dfc5b2 ("event/sw: add scheduling logic")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoevent/octeontx: fix build with icc
Ferruh Yigit [Wed, 5 Apr 2017 15:32:09 +0000 (16:32 +0100)]
event/octeontx: fix build with icc

build error:
.../drivers/event/octeontx/ssovf_worker.c(212):
error #592: variable "get_work0" is used before its value is set
        RTE_SET_USED(get_work0);
        ^

.../drivers/event/octeontx/ssovf_worker.c(213):
error #592: variable "get_work1" is used before its value is set
        RTE_SET_USED(get_work1);
        ^
For x86 these variables set but not used, move macros below
where values assigned.

Fixes: f61808eaa9ad ("event/octeontx: add start function")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoring: fix build with icc
Ferruh Yigit [Wed, 5 Apr 2017 15:03:12 +0000 (16:03 +0100)]
ring: fix build with icc

build error:
In file included from .../lib/librte_ring/rte_ring.c(90):
.../lib/librte_ring/rte_ring.h(162):
error #1366: a reduction in alignment without the "packed" attribute
is ignored
  } __rte_cache_aligned;
      ^

Alignment attribute moved to first element of the struct

Fixes: a6619414e0a9 ("ring: make struct and macros type agnostic")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agoapp/testpmd: add latency statistics calculation
Reshma Pattan [Thu, 30 Mar 2017 21:01:02 +0000 (22:01 +0100)]
app/testpmd: add latency statistics calculation

This patch adds latency stats commandline argument to testpmd,
allowing to specify the lcore to use for latencystats updates.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agolatency: added new library for latency stats
Reshma Pattan [Thu, 30 Mar 2017 21:01:01 +0000 (22:01 +0100)]
latency: added new library for latency stats

Add a library designed to calculate latency statistics and report them
to the application when queried. The library measures minimum, average and
maximum latencies, and jitter in nano seconds. The current implementation
supports global latency stats, i.e. per application stats.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agoapp/testpmd: add bitrate statistics calculation
Remy Horton [Thu, 30 Mar 2017 21:01:00 +0000 (22:01 +0100)]
app/testpmd: add bitrate statistics calculation

Calculate bitrate statistics using the bitrate stats library. The
resulting statistics can be viewed via proc_info.

Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agobitrate: add bitrate statistics library
Remy Horton [Thu, 30 Mar 2017 21:00:59 +0000 (22:00 +0100)]
bitrate: add bitrate statistics library

This patch adds a library that calculates peak and average data-rate
statistics. For ethernet devices. These statistics are reported using
the metrics library.

Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agoapp/proc_info: add metrics displaying
Reshma Pattan [Thu, 30 Mar 2017 21:00:58 +0000 (22:00 +0100)]
app/proc_info: add metrics displaying

Modify the dpdk-procinfo process to display the newly added metrics.
Added new command line option "--metrics" to display metrics.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agometrics: add information metrics library
Remy Horton [Thu, 30 Mar 2017 21:00:57 +0000 (22:00 +0100)]
metrics: add information metrics library

This patch adds a new information metrics library. This Metrics
library implements a mechanism by which producers can publish
numeric information for later querying by consumers. Metrics
themselves are statistics that are not generated by PMDs, and
hence are not reported via ethdev extended statistics.

Metric information is populated using a push model, where
producers update the values contained within the metric
library by calling an update function on the relevant metrics.
Consumers receive metric information by querying the central
metric data, which is held in shared memory.

Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agodoc: add missing step in PVP reference benchmark howto
Jens Freimann [Wed, 5 Apr 2017 12:28:33 +0000 (14:28 +0200)]
doc: add missing step in PVP reference benchmark howto

After we configure QEMU we also need to call 'make' to build the binary.
This step is currently missing in the description and this patch fixes
it.

Signed-off-by: Jens Freimann <jfreiman@redhat.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: remove old deprecation notices
Thomas Monjalon [Wed, 5 Apr 2017 12:18:01 +0000 (14:18 +0200)]
doc: remove old deprecation notices

The ring and distributor reworks are done.

Fixes: a6619414e0a9 ("ring: make struct and macros type agnostic")
Fixes: 775003ad2f96 ("distributor: add new burst-capable library")

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agoapp/testpmd: add command to show/clear VF stats
Qi Zhang [Tue, 4 Apr 2017 02:33:08 +0000 (22:33 -0400)]
app/testpmd: add command to show/clear VF stats

Add two commands to show/clear VF stats
show vf stats <port_id> <vf_id>
clear vf stats <port_id> <vf_id>

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agonet/i40e: use dynamic log type for control logs
Olivier Matz [Tue, 4 Apr 2017 16:40:40 +0000 (18:40 +0200)]
net/i40e: use dynamic log type for control logs

This is an example of how a dynamic log type can be used in a
PMD.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoapp/testpmd: new command to dump log types
Olivier Matz [Tue, 4 Apr 2017 16:40:39 +0000 (18:40 +0200)]
app/testpmd: new command to dump log types

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoapp/test: new command to dump log types
Olivier Matz [Tue, 4 Apr 2017 16:40:38 +0000 (18:40 +0200)]
app/test: new command to dump log types

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoeal: deprecate log functions
Olivier Matz [Tue, 4 Apr 2017 16:40:37 +0000 (18:40 +0200)]
eal: deprecate log functions

Deprecate the following functions:
- rte_set_log_level(), replaced by rte_log_set_global_level()
- rte_get_log_level(), replaced by rte_log_get_global_level()
- rte_set_log_type(), replaced by rte_log_set_level()
- rte_get_log_type(), replaced by rte_log_get_level()

The new functions provide a better control of the per-type log level,
and have a better name prefix (rte_log_).

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoeal: change specific log levels at startup
Olivier Matz [Tue, 4 Apr 2017 16:40:36 +0000 (18:40 +0200)]
eal: change specific log levels at startup

Example of use:
  ./app/test-pmd --log-level='pmd\.i40e.*,8'

  This enables debug logs for all dynamic logs whose type starts with
  'pmd.i40e'.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoeal: change several log levels matching a regexp
Olivier Matz [Tue, 4 Apr 2017 16:40:35 +0000 (18:40 +0200)]
eal: change several log levels matching a regexp

Introduce a function to set the log level of several log types that
match a regular expression.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoeal: dump registered log types
Olivier Matz [Tue, 4 Apr 2017 16:40:34 +0000 (18:40 +0200)]
eal: dump registered log types

Introduce a function to dump the global level and the registered log
types.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoeal: support dynamic log types
Olivier Matz [Tue, 4 Apr 2017 16:40:33 +0000 (18:40 +0200)]
eal: support dynamic log types

Introduce 2 new functions to support dynamic log types:

- rte_log_register(): register a log name, and return a log type id
- rte_log_set_level(): set the log level of a given log type

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: bump library version
Olivier Matz [Wed, 5 Apr 2017 10:00:53 +0000 (12:00 +0200)]
mbuf: bump library version

The reorganization of the mbuf structure induces an ABI breakage.
Bump the library version, and update the documentation accordingly.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: add a timestamp field
Olivier Matz [Tue, 4 Apr 2017 16:28:07 +0000 (18:28 +0200)]
mbuf: add a timestamp field

The field itself is not fully described yet, but this commit reserves
the room in the mbuf.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: move sequence number in second cache line
Olivier Matz [Tue, 4 Apr 2017 16:28:06 +0000 (18:28 +0200)]
mbuf: move sequence number in second cache line

Move this field in the second cache line, since no driver use it
in Rx path. The freed space will be used by a timestamp in next
commit.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: use 2 bytes for port and nb segments
Olivier Matz [Tue, 4 Apr 2017 16:28:05 +0000 (18:28 +0200)]
mbuf: use 2 bytes for port and nb segments

Change the size of m->port and m->nb_segs to 16 bits. It is now possible
to reference a port identifier larger than 256 and have a mbuf chain
larger than 256 segments.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: make rearm data address naturally aligned
Jerin Jacob [Tue, 4 Apr 2017 16:28:04 +0000 (18:28 +0200)]
mbuf: make rearm data address naturally aligned

To avoid multiple stores on fast path, Ethernet drivers
aggregate the writes to data_off, refcnt, nb_segs and port
to an uint64_t data and write the data in one shot
with uint64_t* at &mbuf->rearm_data address.

Some of the non-IA platforms have store operation overhead
if the store address is not naturally aligned.This patch
fixes the performance issue on those targets.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agodrivers/net: do not touch mbuf next or nb segs on Rx
Olivier Matz [Tue, 4 Apr 2017 16:28:03 +0000 (18:28 +0200)]
drivers/net: do not touch mbuf next or nb segs on Rx

Now that the m->next pointer and m->nb_segs is expected to be set (to
NULL and 1 respectively) after a mempool_get(), we can avoid to write them
in the Rx functions of drivers.

Only some drivers are patched, it's not an exhaustive patch. It gives
the idea to do the same in other drivers.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: set mbuf fields while in pool
Olivier Matz [Tue, 4 Apr 2017 16:28:02 +0000 (18:28 +0200)]
mbuf: set mbuf fields while in pool

Set the value of m->refcnt to 1, m->nb_segs to 1 and m->next
to NULL when the mbuf is stored inside the mempool (unused).
This is done in rte_pktmbuf_prefree_seg(), before freeing or
recycling a mbuf.

Before this patch, the value of m->refcnt was expected to be 0
while in pool.

The objectives are:

- to avoid drivers to set m->next to NULL in the early Rx path, since
  this field is in the second 64B of the mbuf and its access could
  trigger a cache miss

- rationalize the behavior of raw_alloc/raw_free: one is now the
  symmetric of the other, and refcnt is never changed in these functions.

To optimize the freeing of the segments, we try try to only update
m->refcnt, m->next, and m->nb_segs when it's required (idea from
Konstantin Ananyev <konstantin.ananyev@intel.com>).

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: make raw free function public
Olivier Matz [Tue, 4 Apr 2017 16:28:01 +0000 (18:28 +0200)]
mbuf: make raw free function public

Rename __rte_mbuf_raw_free() as rte_mbuf_raw_free() and make
it public. The old function is kept for compat but is marked as
deprecated.

The next commit changes the behavior of rte_mbuf_raw_free() to
make it more consistent with rte_mbuf_raw_alloc().

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agombuf: make segment prefree function public
Olivier Matz [Tue, 4 Apr 2017 16:28:00 +0000 (18:28 +0200)]
mbuf: make segment prefree function public

Document the function and make it public, since it is used at several
places in the drivers. The old one is marked as deprecated.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agodoc: add Cavium OCTEONTX eventdev PMD to release notes
Jerin Jacob [Fri, 31 Mar 2017 15:00:41 +0000 (20:30 +0530)]
doc: add Cavium OCTEONTX eventdev PMD to release notes

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agodoc: add OCTEONTX ssovf details
Jerin Jacob [Fri, 3 Mar 2017 17:28:21 +0000 (22:58 +0530)]
doc: add OCTEONTX ssovf details

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agotest/eventdev: add remaining tests based on existing helpers
Jerin Jacob [Fri, 3 Mar 2017 17:28:20 +0000 (22:58 +0530)]
test/eventdev: add remaining tests based on existing helpers

Add the following tests based existing helper functions
- Queue based producer-consumer ingress order test
- Run existing queue and flow based ordering test in dequeue timeout
  mode

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx producer-consumer based order
Jerin Jacob [Fri, 3 Mar 2017 17:28:19 +0000 (22:58 +0530)]
test/eventdev: add octeontx producer-consumer based order

Add flow based producer-consumer based ingress order test

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx queue and flow based max stage
Jerin Jacob [Fri, 3 Mar 2017 17:28:18 +0000 (22:58 +0530)]
test/eventdev: add octeontx queue and flow based max stage

Add queue and flow based pipeline test with maximum number of
stages available in the device.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx queue based max stage
Jerin Jacob [Fri, 3 Mar 2017 17:28:17 +0000 (22:58 +0530)]
test/eventdev: add octeontx queue based max stage

Add queue based pipeline test with maximum number of stages available
in the device.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx flow based max stage
Jerin Jacob [Fri, 3 Mar 2017 17:28:16 +0000 (22:58 +0530)]
test/eventdev: add octeontx flow based max stage

Add flow based pipeline test with maximum number of stages available
in the device.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx queue based two stage sched
Jerin Jacob [Fri, 3 Mar 2017 17:28:15 +0000 (22:58 +0530)]
test/eventdev: add octeontx queue based two stage sched

Add queue based two stage pipeline test with all combination
of schedule types.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx flow based two stage sched
Jerin Jacob [Fri, 3 Mar 2017 17:28:14 +0000 (22:58 +0530)]
test/eventdev: add octeontx flow based two stage sched

Add flow based two stage pipeline test with all combination
of schedule types.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx multi link establishment
Jerin Jacob [Fri, 3 Mar 2017 17:28:13 +0000 (22:58 +0530)]
test/eventdev: add octeontx multi link establishment

Add unit test case to verify queue to port multi link
establishment operation.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx single link establishment
Jerin Jacob [Fri, 3 Mar 2017 17:28:12 +0000 (22:58 +0530)]
test/eventdev: add octeontx single link establishment

Add test case to verify queue to port single link establishment operation.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx multi queue and multi port
Jerin Jacob [Fri, 3 Mar 2017 17:28:11 +0000 (22:58 +0530)]
test/eventdev: add octeontx multi queue and multi port

Add unit test case to verify multi queue enqueue and multi core/port
dequeue operation.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx priority test
Jerin Jacob [Fri, 3 Mar 2017 17:28:09 +0000 (22:58 +0530)]
test/eventdev: add octeontx priority test

Added unit test case to verify the priority associated with
each event queue available in the device.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx multi queue enq/deq tests
Jerin Jacob [Fri, 3 Mar 2017 17:28:08 +0000 (22:58 +0530)]
test/eventdev: add octeontx multi queue enq/deq tests

Added unit test case to verify enqueue and dequeue operations
with multiple queues and a single port.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx simple enq/deq tests
Jerin Jacob [Tue, 4 Apr 2017 15:12:41 +0000 (20:42 +0530)]
test/eventdev: add octeontx simple enq/deq tests

Added unit test case to verify simple event enqueue and dequeue
operation with different schedule types

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agotest/eventdev: add octeontx unit test infrastructure
Jerin Jacob [Fri, 3 Mar 2017 17:28:04 +0000 (22:58 +0530)]
test/eventdev: add octeontx unit test infrastructure

add test setup and teardown routines.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agoevent/octeontx: add stop and close functions
Jerin Jacob [Fri, 3 Mar 2017 17:28:03 +0000 (22:58 +0530)]
event/octeontx: add stop and close functions

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add start function
Jerin Jacob [Fri, 3 Mar 2017 17:28:02 +0000 (22:58 +0530)]
event/octeontx: add start function

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: support worker dequeue
Jerin Jacob [Fri, 3 Mar 2017 17:28:01 +0000 (22:58 +0530)]
event/octeontx: support worker dequeue

If device is configured with RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT
configuration then use different fast path dequeue handler to wait till
requested amount of nanosecond if the event is not available.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
7 years agoevent/octeontx: support worker enqueue
Jerin Jacob [Fri, 3 Mar 2017 17:28:00 +0000 (22:58 +0530)]
event/octeontx: support worker enqueue

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add SSO HW device operations
Jerin Jacob [Fri, 3 Mar 2017 17:27:59 +0000 (22:57 +0530)]
event/octeontx: add SSO HW device operations

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add dump function for easier debugging
Jerin Jacob [Fri, 3 Mar 2017 17:27:58 +0000 (22:57 +0530)]
event/octeontx: add dump function for easier debugging

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: support dequeue timeout tick conversion
Jerin Jacob [Fri, 3 Mar 2017 17:27:57 +0000 (22:57 +0530)]
event/octeontx: support dequeue timeout tick conversion

SSO co-processor runs at a different frequency than core clock.
Request PF to convert the ns to SSO get_work timeout period.
On dequeue, If device is configured with
RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT configuration then
use different fast path dequeue handler to wait till requested
amount of nanosecond if the event is not available.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: support linking queues to ports
Jerin Jacob [Fri, 3 Mar 2017 17:27:56 +0000 (22:57 +0530)]
event/octeontx: support linking queues to ports

queues to port link and unlink establishment is through
setting/resetting the queue/group membership in
SSOW_VHWS_GRPMSK_CHGX

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: support event ports
Jerin Jacob [Fri, 3 Mar 2017 17:27:55 +0000 (22:57 +0530)]
event/octeontx: support event ports

Add in the data-structures for the ports used by workers
to sent events to/from the HW scheduler. Also add a
function to release the resource allocated in setup

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: support event queues
Jerin Jacob [Fri, 3 Mar 2017 17:27:54 +0000 (22:57 +0530)]
event/octeontx: support event queues

Pretty much everything done in HW. Need to configure
the priority associated with event queue aka sso group
through a mailbox request to PF

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add configure function
Jerin Jacob [Fri, 3 Mar 2017 17:27:53 +0000 (22:57 +0530)]
event/octeontx: add configure function

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add device capabilities function
Jerin Jacob [Fri, 3 Mar 2017 17:27:52 +0000 (22:57 +0530)]
event/octeontx: add device capabilities function

Add the info_get function to return details on the queues, flow,
prioritization capabilities, etc. which this device has.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>
7 years agoevent/octeontx: add octeontx eventdev driver
Jerin Jacob [Fri, 3 Mar 2017 17:27:51 +0000 (22:57 +0530)]
event/octeontx: add octeontx eventdev driver

This adds the minimal changes to allow a octeontx eventdev
implementation to be compiled, linked and created at run time.
The eventdev does nothing, but can be created via vdev
on command line, e.g.

sudo ./build/app/test -c 0xff00 --vdev=event_octeontx
...
Initializing event_octeontx domain=4 max_queues=64 max_ports=32
RTE>>

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Gage Eads <gage.eads@intel.com>