dpdk.git
7 years agoapp/testpmd: support different aggregation modes
Daniel Mrzyglod [Wed, 19 Jul 2017 14:46:27 +0000 (16:46 +0200)]
app/testpmd: support different aggregation modes

This patch add support for different aggregator modes in similar manner
that is provided in linux kernel.

testpmd> set bonding agg_mode <port_id> <agg_name>
testpmd> show bonding config <port_id>

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/bonding: add other aggregator modes
Daniel Mrzyglod [Wed, 19 Jul 2017 14:31:17 +0000 (16:31 +0200)]
net/bonding: add other aggregator modes

This patch add support for setting additional aggregator modes for
IEEE802.3AD in similar manner that are supported in kernel mode.

This will add support for other manner:
stable - default mode taken from IEEE802.11AX this is default
         aggregator mode
bandwidth - takes aggregator with highest bandwidth
count - takes aggregator with biggest number of slaves

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/i40e: fix VF add/del MAC
Jeff Guo [Wed, 19 Jul 2017 09:01:11 +0000 (17:01 +0800)]
net/i40e: fix VF add/del MAC

i40e VF close would stop the VF first, if VF already stopped this
result duplicate add/del MAC address which cause failure in executing
admin command.

Fix this by adding VF stop status check and sync up VF MAC address count
during add/del.

Fixes: d42aaf30008b ("i40e: support port hotplug")
Cc: stable@dpdk.org
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/ixgbe: fix Rx/Tx queue interrupt for x550 devices
Qiming Yang [Tue, 18 Jul 2017 02:28:34 +0000 (10:28 +0800)]
net/ixgbe: fix Rx/Tx queue interrupt for x550 devices

x550 devices don't map interrupt vector before enabling Rx/Tx queue
interrupt.
Because of this interrupt mode is not working for x550 devices.

Fixes: d2e72774e58c ("ixgbe/base: support X550")
Cc: stable@dpdk.org
Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wei Dai <wei.dai@intel.com>
7 years agonet/ixgbe: add queue index check in filter
Wei Zhao [Wed, 19 Jul 2017 03:34:33 +0000 (11:34 +0800)]
net/ixgbe: add queue index check in filter

Add queue index check when create filter rule, or
filter with invalid queue id can be created successfully.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
7 years agonet/failsafe: support flow API isolation mode
Gaetan Rivet [Tue, 18 Jul 2017 12:48:22 +0000 (14:48 +0200)]
net/failsafe: support flow API isolation mode

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/failsafe: support link status change event
Gaetan Rivet [Tue, 18 Jul 2017 12:48:21 +0000 (14:48 +0200)]
net/failsafe: support link status change event

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/failsafe: support device removal
Gaetan Rivet [Tue, 18 Jul 2017 12:48:20 +0000 (14:48 +0200)]
net/failsafe: support device removal

Listen to INTR_RMV events issued by slaves.
Add atomic flags on slave queues to detect use of slave bursts function.
If a removal is detected, set the recollection flag on this slave.

During a slave upkeep round, if its recollection flag is set and its
burst functions are not in use by any thread, remove that slave.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: add fast burst functions
Gaetan Rivet [Tue, 18 Jul 2017 12:48:19 +0000 (14:48 +0200)]
net/failsafe: add fast burst functions

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: support Rx offload capabilities
Gaetan Rivet [Tue, 18 Jul 2017 12:48:18 +0000 (14:48 +0200)]
net/failsafe: support Rx offload capabilities

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: support flow API
Gaetan Rivet [Tue, 18 Jul 2017 12:48:17 +0000 (14:48 +0200)]
net/failsafe: support flow API

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: add flexible device definition
Gaetan Rivet [Tue, 18 Jul 2017 12:48:16 +0000 (14:48 +0200)]
net/failsafe: add flexible device definition

Add the "exec" device type.
The parameters given to this type of device will be executed in a shell.
The output of this command is then used as a definition for a device.

That command can be re-interpreted if the related device is not
plugged-in. It allows for a device definition to react to system
changes (e.g. changing PCI bus for a given device).

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: add plug-in support
Gaetan Rivet [Tue, 18 Jul 2017 12:48:15 +0000 (14:48 +0200)]
net/failsafe: add plug-in support

Periodically check for the existence of a device.
If a device has not been initialized and exists on the system, then it
is probed and configured.

The configuration process strives to synchronize the states between the
plugged-in sub-device and the fail-safe device.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agonet/failsafe: add fail-safe PMD
Gaetan Rivet [Tue, 18 Jul 2017 12:48:14 +0000 (14:48 +0200)]
net/failsafe: add fail-safe PMD

