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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Cristian Dumitrescu [Mon, 12 Jun 2017 13:35:39 +0000 (14:35 +0100)]
ethdev: add traffic management API
This patch introduces the generic ethdev API for the traffic manager
capability, which includes: hierarchical scheduling, traffic shaping,
congestion management, packet marking.
Main features:
- Exposed as ethdev plugin capability (similar to rte_flow)
- Capability query API per port, per level and per node
- Scheduling algorithms: Strict Priority (SP), Weighed Fair Queuing (WFQ)
- Traffic shaping: single/dual rate, private (per node) and shared (by
multiple nodes) shapers
- Congestion management for hierarchy leaf nodes: algorithms of tail drop,
head drop, WRED; private (per node) and shared (by multiple nodes) WRED
contexts
- Packet marking: IEEE 802.1q (VLAN DEI), IETF RFC 3168 (IPv4/IPv6 ECN for
TCP and SCTP), IETF RFC 2597 (IPv4 / IPv6 DSCP)
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Balasubramanian Manoharan <balasubramanian.manoharan@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Cristian Dumitrescu [Mon, 12 Jun 2017 13:35:38 +0000 (14:35 +0100)]
ethdev: add traffic management ops get API
The rte_flow feature breaks the monolithic approach for ethdev by
introducing the new rte_flow API to ethdev using a plugin-like approach.
Basically, the rte_flow API is still logically part of ethdev:
- It extends the ethdev functionality: rte_flow is a new feature/
capability of ethdev;
- all its functions work on an Ethernet device: the first parameter of the
rte_flow functions is Ethernet device port ID.
Also, the rte_flow API is a sort of capability plugin for ethdev:
- the rte_flow API functions have their own name space: they are called
rte_flow_operationXYZ() as opposed to rte_eth_dev_flow_operationXYZ());
- the rte_flow API functions are placed in separate files in the same
librte_ether folder as opposed to rte_ethdev.[hc].
The way it works is by using the existing ethdev API function
rte_eth_dev_filter_ctrl() to query the current Ethernet device port ID for
the support of the rte_flow capability and return the pointer to the
rte_flow operations when supported and NULL otherwise:
struct rte_flow_ops *eth_flow_ops;
int rte = rte_eth_dev_filter_ctrl(eth_port_id,
RTE_ETH_FILTER_GENERIC, RTE_ETH_FILTER_GET, ð_flow_ops);
This patch reuses the same approach for ethdev Traffic Management API.
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Pablo de Lara [Mon, 10 Jul 2017 02:59:23 +0000 (03:59 +0100)]
cryptodev: fix build with icc
Removed unnecessary macro RTE_STD_C11, which is used
for unnamed structs.
Since there is no longer an unnamed structure in
rte_cryptodev_sym_session, this is not needed and
it is actually breaking compilation on icc:
lib/librte_cryptodev/rte_cryptodev.h(887): error: expected a declaration
__extension__ void *sess_private_data[0];
^
Fixes:
7c110ce7aa4e ("cryptodev: remove mempool from session")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
Jan Blunck [Tue, 11 Jul 2017 23:15:48 +0000 (19:15 -0400)]
bus/vdev: allocate empty arguments string
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Jan Blunck [Tue, 11 Jul 2017 23:15:47 +0000 (19:15 -0400)]
bus/vdev: use local bus reference
It isn't necessary to use rte_bus_find_by_name() to find a reference to
our own bus.
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Jan Blunck [Tue, 11 Jul 2017 23:15:46 +0000 (19:15 -0400)]
bus/vdev: get name from embedded generic device
Instead of getting the name from the devargs lets take it from the
rte_device.
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Hemant Agrawal [Tue, 11 Jul 2017 08:50:19 +0000 (14:20 +0530)]
bus/fslmc: fix missing brace
Fixes:
c7fe1eea8a74 ("bus: simplify finding starting point")
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Radu Nicolau [Mon, 10 Jul 2017 11:39:49 +0000 (12:39 +0100)]
doc: notify bypass API change
Added API change description - moved bypass functions
from the rte_ethdev library to ixgbe PMD
Fixes:
e261265e42a1 ("ethdev: move bypass functions to ixgbe PMD")
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Jerin Jacob [Thu, 6 Jul 2017 14:20:25 +0000 (19:50 +0530)]
net/thunderx: remove libm dependency
Used rte_log2_u32() to replace integer log2() to
remove libm dependency.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
Jerin Jacob [Thu, 6 Jul 2017 14:20:24 +0000 (19:50 +0530)]
test: add unit test for integer log2 function
add a unit testcase for rte_log2_u32.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
Shreyansh Jain [Mon, 10 Jul 2017 09:13:05 +0000 (14:43 +0530)]
update NXP copyright headers
NXP Copyright has been wrongly worded with '(c)' at various places.
This patch removes these extra characters. It also removes
"All rights reserved".
Only NXP copyright syntax is changed. Freescale copyright is not
modified.
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Jerin Jacob [Fri, 7 Jul 2017 16:26:54 +0000 (21:56 +0530)]
eal/armv7: emulate vaddvq u16 variant
vaddvq_u16() is not available for armv7.
Emulate the vaddvq_u16() using armv7 NEON intrinsics.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Jianbo Liu <jianbo.liu@linaro.org>
Thomas Monjalon [Sun, 9 Jul 2017 22:55:30 +0000 (00:55 +0200)]
version: 17.08-rc1
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
John McNamara [Fri, 23 Jun 2017 13:05:29 +0000 (14:05 +0100)]
doc: import sphinx rtd theme when available
The ReadTheDocs theme is no longer available by default in
Sphinx versions >= 1.3.1 and if it isn't available then an
exception is raised. This patch imports the ReadTheDocs
theme when it is available and warns but proceeds when it
isn't.
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Cian Ferriter [Fri, 7 Jul 2017 14:09:51 +0000 (15:09 +0100)]
doc: fix typo in contributing guide
Signed-off-by: Cian Ferriter <cian.ferriter@intel.com>
Hemant Agrawal [Fri, 23 Jun 2017 07:23:59 +0000 (12:53 +0530)]
doc: add note for IPv4 multicast application
Add a note to indicate that only first four ports can be
tested with this application.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Reshma Pattan [Mon, 3 Jul 2017 14:17:58 +0000 (15:17 +0100)]
doc: add note for pdump initialization
Updated note to make users aware that the packet capture framework
is initialized by default only in testpmd. Other primary applications
need to explicitly modify the code to do this initialization.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
John McNamara [Mon, 3 Jul 2017 13:21:04 +0000 (14:21 +0100)]
doc: add libnuma as dependency
Add libnuma as a dependency to the Linux Getting Started Guide
since it is a new requirement in DPDK 17.08+.
Fixes:
1b72605d2416 ("mem: balanced allocation of hugepages")
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Tom Barbette [Wed, 5 Jul 2017 13:59:44 +0000 (15:59 +0200)]
ethdev: document VMDq Rx configuration
From documentation it is very unclear how VMDq configuration can be
tweaked, and online search offer very poor results.
This patch will ultimately spawn an online documentation page
for the rte_eth_vmdq_rx_conf struct which will eventually add a bit of
documentation about the rx_mode tag and how to allow e.g. VMDq pools
to receive packets without VLAN tags.
Signed-off-by: Tom Barbette <tom.barbette@ulg.ac.be>
Acked-by: John McNamara <john.mcnamara@intel.com>
Gaetan Rivet [Sun, 9 Jul 2017 01:44:45 +0000 (03:44 +0200)]
ethdev: save VLAN filter setting
In order to be able to replicate a configuration onto a second port,
device configuration should be fully described and available.
Other configuration items (i.e. MAC addresses) are stored within
rte_eth_dev_data, but not this one.
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Rami Rosen [Sat, 8 Jul 2017 21:55:16 +0000 (00:55 +0300)]
bus: remove wrong doxygen for dump function
This trivial patch removes wrong comments about
the return value of the rte_bus_dump(), as
this method does not return any value
(it's return type is void)
Fixes:
a97725791eec ("bus: introduce bus abstraction")
Signed-off-by: Rami Rosen <rami.rosen@intel.com>
Ferruh Yigit [Wed, 10 May 2017 11:01:04 +0000 (12:01 +0100)]
bus/vdev: remove probe with driver name option
Virtual device/driver probing done via name.
A new alternative method introduced to probe the device with providing
driver name in devargs as "driver=<driver_name>".
This patch removes alternative method and fixes virtual device usages
with proper device names.
Fixes:
87c3bf29c642 ("test: do not short-circuit null device creation")
Fixes:
d39670086a63 ("eal: parse driver argument before probing drivers")
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Stephen Hemminger [Fri, 7 Jul 2017 19:52:50 +0000 (12:52 -0700)]
net/virtio: do not claim to support LRO
The current virtio supports Transmit Segmentation Offload, but
does not really support Large Receive Offload. The driver was confusing
the two offloads.
Fixes:
86d59b21468a ("net/virtio: support LRO")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Stephen Hemminger [Fri, 7 Jul 2017 19:52:49 +0000 (12:52 -0700)]
net/virtio: do not falsely claim to do IP checksum
The virtio driver is confused about the meaning of the ip_checksum
flag. In DPDK, ip_checksum means the hardware is capable of checking
the Layer 3 IP checksum. But KVM/QEMU does not do that. The flag
VIRTIO_NET_F_GUEST_CSUM controls whether the receive side does
Layer 4 (TCP/UDP) checksum offload.
Fix by erroring out any requests to do IP checksum.
Fixes:
96cb6711939e ("net/virtio: support Rx checksum offload")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>