Introduce the fail-safe poll mode driver initialization and enable its
build infrastructure.

This PMD allows for applications to benefit from true hot-plugging
support without having to implement it.

It intercepts and manages Ethernet device removal events issued by
slave PMDs and re-initializes them transparently when brought back.
It also allows defining a contingency to the removal of a device, by
designating a fail-over device that will take on transmitting operations
if the preferred device is removed.

Applications only see a fail-safe instance, without caring for
underlying activity ensuring their continued operations.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agoethdev: count devices consistently
Gaetan Rivet [Tue, 18 Jul 2017 12:48:13 +0000 (14:48 +0200)]
ethdev: count devices consistently

Make the rte_eth_dev_count() return the number of available devices even
after some are detached by the hotplug API or put in a deferred state.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agoethdev: add deferred intermediate device state
Gaetan Rivet [Tue, 18 Jul 2017 12:48:12 +0000 (14:48 +0200)]
ethdev: add deferred intermediate device state

This device state means that the device is managed externally, by
whichever party has set this state (PMD or application).

Note: this new device state is only an information. The related device
structure and operators are still valid and can be used normally.

It is however made private by device management helpers within ethdev,
making the device invisible to applications.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodoc: add known issue for i40e VF performance
Qi Zhang [Tue, 18 Jul 2017 09:52:14 +0000 (05:52 -0400)]
doc: add known issue for i40e VF performance

VF performance is limited by the kernel PCI extended tag setting.
Update the document to explain the known issue and the workaround.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agonet/ixgbe: fix IPv6 flow create limitation for x550
Qi Zhang [Tue, 18 Jul 2017 11:37:33 +0000 (19:37 +0800)]
net/ixgbe: fix IPv6 flow create limitation for x550

The x550 family does not support ipv6-other flow as well as
ipv4-other flow, so add this limitation.

Fixes: 7d629cacedee ("net/ixgbe: enable IPv6 for consistent API")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agonet/ixgbe: support 82599ES SCTP packet drop action
Wei Zhao [Tue, 18 Jul 2017 06:10:02 +0000 (14:10 +0800)]
net/ixgbe: support 82599ES SCTP packet drop action

82599ES can support SCTP packet drop action, but the
configuration is different from TCP or UDP packet, so
it need to rework some FDIR related code to adapt
drop action rule of SCTP packet.

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
7 years agonet/i40e: fix ethertype filter for new FW
Beilei Xing [Tue, 18 Jul 2017 03:07:07 +0000 (11:07 +0800)]
net/i40e: fix ethertype filter for new FW

Previously SW workaround for GL_SWR_PRI_JOIN_MAP is added for X710
performance. As new FW version 6.0 supports ADQ,
value for GL_SWR_PRI_JOIN_MAP should be changed, otherwise
ehtertype filter will be impacted.

Fixes: 973273c7a4b7 ("i40e: workaround for X710 performance")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/tap: remove Linux version check
Raslan Darawsheh [Mon, 17 Jul 2017 09:00:20 +0000 (12:00 +0300)]
net/tap: remove Linux version check

Remove checks of Linux kernel version
in order to support kernel with backported features.

the expected behavior with a kernel that doesn't support flower
and other bits is the following:
        -flow validate can return successfully
        -flow create using the same rule fails.

Using the "remote" feature without kernel flower does not fail silently.
The TAP instance is not initialized if the requested parameters cannot
be satisfied.

it has been tested on an old kernel without required support:

PMD: Kernel refused TC filter rule creation (2): No such file or directory
PMD: tap0 failed to create implicit rules.
PMD: Can't set up remote feature: No such file of directory(2)
PMD: TAP Unable to initialize net_tap0

Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
7 years agonet/ixgbe: fix drop action for signature match
Qi Zhang [Mon, 17 Jul 2017 11:46:35 +0000 (19:46 +0800)]
net/ixgbe: fix drop action for signature match

Drop action is not supported by signature match, should return
error when try to create a signature match flow with drop action.

Fixes: a948d33bc05a ("net/ixgbe: enable signature match for consistent API")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agonet/dpaa2: support secondary process attach
Hemant Agrawal [Mon, 17 Jul 2017 08:48:14 +0000 (14:18 +0530)]
net/dpaa2: support secondary process attach

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/i40e: fix virtchnl message response timeout
Beilei Xing [Mon, 17 Jul 2017 07:33:09 +0000 (15:33 +0800)]
net/i40e: fix virtchnl message response timeout

PF driver and VF driver communicated with each other by virtual
channel message. When VF sends message to PF to enable some
offload capability, PF should response if it is successful or not.
VIRTCHNL_OP_ENABLE_VLAN_STRIPPING is a new added message and the
old PF driver doesn’t support that. So no response is received by
DPDK VF. Then VF is blocked on this message and cannot roll back.
This patch clears pending command on VF side when the waiting duration
expires to avoid blocking following communication.

Fixes: 5f0b95d59a98 ("net/i40e: support VLAN stripping for VF")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/virtio: refactor coding style in Rx
Tiwei Bie [Mon, 17 Jul 2017 06:35:39 +0000 (14:35 +0800)]
net/virtio: refactor coding style in Rx

Make the code more readable. No functional change.

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
7 years agonet/ixgbe: remove an unnecessary goto
Tiwei Bie [Mon, 17 Jul 2017 06:29:36 +0000 (14:29 +0800)]
net/ixgbe: remove an unnecessary goto

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
7 years agonet/i40e: remove an unnecessary goto
Tiwei Bie [Mon, 17 Jul 2017 06:26:56 +0000 (14:26 +0800)]
net/i40e: remove an unnecessary goto

Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/i40e: check invalid VF queue id for FDIR
Beilei Xing [Fri, 14 Jul 2017 06:51:36 +0000 (14:51 +0800)]
net/i40e: check invalid VF queue id for FDIR

There's only invalid queue id checking for PF when creating FDIR
rules, this patch adds checking invalid queue id for VF.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/e1000: fix LSC interrupt
Jingjing Wu [Thu, 13 Jul 2017 09:43:23 +0000 (17:43 +0800)]
net/e1000: fix LSC interrupt

If LSC flag is changed to off at last device start, the
enable flag is not cleared in HW.
This patch fixes it.

Fixes: c3cd3de0ab50 ("igb: enable Rx queue interrupts for PF")
Cc: stable@dpdk.org
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: fix LSC interrupt
Jingjing Wu [Thu, 13 Jul 2017 09:43:22 +0000 (17:43 +0800)]
net/i40e: fix LSC interrupt

If LSC flag is changed to off at last device start, the
enable flag is not cleared in HW.
This patch fixes it.

Fixes: f4668a33efe5 ("net/i40e: fix link status change interrupt")
Cc: stable@dpdk.org
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/ixgbe: fix LSC interrupt
Jingjing Wu [Thu, 13 Jul 2017 09:43:21 +0000 (17:43 +0800)]
net/ixgbe: fix LSC interrupt

If LSC flag is changed to off at last device start, the
enable flag is not cleared in HW.
This patch fixes it.

Fixes: 0eb609239efd ("ixgbe: enable Rx queue interrupts for PF and VF")
Cc: stable@dpdk.org
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/mlx5: change start pointer of compressed completion
Yongseok Koh [Wed, 12 Jul 2017 22:09:54 +0000 (15:09 -0700)]
net/mlx5: change start pointer of compressed completion

On a host having 128B cacheline size, some devices insert 64B padding in
each completion entry to avoid partial cacheline write by HW. But, as the
padding is ahead of completion data, casting a completion entry to
compressed mini-completions must start from the middle of the completion.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/thunderx: update sq config register field
Jerin Jacob [Tue, 11 Jul 2017 13:54:26 +0000 (19:24 +0530)]
net/thunderx: update sq config register field

cq_limit field is added in cn88xx-pass2 and subsequent
versions. Reflect the change in the sq_config structure.
This change is backward compatible as the old pass versions
ignore this field.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agonet/i40e: fix VF Tx bytes
Qi Zhang [Sun, 9 Jul 2017 19:54:58 +0000 (15:54 -0400)]
net/i40e: fix VF Tx bytes

Tx CRC size is not counted by VSI's stats register, so it is not necessary
excluded by driver.

Fixes: 98abce237ba7 ("net/i40e: fix VF statistics")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agodoc: update supported architectures for qede
Rasesh Mody [Sat, 8 Jul 2017 18:31:51 +0000 (11:31 -0700)]
doc: update supported architectures for qede

Add support for x86-32 and armv8 architectures.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/sfc: support xstats retrieval by ID
Ivan Malov [Sat, 8 Jul 2017 15:45:15 +0000 (16:45 +0100)]
net/sfc: support xstats retrieval by ID

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Remy Horton <remy.horton@intel.com>
7 years agonet/sfc: request MAC stats upload immediately on port start
Ivan Malov [Sat, 8 Jul 2017 15:16:55 +0000 (16:16 +0100)]
net/sfc: request MAC stats upload immediately on port start

If MAC stats refresh is arranged to be done by periodic DMA,
the first DMA transaction is unlikely to occur right on the
port start; if the user tries to get stats right after port
start and before the transaction occurs, bogus figures will
be collected; a one-off stats upload on port start is a fix

Fixes: 1caab2f1e684 ("net/sfc: add basic statistics")
Cc: stable@dpdk.org
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/ring: add missing newlines in logs
Thomas Monjalon [Thu, 6 Jul 2017 15:47:50 +0000 (17:47 +0200)]
net/ring: add missing newlines in logs

Some logs are missing the newline character \n.

The logs using only one line can be checked with this command:
git grep 'RTE_LOG(.*".*[^n]"' drivers/net/ring/

Fixes: 61934c0956d4 ("ring: convert to use of PMD_REGISTER_DRIVER and fix linking")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agonet/tap: add missing newlines in logs
Thomas Monjalon [Thu, 6 Jul 2017 15:28:48 +0000 (17:28 +0200)]
net/tap: add missing newlines in logs

Some logs are missing the newline character \n.

The logs using only line can be checked with this command:
git grep 'RTE_LOG(.*".*[^n]"' drivers/net/tap/

Fixes: 02f96a0a82d1 ("net/tap: add TUN/TAP device PMD")
Fixes: 268483dc2086 ("net/tap: add preliminary support for flow API")
Fixes: 2bc06869cd94 ("net/tap: add remote netdevice traffic capture")
Fixes: bf7b7f437b49 ("net/tap: create netdevice during probing")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
7 years agoexamples/vhost_scsi: introduce a new sample app
Changpeng Liu [Thu, 20 Jul 2017 09:16:29 +0000 (17:16 +0800)]
examples/vhost_scsi: introduce a new sample app

vhost-user protocol is common to many virtio devices, such as
virtio_net/virtio_scsi/virtio_blk. Since DPDK vhost library
removed the NET specific data structures, the vhost library
is common to other virtio devices, such as virtio-scsi.

Here we introduce a simple memory based block device that
can be presented to Guest VM through vhost-user-scsi-pci
controller. Similar with vhost-net, the sample application
will process the I/Os sent via virt rings.

Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
7 years agovhost: fix initialization
Zhiyong Yang [Mon, 10 Jul 2017 08:06:48 +0000 (16:06 +0800)]
vhost: fix initialization

Exception handling is executed in the normal path and it will cause
vhost-user init failure.

Fixes: d6983a70e259 ("vhost: check return of pthread calls")

Reported-by: Lei Yao <lei.a.yao@intel.com>
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
7 years agodevargs: restore device type API
Gaetan Rivet [Sat, 15 Jul 2017 17:59:27 +0000 (19:59 +0200)]
devargs: restore device type API

Revert "devargs: make device types generic"

This commit broke the rte_devargs API by changing the meaning of
the rte_devtype enum.

Restore the previous API, unit tests and function calls.
Introduce parallel enum that acts as translation between previous API
and current structures.

Restoring the previous API means that -w and -b are not usable anymore
with any bus having implemented the "parse" operation. Only PCI devices
can be used with -w and -b, virtual devices are declared using vdev.

This (partially) reverts commit bd279a79366f50a4893fb84db91bbf64b56f9fb1.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agobus: remove useless plug parameter
Gaetan Rivet [Sat, 15 Jul 2017 17:56:42 +0000 (19:56 +0200)]
bus: remove useless plug parameter

The prior scan should link the relevant rte_devargs to the newly
allocated rte_device. As such, it is useless to pass device arguments to
the plug callback. Those arguments are available within the devargs
field of the rte_device structure.

Fixes: 7c8810f43f6e ("bus: introduce device plug/unplug")
Fixes: 00e62aae69c0 ("bus/pci: implement plug/unplug operations")
Fixes: a3ee360f4440 ("eal: add hotplug add/remove device")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agobus/pci: fix hotplug operations
Gaetan Rivet [Sat, 15 Jul 2017 17:56:41 +0000 (19:56 +0200)]
bus/pci: fix hotplug operations

The device handle is already known and does not have to be infered from
the PCI address. The relevant helpers are already available within the
PCI bus to avoid searching for a handle already known.

Additionally, rte_memcpy.h was erroneously included.

Fixes: 00e62aae69c0 ("bus/pci: implement plug/unplug operations")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agobus/pci: fix generic driver pointer on probe error
Gaetan Rivet [Sat, 15 Jul 2017 17:56:40 +0000 (19:56 +0200)]
bus/pci: fix generic driver pointer on probe error

The field is set but never resetted on error.
This marks the device as being attached while it is not, and forbid
further attempts to hotplug it.

Fixes: 7917d5f5ea46 ("pci: initialize generic driver pointer")
Cc: stable@dpdk.org
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agobus/pci: use given name as generic name
Gaetan Rivet [Sat, 15 Jul 2017 17:56:39 +0000 (19:56 +0200)]
bus/pci: use given name as generic name

When an application requests the use of a PCI device, it can currently
interchangeably use either the longform DomBDF format (0000:00:00.0) or
the shorter BDF format (00:00.0).

When a device is inserted via the hotplug API, it must first be scanned
and then will be identified by its name using `find_device`. The name of
the device must match the name given by the user to be found and then
probed.

A new function sets the expected name for a scanned PCI device. It was
previously generated from parsing the PCI address. This canonical name
is superseded when an rte_devargs exists describing the device. In such
case, the device takes the given name found within the rte_devargs.

As the rte_devargs is linked to the rte_pci_device during scanning, it
can be avoided during the probe. Additionally, this fixes the issue of
the rte_devargs lookup not being done within rte_pci_probe_one.

Fixes: beec692c5157 ("eal: add name field to generic device")
Cc: stable@dpdk.org
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agoeal: fix hotplug add / remove
Gaetan Rivet [Sat, 15 Jul 2017 17:56:38 +0000 (19:56 +0200)]
eal: fix hotplug add / remove

The hotplug API requires a few properties that were not previously
explicitly enforced:

  - Idempotency, two consecutive scans should result in the same state.
  - Upon returning, internal devices are now allocated and available
    through the new `find_device` operator, meaning that they should be
    identifiable.

The current rte_eal_hotplug_add implementation identifies devices by
their names, as it is readily available and easy to define.

The device name must be passed to the internal rte_device handle in
order to be available during scan, when it is then assigned to the
device. The current way of passing down this information from the device
declaration is through the global rte_devargs list.

Furthermore, the rte_device cannot take a bus-specific generated name,
as it is then not identifiable by the `find_device` operator. The device
must take the user-defined name. Ideally, an rte_device name should not
change during its existence.

This commit generates a new rte_devargs associated with the plugged
device and inserts it in the global rte_devargs list. It consequently
releases it upon device removal.

Fixes: a3ee360f4440 ("eal: add hotplug add/remove device")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agodevargs: introduce insert function
Gaetan Rivet [Sat, 15 Jul 2017 17:56:37 +0000 (19:56 +0200)]
devargs: introduce insert function

Some buses will operate either in whitelist or blacklist mode.
This mode is currently passed down by the rte_eal_devargs_add function
with the devtype argument.

When inserting devices using the hotplug API, the implicit assumption is
that this device is being whitelisted, meaning that it is explicitly
requested by the application to be used. This can conflict with the
initial bus configuration.

While the rte_eal_devargs_add API is being deprecated soon, it cannot
be modified at the moment to accommodate this situation.
As such, this new experimental API offers a bare interface for inserting
rte_devargs without directly manipulating the global rte_devargs list.

This new function expects a fully-formed rte_devargs, previously parsed
and allocated.

It does not check whether the new rte_devargs is compatible with current
bus configuration, but will replace any eventual existing one for the same
device, allowing the hotplug operation to proceed. i.e. a previously
blacklisted device can be redefined as being whitelisted.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agodevargs: introduce removal function
Gaetan Rivet [Sat, 15 Jul 2017 17:56:36 +0000 (19:56 +0200)]
devargs: introduce removal function

Hotplug support introduces the possibility of removing devices from the
system. Allocated resources must be freed.

Extend the rte_devargs API to allow freeing allocated resources.

This API is experimental and bound to change. It is currently designed
as a symetrical to rte_eal_devargs_add(), but the latter will evolve
shortly anyway.

Its DEVTYPE parameter is currently only used to specify scan policies,
and those will evolve in the next release. This evolution should
rationalize the rte_devargs API.

As such, the proposed API here is not the most convenient, but is
taylored to follow the current design and integrate easily with its main
use within rte_eal_hotplug_* functions.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agobus/vdev: implement plug operation
Gaetan Rivet [Sat, 15 Jul 2017 17:56:35 +0000 (19:56 +0200)]
bus/vdev: implement plug operation

This method must be implemented to allow using a unified, generic API to
hotplug devices, including virtual ones.

VDEV devices actually exist unattached after performing a scan on the
rte_devargs list. As such it makes sense to be able to perform a device
hotplug afterward.

Finally, missing this generic interface forces the EAL to be dependent
on vdev-specific API, which hinders the plan of moving the vdev bus to
drivers/bus.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agojobstats: fix typo in doxygen comment
Rami Rosen [Wed, 19 Jul 2017 20:06:06 +0000 (23:06 +0300)]
jobstats: fix typo in doxygen comment

This patch fixes a trivial typo in rte_jobstats.h.

Signed-off-by: Rami Rosen <rami.rosen@intel.com>
7 years agodoc: fix metrics example
Yong Wang [Tue, 18 Jul 2017 12:03:07 +0000 (08:03 -0400)]
doc: fix metrics example

Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Remy Horton <remy.horton@intel.com>
7 years agometrics: fix name string termination
Remy Horton [Tue, 18 Jul 2017 09:43:47 +0000 (10:43 +0100)]
metrics: fix name string termination

The public API (struct rte_metric_name) includes the NULL terminator
byte in RTE_METRICS_MAX_NAME_LENGTH but the library itself internally
excludes it. This makes it possible for an application to receive an
unterminated name string. Fix be enforcing the NULL termination of all
name strings to the length that the public API expects.

Fixes: 349950ddb9c5 ("metrics: add information metrics library")
Cc: stable@dpdk.org
Signed-off-by: Remy Horton <remy.horton@intel.com>
7 years agombuf: fix VXLAN port in comment
Cian Ferriter [Fri, 7 Jul 2017 14:17:40 +0000 (15:17 +0100)]
mbuf: fix VXLAN port in comment

IANA assigns a destination port of 4789 for the VXLAN in the Service
Name and Transport Protocol Port Number Registry. This is mentioned in
RFC 7348.

Fixes: f295a00a2b44 ("mbuf: add definitions of unified packet types")
Cc: stable@dpdk.org
Signed-off-by: Cian Ferriter <cian.ferriter@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agoservice: add -S corelist option
Harry van Haaren [Mon, 17 Jul 2017 15:21:54 +0000 (16:21 +0100)]
service: add -S corelist option

This commit allows the -S (captial 's') to be used to indicate
a corelist for Services. This is a "nice to have" patch, and does
not modify any of the service core functionality.

Suggested-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Suggested-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agobus/fslmc: remove workaround for smmu mapping
Hemant Agrawal [Mon, 17 Jul 2017 08:43:10 +0000 (14:13 +0530)]
bus/fslmc: remove workaround for smmu mapping

This is not required any more for A72 based dpaa2 systems.
(A57 based platform is not in production anymore)

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agoethdev: introduce lock-free Tx queue capability
Jerin Jacob [Mon, 10 Jul 2017 16:59:46 +0000 (22:29 +0530)]
ethdev: introduce lock-free Tx queue capability

Introducing the DEV_TX_OFFLOAD_MT_LOCKFREE TX capability flag.
if a PMD advertises DEV_TX_OFFLOAD_MT_LOCKFREE capable, multiple threads
can invoke rte_eth_tx_burst() concurrently on the same tx queue without
SW lock. This PMD feature will be useful in the following use cases and
found in the OCTEON family of NPUs.

1) Remove explicit spinlock in some applications where lcores
to TX queues are not mapped 1:1.
example: OVS has such instance
https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L299
https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L1859
See the the usage of tx_lock spinlock.

2) In the eventdev use case, avoid dedicating a separate TX core for
transmitting and thus enables more scaling as all workers can
send the packets.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
7 years agoevent/sw: add service capability
Harry van Haaren [Tue, 11 Jul 2017 14:19:31 +0000 (15:19 +0100)]
event/sw: add service capability

This commit shows how easy it is to enable a specific
DPDK component with a service callback, in order to get
CPU cycles for it.

The beauty of this method is that the service is unaware
of how much CPU time it is getting - the application can
decide how to split and slice cores and map them to the
registered services.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoservice: add unit tests
Harry van Haaren [Tue, 11 Jul 2017 14:19:30 +0000 (15:19 +0100)]
service: add unit tests

Add a bunch of unit tests, to ensure that the service
core functions are operating as expected.

As part of these tests a dummy service is registered which
allows identifying if a service callback has been invoked
by using the CPU tick counter. This allows identifying if
functions to start and stop service lcores are actually having
effect.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoservice: add coremask option -s
Harry van Haaren [Tue, 11 Jul 2017 14:19:29 +0000 (15:19 +0100)]
service: add coremask option -s

Add logic for parsing a coremask from EAL, which allows
the application to be unaware of the cores being taken from
its coremask.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoservice: initialize with EAL
Harry van Haaren [Tue, 11 Jul 2017 14:19:28 +0000 (15:19 +0100)]
service: initialize with EAL

This commit shows the changes required in rte_eal_init()
to transparently launch the service threads. The threads
are launched into the service worker functions here because
after rte_eal_init() the application is not gauranteed to
call any other DPDK API.

As the registration of services happens at initialization
time, the services that require CPU time are already available
when we reach the end of rte_eal_init().

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoservice: introduce service cores concept
Harry van Haaren [Tue, 11 Jul 2017 14:19:27 +0000 (15:19 +0100)]
service: introduce service cores concept

Add header files, update .map files with new service
functions, and add the service header to the doxygen
for building.

This service header API allows DPDK to use services as
a concept of something that requires CPU cycles. An example
is a PMD that runs in software to schedule events, where a
hardware version exists that does not require a CPU.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoexamples: remove duplicate includes
Thomas Monjalon [Sun, 16 Jul 2017 13:53:35 +0000 (15:53 +0200)]
examples: remove duplicate includes

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agotest: remove duplicate includes
Stephen Hemminger [Tue, 11 Jul 2017 18:55:45 +0000 (11:55 -0700)]
test: remove duplicate includes

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7 years agoapp/testpmd: remove duplicate includes
Stephen Hemminger [Tue, 11 Jul 2017 18:55:44 +0000 (11:55 -0700)]
app/testpmd: remove duplicate includes

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7 years agoapp/procinfo: remove duplicate include
Stephen Hemminger [Tue, 11 Jul 2017 18:55:43 +0000 (11:55 -0700)]
app/procinfo: remove duplicate include

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7 years agodrivers/net: remove duplicate includes
Stephen Hemminger [Tue, 11 Jul 2017 18:55:35 +0000 (11:55 -0700)]
drivers/net: remove duplicate includes

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7 years agodrivers/dpaa2: remove duplicate includes
Stephen Hemminger [Tue, 11 Jul 2017 18:55:41 +0000 (11:55 -0700)]
drivers/dpaa2: remove duplicate includes

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agolib: remove duplicate includes
Stephen Hemminger [Tue, 11 Jul 2017 18:55:29 +0000 (11:55 -0700)]
lib: remove duplicate includes

Include files only need to be refrenced once per file.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7 years agodrivers: add newline in dpaa2 logs
Hemant Agrawal [Tue, 11 Jul 2017 14:55:59 +0000 (20:25 +0530)]
drivers: add newline in dpaa2 logs

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agoconfig: enable virtual IOVA by default for DPAA2
Hemant Agrawal [Tue, 11 Jul 2017 14:55:58 +0000 (20:25 +0530)]
config: enable virtual IOVA by default for DPAA2

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agobus/fslmc: align object name log to real resource name
Hemant Agrawal [Tue, 11 Jul 2017 14:55:57 +0000 (20:25 +0530)]
bus/fslmc: align object name log to real resource name

the DPAA2 resources are named with ".", so changing
"-" with "."

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agobus/fslmc: set the dpaa2 device name
Hemant Agrawal [Tue, 11 Jul 2017 14:55:56 +0000 (20:25 +0530)]
bus/fslmc: set the dpaa2 device name

rte_eth_dev_allocated expect the device name to be filled.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agoevent/dpaa2: fix debug build
Hemant Agrawal [Tue, 11 Jul 2017 14:55:55 +0000 (20:25 +0530)]
event/dpaa2: fix debug build

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agobus/fslmc: fix debug build
Hemant Agrawal [Tue, 11 Jul 2017 14:55:54 +0000 (20:25 +0530)]
bus/fslmc: fix debug build

Fixes: 9ccb76b24c1d ("bus/fslmc: enable portal interrupt handling")

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: fix flow control switch case break
Hemant Agrawal [Tue, 11 Jul 2017 14:55:53 +0000 (20:25 +0530)]
net/dpaa2: fix flow control switch case break

Fixes: 977d0006ada1 ("net/dpaa2: add support for flow control")

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agocrypto/dpaa2_sec: fix build with gcc 7.1
Hemant Agrawal [Tue, 11 Jul 2017 14:55:52 +0000 (20:25 +0530)]
crypto/dpaa2_sec: fix build with gcc 7.1

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agotest/alarm: add delay tolerance
Qiming Yang [Tue, 20 Jun 2017 03:24:11 +0000 (11:24 +0800)]
test/alarm: add delay tolerance

Because accuracy of timing to the microsecond is not guaranteed
in rte_eal_alarm_set, this function will not be called before
the requested time, but may be called a period of time
afterwards which can not be calculated. In order to ensure
test alarm running success, this patch added the delay time
before check the flag.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
7 years agoapp/testpmd: add --flow-isolate-all option
Vasily Philipov [Sun, 9 Jul 2017 08:08:05 +0000 (11:08 +0300)]
app/testpmd: add --flow-isolate-all option

Providing this parameter requests flow API isolated mode on all ports at
initialization time. It ensures all traffic is received through the
configured flow rules only (see flow command).

Ports that do not support this mode are automatically discarded.

Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agoethdev: fix build with gcc 5.4.0
Thomas Monjalon [Thu, 6 Jul 2017 21:45:32 +0000 (23:45 +0200)]
ethdev: fix build with gcc 5.4.0

Seen on Ubuntu 16.04 with GCC 5.4.0:

lib/librte_ether/rte_ethdev.c: In function 'get_mac_addr_index':
lib/librte_ether/rte_ethdev.c:2369:26: error:
'dev_info.max_mac_addrs' may be used uninitialized in this function

Indeed, rte_eth_dev_info_get() do not write into dev_info
if the port_id is not valid.
So we need to check the port_id and return in case of error.

This extra check should not be needed because the port_id is always
checked before calling get_mac_addr_index().
However it does not hurt.

Reported-by: Matan Azrad <matan@mellanox.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Matan Azrad <matan@mellanox.com>
7 years agonet/ixgbe: support committing TM hierarchy
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:57 +0000 (12:23 +0800)]
net/ixgbe: support committing TM hierarchy

Add the support of the Traffic Management API,
rte_tm_hierarchy_commit.
When calling this API, the driver tries to enable
the TM configuration on HW.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support getting TM node capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:56 +0000 (12:23 +0800)]
net/ixgbe: support getting TM node capability

Add the support of the Traffic Management API,
rte_tm_node_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support getting TM level capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:55 +0000 (12:23 +0800)]
net/ixgbe: support getting TM level capability

Add the support of the Traffic Management API,
rte_tm_level_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support getting TM node type
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:54 +0000 (12:23 +0800)]
net/ixgbe: support getting TM node type

Add the support of the Traffic Management API,
rte_tm_node_type_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support deleting TM node
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:53 +0000 (12:23 +0800)]
net/ixgbe: support deleting TM node

Add the support of the Traffic Management API,
rte_tm_node_delete.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support adding TM node
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:52 +0000 (12:23 +0800)]
net/ixgbe: support adding TM node

Add the support of the Traffic Management API,
rte_tm_node_add.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support deleting TM shaper profile
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:51 +0000 (12:23 +0800)]
net/ixgbe: support deleting TM shaper profile

Add the support of the Traffic Management API,
rte_tm_shaper_profile_delete.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support adding TM shaper profile
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:50 +0000 (12:23 +0800)]
net/ixgbe: support adding TM shaper profile

Add the support of the Traffic Management API,
rte_tm_shaper_profile_add.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support getting TM capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:49 +0000 (12:23 +0800)]
net/ixgbe: support getting TM capability

Add the support of the Traffic Management API,
rte_tm_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ixgbe: support getting TM ops
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:48 +0000 (12:23 +0800)]
net/ixgbe: support getting TM ops

To support QoS scheduler APIs, create a new C file for
the TM (Traffic Management) ops but without any function
implemented.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support committing TM hierarchy
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:47 +0000 (12:23 +0800)]
net/i40e: support committing TM hierarchy

Add the support of the Traffic Management API,
rte_tm_hierarchy_commit.
When calling this API, the driver tries to enable
the TM configuration on HW.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support getting TM node capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:46 +0000 (12:23 +0800)]
net/i40e: support getting TM node capability

Add the support of the Traffic Management API,
rte_tm_node_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support getting TM level capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:45 +0000 (12:23 +0800)]
net/i40e: support getting TM level capability

Add the support of the Traffic Management API,
rte_tm_level_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support getting TM node type
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:44 +0000 (12:23 +0800)]
net/i40e: support getting TM node type

Add the support of the Traffic Management API,
rte_tm_node_type_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support deleting TM node
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:43 +0000 (12:23 +0800)]
net/i40e: support deleting TM node

Add the support of the Traffic Management API,
rte_tm_node_delete.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support adding TM node
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:42 +0000 (12:23 +0800)]
net/i40e: support adding TM node

Add the support of the Traffic Management API,
rte_tm_node_add.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support deleting TM shaper profile
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:41 +0000 (12:23 +0800)]
net/i40e: support deleting TM shaper profile

Add the support of the Traffic Management API,
rte_tm_shaper_profile_delete.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support adding TM shaper profile
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:40 +0000 (12:23 +0800)]
net/i40e: support adding TM shaper profile

Add the support of the Traffic Management API,
rte_tm_shaper_profile_add.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support getting TM capability
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:39 +0000 (12:23 +0800)]
net/i40e: support getting TM capability

Add the support of the Traffic Management API,
rte_tm_capabilities_get.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: support getting TM ops
Wenzhuo Lu [Thu, 29 Jun 2017 04:23:38 +0000 (12:23 +0800)]
net/i40e: support getting TM ops

To support QoS scheduler APIs, create a new C file for
the TM (Traffic Management) ops but without any function
implemented.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>