Wei Zhao [Wed, 17 Oct 2018 07:41:26 +0000 (15:41 +0800)]
examples/ipv4_multicast: enable multicast promiscuous
This example has not been enable for receiving multicast
packet, so it will drop multicast packet. Users must send packet
with ether MAC destination address the same as pf port MAC address,
in order to forward packet successfully, but this is an example
for forwarding ipv4 multicastpacket. So calling function
rte_eth_promiscuous_enable() or rte_eth_allmulticast_enable() can
enable promiscuous mode of all multicast packet. And also, DPDK has
rte API function of rte_eth_dev_set_mc_addr_list() for setting
specific multicast filter table for specific multicast IP address,
but this example do not support this configuration, so it need to
be enable multicast promiscuous mode instead.
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Tested-by: Dong Wang <dong1.wang@intel.com>
Ferruh Yigit [Sun, 28 Oct 2018 23:57:41 +0000 (23:57 +0000)]
lib: reduce global variable usage
Some global variables can be eliminated, since they are not part of
public interface, it is free to remove them.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Ferruh Yigit [Sun, 28 Oct 2018 23:57:40 +0000 (23:57 +0000)]
fix global variable issues
Various fixes related to the global variable usage.
Fixes:
43e610bb8565 ("compress/octeontx: introduce octeontx zip PMD")
Fixes:
c378f084d6e3 ("compress/octeontx: add device setup ops")
Fixes:
b43ebc65aada ("compress/octeontx: create private xform")
Fixes:
b1ce8ebd97ba ("eventdev: add PMD callbacks for eth Rx adapter")
Fixes:
3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
Fixes:
fefed3d1e62c ("enic: new driver")
Cc: stable@dpdk.org
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Ferruh Yigit [Sun, 28 Oct 2018 23:57:39 +0000 (23:57 +0000)]
drivers: prefix global variables with module name
Some global variables are defined with generic names, add component name
as prefix to variables to prevent collusion with application variables.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Tianfei Zhang <tianfei.zhang@intel.com>
Ferruh Yigit [Sun, 28 Oct 2018 23:57:38 +0000 (23:57 +0000)]
add missing static keyword to globals
Some global variables can indeed be static, add static keyword to them.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Darek Stojaczyk [Fri, 26 Oct 2018 07:54:59 +0000 (09:54 +0200)]
bus/pci: propagate probing error codes
In a couple of places we check its error code against -EEXIST,
but this function returned either -1, 0, or 1.
This gets critical when hotplugging a device in secondary
process, while the same device is already plugged in the
primary. Failing to "hotplug" it in the primary will cause
the secondary to fail as well.
Fixes:
e9d159c3d534 ("eal: allow probing a device again")
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Darek Stojaczyk [Wed, 24 Oct 2018 10:11:31 +0000 (12:11 +0200)]
vfio: fix interrupt unregister for hotplug notifier
This function is documented to return the number of unregistered
callbacks or negative numbers on error, but pci_vfio checks for
ret != 0 to detect failures. Not anymore.
Fixes:
c115fd000c32 ("vfio: handle hotplug request notifier")
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Darek Stojaczyk [Wed, 3 Oct 2018 12:39:25 +0000 (14:39 +0200)]
vfio: share default container in multi-process
So far each process in MP used to have a separate container
and relied on the primary process to register all memsegs.
Mapping external memory via rte_vfio_container_dma_map()
in secondary processes was broken, because the default
(process-local) container had no groups bound. There was
even no way to bind any groups to it, because the container
fd was deeply encapsulated within EAL.
This patch introduces a new SOCKET_REQ_DEFAULT_CONTAINER
message type for MP synchronization, makes all processes
within a MP party use a single default container, and hence
fixes rte_vfio_container_dma_map() for secondary processes.
From what I checked this behavior was always the same, but
started to be invalid/insufficient once mapping external
memory was allowed.
While here, fix up the comment on rte_vfio_get_container_fd().
This function always opens a new container, never reuses
an old one.
Fixes:
73a639085938 ("vfio: allow to map other memory regions")
Cc: stable@dpdk.org
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Darek Stojaczyk [Thu, 25 Oct 2018 10:49:10 +0000 (12:49 +0200)]
vfio: fix read of freed memory on getting container fd
We were reading some memory just after freeing it.
Fixes:
83a73c5fef66 ("vfio: use generic multi-process channel")
Cc: stable@dpdk.org
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Dariusz Stojaczyk [Mon, 17 Sep 2018 13:46:43 +0000 (15:46 +0200)]
vfio: cleanup getting group fd
Factor out duplicated code.
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Dariusz Stojaczyk [Mon, 17 Sep 2018 13:46:42 +0000 (15:46 +0200)]
vfio: check if group fd is already open
Always attempt to find already opened fd for an iommu
group as subsequent attempts to open it will fail.
There's no public API to check if a group was already
bound and has a container, so rte_vfio_container_group_bind()
shouldn't fail in such case.
Fixes:
ea2dc1066870 ("vfio: add multi container support")
Cc: stable@dpdk.org
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Acked-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Alejandro Lucero [Thu, 25 Oct 2018 10:49:28 +0000 (11:49 +0100)]
bus/pci: compare kernel driver instead of interrupt handler
Invoking the right pci read/write functions is based on interrupt
handler type. However, this is not configured for secondary processes
precluding to use those functions.
This patch fixes the issue using the driver name the device is bound
to instead.
Fixes:
632b2d1deeed ("eal: provide functions to access PCI config")
Cc: stable@dpdk.org
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Brian Russell [Tue, 28 Aug 2018 10:12:40 +0000 (11:12 +0100)]
net/virtio: fix PCI config error handling
In virtio_read_caps and vtpci_msix_detect, rte_pci_read_config returns
the number of bytes read from PCI config or < 0 on error.
If less than the expected number of bytes are read then log the
failure and return rather than carrying on with garbage.
Fixes:
6ba1f63b5ab0 ("virtio: support specification 1.0")
Cc: stable@dpdk.org
Signed-off-by: Brian Russell <brussell@brocade.com>
Signed-off-by: Luca Boccassi <bluca@debian.org>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Luca Boccassi [Tue, 28 Aug 2018 10:12:39 +0000 (11:12 +0100)]
bus/pci: harmonize return value of config read
On Linux, rte_pci_read_config on success returns the number of read
bytes, but on BSD it returns 0.
Document the return values, and have BSD behave as Linux does.
At least one case (bnx2x PMD) treats 0 as an error, so the change
makes sense also for that.
Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Eric Zhang [Wed, 3 Oct 2018 20:53:13 +0000 (16:53 -0400)]
eal: force IOVA to a particular mode
This patch uses EAL option "--iova-mode" to force the IOVA mode to a
particular value. There exists virtual devices that are not directly
attached to the PCI bus, and therefore the auto detection of the IOVA
mode based on probing the PCI bus and IOMMU configuration may not
report the required addressing mode. Using the EAL option permits the
mode to be explicitly configured in this scenario.
Signed-off-by: Eric Zhang <eric.zhang@windriver.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
Santosh Shukla [Wed, 3 Oct 2018 20:53:12 +0000 (16:53 -0400)]
eal: add --iova-mode option
In the case of user don't want to use bus iova scheme and want
to override.
For that, adding EAL option --iova-mode=<string> where valid input
string is 'pa' or 'va'.
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Eric Zhang <eric.zhang@windriver.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Takeshi Yoshimura [Tue, 7 Aug 2018 02:35:06 +0000 (11:35 +0900)]
vfio: fix sPAPR IOMMU mapping
Commit
73a639085938 ("vfio: allow to map other memory regions")
introduced a bug in sPAPR IOMMU mapping. The commit removed necessary
ioctl with VFIO_IOMMU_SPAPR_REGISTER_MEMORY. Also, vfio_spapr_map_walk
should call vfio_spapr_dma_do_map instead of vfio_spapr_dma_mem_map.
Fixes:
73a639085938 ("vfio: allow to map other memory regions")
Cc: stable@dpdk.org
Signed-off-by: Takeshi Yoshimura <tyos@jp.ibm.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:27 +0000 (13:45 +0100)]
net/nfp: support IOVA VA mode
NFP can handle IOVA as VA. It requires to check those IOVAs
being in the supported range what is done during initialization.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:26 +0000 (13:45 +0100)]
net/nfp: check hugepage IOVA based on DMA mask
NFP devices can not handle DMA addresses requiring more than
40 bits. This patch uses rte_dev_check_dma_mask with 40 bits
and avoids device initialization if memory out of NFP range.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:25 +0000 (13:45 +0100)]
bus/pci: use IOVA DMA mask check when setting IOVA mode
Currently the code precludes IOVA mode if IOMMU hardware reports
less addressing bits than necessary for full virtual memory range.
Although VT-d emulation currently only supports 39 bits, it could
be iovas for allocated memlory being within that supported range.
This patch allows IOVA mode in such a case adding a call to
rte_eal_check_dma_mask using the reported addressing bits by the
IOMMU hardware.
Indeed, memory initialization code has been modified for using lower
virtual addresses than those used by the kernel for 64 bits processes
by default, and therefore memsegs iovas can use 39 bits or less for
most systems. And this is likely 100% true for VMs.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:24 +0000 (13:45 +0100)]
bus/pci: check IOMMU addressing limitation just once
Current code checks if IOMMU hardware reports enough addressing
bits for using IOVA mode but it repeats the same check for any
PCI device present. This is not necessary because the IOMMU hardware
is the same for all of them.
This patch only checks the IOMMU using first PCI device found.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:23 +0000 (13:45 +0100)]
mem: use address hint for mapping hugepages
Linux kernel uses a really high address as starting address for
serving mmaps calls. If there exist addressing limitations and
IOVA mode is VA, this starting address is likely too high for
those devices. However, it is possible to use a lower address in
the process virtual address space as with 64 bits there is a lot
of available space.
This patch adds an address hint as starting address for 64 bits
systems and increments the hint for next invocations. If the mmap
call does not use the hint address, repeat the mmap call using
the hint address incremented by page size.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Alejandro Lucero [Fri, 5 Oct 2018 12:45:22 +0000 (13:45 +0100)]
mem: add function for checking memseg IOVA
A device can suffer addressing limitations. This function checks
memsegs have iovas within the supported range based on dma mask.
PMDs should use this function during initialization if device
suffers addressing limitations, returning an error if this function
returns memsegs out of range.
Another usage is for emulated IOMMU hardware with addressing
limitations.
It is necessary to save the most restricted dma mask for checking out
memory allocated dynamically after initialization.
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Qi Zhang [Thu, 25 Oct 2018 03:30:36 +0000 (11:30 +0800)]
bus/vdev: fix devargs after multi-process bus scan
It's not necessary to insert device argment to devargs_list
during bus scan, but this happens when we try to attach a
device on secondary process. The patch fix the issue.
Fixes:
cdb068f031c6 ("bus/vdev: scan by multi-process channel")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Darek Stojaczyk [Sun, 7 Oct 2018 19:31:47 +0000 (21:31 +0200)]
malloc: check size hint when reserving the biggest element
RTE_MEMZONE_SIZE_HINT_ONLY wasn't checked in any way,
causing size hints to be parsed as hard requirements.
This resulted in some allocations being failed prematurely.
Fixes:
68b6092bd3c7 ("malloc: allow reserving biggest element")
Cc: stable@dpdk.org
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Ziye Yang [Wed, 12 Sep 2018 01:31:50 +0000 (09:31 +0800)]
eal/linux: fix memory leak of logid
This patch is used to fix the memory leak issue of logid.
We use the ASAN test in SPDK when integrating DPDK and
find this memory leak issue.
Fixes:
d8a2bc71dfc2 ("log: remove app path from syslog id")
Cc: stable@dpdk.org
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Li Han [Thu, 2 Aug 2018 02:01:03 +0000 (22:01 -0400)]
ip_frag: fix overflow in key comparison
in struct ip_frag_key,src_dst[] type is uint64_t.
but "val" which to store the calc restult ,type is uint32_t.
we may lost high 32 bit key. and function return value is int,
but it won't return < 0.
Signed-off-by: Li Han <han.li1@zte.com.cn>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Bruce Richardson [Thu, 20 Sep 2018 13:22:08 +0000 (14:22 +0100)]
doc: support building HTML guides with meson
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Luca Boccassi <bluca@debian.org>
Tested-by: Timothy Redaelli <tredaelli@redhat.com>
Luca Boccassi [Tue, 2 Oct 2018 16:20:46 +0000 (17:20 +0100)]
build: add option to override drivers install directory
Allow users and packagers to override the default dpdk/drivers
subdirectory where the PMDs get installed under $lib.
Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Timothy Redaelli <tredaelli@redhat.com>
Luca Boccassi [Tue, 2 Oct 2018 16:20:45 +0000 (17:20 +0100)]
build: change default driver installation directory
As part of the effort of consolidating the DPDK installation bits and
pieces across distros, set the default directory of lib/ where PMDs get
installed to dpdk/pmds-XX.YY. It's necessary to have a versioned
subdirectory as multiple ABI revisions might be installed at the same
time, so having a fixed name will cause trouble with the autoload
feature.
Small refactor with parsing and saving the major version to a variable,
since it's now used in 3 different places.
Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Timothy Redaelli <tredaelli@redhat.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:10:03 +0000 (15:10 +0100)]
net/vdev_netvsc: disable in FreeBSD build with meson
Disabled vdev_netvsc build in FreeBSD because it is not supported.
Added changes to enable vdev_netvsc build if it is Linux OS and
disable in FreeBSD.
Fixes:
9fc43dbfd66e ("net/vdev_netvsc: add in meson build")
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Stephen Hemminger <sthemmin@microsoft.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:10:02 +0000 (15:10 +0100)]
net/tap: disable in FreeBSD build with meson
Disabled tap build in FreeBSD because it is not supported
Added changes to enable tap build if it is Linux OS and
disable in FreeBSD.
Fixes:
095cae366804 ("net/tap: add in meson build")
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Keith Wiles <keith.wiles@intel.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:10:01 +0000 (15:10 +0100)]
net/softnic: disable in FreeBSD build with meson
Disabled softnic build in FreeBSD because it is not supported
Added changes to enable softnic build if it is Linux OS and
disable in FreeBSD.
Fixes:
6b2a3900e2fb ("net/softnic: add to meson build")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:10:00 +0000 (15:10 +0100)]
net/avp: disable in FreeBSD build with meson
Disabled avp build in FreeBSD because it is not supported.
Added changes to enable avp build if it is Linux OS and
disable in FreeBSD.
Fixes:
ed71204dd06c ("net/avp: add to meson build")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Allain Legacy <allain.legacy@windriver.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:09:59 +0000 (15:09 +0100)]
net/nfp: disable in FreeBSD build with meson
Disabled nfp build in FreeBSD because it is not supported
Added changes to enable NFP build if it is Linux OS and
disable in FreeBSD.
Fixes:
d9b9ca7e0595 ("net/nfp: add to meson build")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Agalya Babu RadhaKrishnan [Thu, 4 Oct 2018 14:09:58 +0000 (15:09 +0100)]
vfio: disable in FreeBSD build with meson
FreeBSD compilation was failing through meson build.
RTE_EAL_VFIO is not supported in FreeBSD.
But RTE_EAL_VFIO was enabled for both linux and freebsd.
So RTE_EAL_VFIO is removed from config/rte_config.h and
based on the platform RTE_EAL_VFIO flag is enabled/disabled appropriately.
Fixes:
844514c735 ("eal: build with meson")
Cc: stable@dpdk.org
Signed-off-by: Agalya Babu RadhaKrishnan <agalyax.babu.radhakrishnan@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Ferruh Yigit [Sat, 27 Oct 2018 00:38:15 +0000 (01:38 +0100)]
buildtools: fix build for some mktemp
build error:
== Build drivers/net/tap
mktemp: cannot create temp file /tmp/dpdk.auto-config-h.sh.XXX.c:
Invalid argument
.../buildtools/auto-config-h.sh: line 86: : No such file or directory
.../drivers/net/tap/Makefile:55: recipe for target
'tap_autoconf.h.new' failed
Above error observed on Wind River Linux 8.0
`mktemp` command in that system has a restrictions to have X in
the template at the end and at least six of them.
Complied to mktemp requirements and add -xc flag to compiler to say
`temp` file is a C file
Fixes:
ff37ca5d3773 ("devtools: use a common prefix for temporary files")
Reported-by: Shuai Zhu <shuaix.zhu@intel.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:48 +0000 (10:17 +0100)]
doc: add telemetry how-to
This patch adds all documentation for telemetry.
A description on how to use the Telemetry API with a DPDK
application is given in this document.
It also adds a release notes update for telemetry.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:49 +0000 (10:17 +0100)]
usertools: add client script for telemetry
This patch adds a python script which can be used as a demo
client. The script is interactive and will allow the user to
register, request statistics, and unregister.
To run the script, an argument for the client file path must
be passed in: "python telemetry_client.py <file_path>".
This script is useful to see how the Telemetry API for DPDK
is used, and how to make the initial connection.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Kevin Laatz [Sat, 27 Oct 2018 09:17:50 +0000 (10:17 +0100)]
build: add dependency on telemetry to apps with meson
This patch adds telemetry as a dependecy to all applications. Without these
changes, the --telemetry flag will not be recognised and applications will
fail to run if they want to enable telemetry.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:47 +0000 (10:17 +0100)]
telemetry: add ability to disable selftest
This patch adds functionality to enable/disable the selftest.
This functionality will be extended in future to make the
enabling/disabling more dynamic and remove this 'hardcoded' approach. We
are temporarily using this approach due to the design changes (vdev vs eal)
made to the library.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:46 +0000 (10:17 +0100)]
telemetry: format json response when sending stats
This patch adds functionality to create a JSON message in
order to send it to a client socket.
When stats are requested by a client, they are retrieved from
the metrics library and encoded in JSON format.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:45 +0000 (10:17 +0100)]
telemetry: update metrics before sending stats
This patch adds functionality to update the statistics in
the metrics library with values from the ethdev stats.
Values need to be updated before they are encoded into a JSON
message and sent to the client that requested them. The JSON encoding
will be added in a subsequent patch.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:44 +0000 (10:17 +0100)]
telemetry: add parser for client socket messages
This patch adds the parser file. This is used to parse any
messages that are received on any of the client sockets.
Currently, the unregister functionality works using the parser.
Functionality relating to getting statistic values for certain ports
will be added in a subsequent patch, however the parsing involved
for that command is added in this patch.
Some of the parser code included is in preparation for future
functionality, that is not implemented yet in this patchset.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:43 +0000 (10:17 +0100)]
telemetry: add client feature and sockets
This patch introduces clients to the telemetry API.
When a client makes a connection through the initial telemetry
socket, they can send a message through the socket to be
parsed. Register messages are expected through this socket, to
enable clients to register and have a client socket setup for
future communications.
A TAILQ is used to store all clients information. Using this, the
client sockets are polled for messages, which will later be parsed
and dealt with accordingly.
Functionality that make use of the client sockets were introduced
in this patch also, such as writing to client sockets, and sending
error responses.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:42 +0000 (10:17 +0100)]
telemetry: add initial connection socket
This patch adds the telemetry UNIX socket. It is used to
allow connections from external clients.
On the initial connection from a client, ethdev stats are
registered in the metrics library, to allow for their retrieval
at a later stage.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Ciara Power [Sat, 27 Oct 2018 09:17:41 +0000 (10:17 +0100)]
telemetry: introduce infrastructure
This patch adds the infrastructure and initial code for the telemetry
library.
The telemetry init is registered with eal_init(). We can then check to see
if --telemetry was passed as an eal option. If --telemetry was parsed, then
we call telemetry init at the end of eal init.
Control threads are used to get CPU cycles for telemetry, which are
configured in this patch also.
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Kevin Laatz [Sat, 27 Oct 2018 09:17:40 +0000 (10:17 +0100)]
eal: export function to get runtime directory
This patch makes the eal_get_runtime_dir() API public so it can be used
from outside EAL.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Kevin Laatz [Sat, 27 Oct 2018 09:17:39 +0000 (10:17 +0100)]
eal: add option register infrastructure
This commit adds infrastructure to EAL that allows an application to
register it's init function with EAL. This allows libraries to be
initialized at the end of EAL init.
This infrastructure allows libraries that depend on EAL to be initialized
as part of EAL init, removing circular dependency issues.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
Fiona Trahe [Tue, 23 Oct 2018 23:39:42 +0000 (00:39 +0100)]
common/qat: fix for invalid response from firmware
Check that the firmware response has a bit set indicating
it's valid before dereferencing the rest of the response contents.
Fixes:
0bdd36e12245 ("crypto/qat: make dequeue function generic")
Cc: stable@dpdk.org
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Fiona Trahe [Fri, 26 Oct 2018 18:18:30 +0000 (19:18 +0100)]
compress/qat: enable dynamic huffman encoding
Enable dynamic huffman encoding in the QAT comp PMD.
Signed-off-by: Tomasz Jozwiak <tomaszx.jozwiak@intel.com>
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Jerin Jacob [Fri, 26 Oct 2018 12:40:32 +0000 (12:40 +0000)]
app/testpmd: fix QinQ strip display option
Fix a typo on DEV_RX_OFFLOAD_QINQ_STRIP selection.
Fixes:
0074d02fca21 ("app/testpmd: convert to new Rx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Yong Wang [Fri, 26 Oct 2018 10:27:03 +0000 (06:27 -0400)]
doc: fix typo in testpmd guide
The forwarding mode mac_swap should be macswap in testpmd guide.
Fixes:
e76d7a768ce0 ("doc: fix syntax in testpmd user guide")
Cc: stable@dpdk.org
Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Stephen Hemminger [Fri, 19 Oct 2018 17:35:32 +0000 (10:35 -0700)]
ethdev: make offload name API non-experimental
The offload name functions are useful, but since they are
marked experimental they can not be used by upstream projects.
For example, VPP duplicates the same table in its code.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Chas Williams [Thu, 25 Oct 2018 22:04:37 +0000 (18:04 -0400)]
net/bonding: avoid making copy of MAC address
Calling rte_eth_macaddr_get to get a copy of the MAC address causes
a hot spot according to profiling. We can easily get the current
MAC address by just examining the bonded device.
Signed-off-by: Chas Williams <chas3@att.com>
Michal Krawczyk [Thu, 25 Oct 2018 17:59:23 +0000 (19:59 +0200)]
net/ena: change version to 1.1.1
Version change is connected with major bug fixes.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Stewart Allen [Thu, 25 Oct 2018 17:59:22 +0000 (19:59 +0200)]
net/ena: fix passing RSS hash to mbuf
The driver was passing to the mbuf Rx queue ID instead of hash received
from the device. Now, the RSS hash from the Rx descriptor is being set.
Fixes:
1173fca25af9 ("ena: add polling-mode driver")
Cc: stable@dpdk.org
Signed-off-by: Stewart Allen <allenste@amazon.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
Michal Krawczyk [Thu, 25 Oct 2018 17:59:21 +0000 (19:59 +0200)]
net/ena: recreate HW IO rings on start and stop
On the start the driver was refilling all Rx buffs, but the old ones
were not released. That way running start/stop for a few times was
causing device to run out of descriptors.
To fix the issue, IO rings are now being destroyed on stop, and
recreated on start. That way the device is not losing any descriptors.
Furthermore, there was also memory leak for the Rx mbufs, which were
created on start and not destroyed on stop.
Fixes:
eb0ef49dd5d5 ("net/ena: add stop and uninit routines")
Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Ilya Maximets [Wed, 10 Oct 2018 14:12:20 +0000 (17:12 +0300)]
drivers/net: use sleep delay by default for Intel NICs
NICs uses different delays up to a second during their
configuration. It makes no sense to busy-wait so long wasting
CPU cycles and preventing any other threads to execute on the
same CPU core. These busy polling are the rudiments that came
from the kernel drivers where you can not sleep in interrupt
context, but as we're in userspace, we're able and should
sleep to allow other threads to run.
Delays never called on rx/tx path, so this should not affect
performance.
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Ilya Maximets [Wed, 10 Oct 2018 14:12:19 +0000 (17:12 +0300)]
eal: add nanosleep based delay function
Add a new rte_delay_us_sleep() function that uses nanosleep().
This function can be used by applications to not implement
their own nanosleep() based callback and by internal DPDK
code if CPU non-blocking delay needed.
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Ilya Maximets [Thu, 4 Oct 2018 13:18:35 +0000 (16:18 +0300)]
net/*/base: allow experimental APIs
This functionality was missed while adding new drivers to
the meson build.
Fixes:
bfabd06000c0 ("net/avf: support meson build")
Fixes:
30d3d0168301 ("net/qede: add in meson build")
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Thomas Monjalon [Thu, 25 Oct 2018 15:11:17 +0000 (17:11 +0200)]
app/testpmd: setup attached ports on probe event
After probing is done, each new port must be setup.
The new ports are currently guessed by iterating on ports
matching the devargs string used for probing.
When probing a port, it is possible that one more port probing
get triggered (e.g. PF is automatically probed when probing
a VF representor). Such automatic probing will be caught only on event.
The iterator loop may be replaced by a call from the event callback.
In order to be able to test both modes, a command is added
to choose between iterator and event modes.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Thomas Monjalon [Thu, 25 Oct 2018 15:11:16 +0000 (17:11 +0200)]
app/testpmd: move ethdev events registration
The callback for ethdev events was registered on port start,
so it was missing some events.
It is now registered at the beginning of the main function.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Thomas Monjalon [Thu, 25 Oct 2018 15:11:15 +0000 (17:11 +0200)]
app/testpmd: check not configuring port twice
It is possible to request probing of a device twice,
and possibly get new ports for this device.
However, the ports which were already probed and setup
must not be setup again. That's why it is checked whether
the port is already part of fwd_ports_ids array at the beginning
of the function setup_attached_port().
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Thomas Monjalon [Thu, 25 Oct 2018 15:11:14 +0000 (17:11 +0200)]
app/testpmd: merge ports list update functions
The arrays ports_ids and fwd_ports_ids require the same kind
of update when some ports are removed or added.
The functions update_fwd_ports() and remove_unused_fwd_ports()
are merged in the new function remove_invalid_ports().
The part for adding new port is moved into setup_attached_port().
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Thomas Monjalon [Thu, 25 Oct 2018 15:11:13 +0000 (17:11 +0200)]
app/testpmd: check not detaching device twice
The command "port detach" is removing the EAL rte_device
of the ethdev port specified as parameter.
The function name and some comments are updated to make clear
that we are detaching the whole device.
After detaching, the pointer, which maps a port to its device,
is reset. This way, it is possible to check whether a port
is still associated to a (not removed) device.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Zhirun Yan [Thu, 25 Oct 2018 14:58:40 +0000 (14:58 +0000)]
net/ixgbe: update Tx offload mask
Tx offload mask is updated in following commit: commit
1037ed842c37
("mbuf: fix Tx offload mask"). Currently, the new added offload
flags are not supported in PMD and application will fail to call
PMD transmit prepare function.
This patch updates IXGBE_TX_OFFFLOAD_MASK.
Fixes:
1037ed842c37 ("mbuf: fix Tx offload mask")
Cc: stable@dpdk.org
Signed-off-by: Zhirun Yan <zhirun.yan@intel.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
Vipin Varghese [Fri, 12 Oct 2018 09:53:46 +0000 (15:23 +0530)]
net/ixgbe: prevent ic session leak on failure
For function ixgbe_crypto_create_session, fetches ic_session from the
mempool. But on failure scenarios, the object is not released back to
mempool. Using rte_mempool_put the ic_session is put back to mempool.
Signed-off-by: Vipin Varghese <vipin.varghese@intel.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
Thomas Monjalon [Wed, 24 Oct 2018 13:13:21 +0000 (15:13 +0200)]
ethdev: fix iterator default behaviour for representors
The iterator was matching all representors if it was not specified
in the devargs string. It was a wrong default behaviour.
If there is no representor parameter in the devargs, the iterator
should not match any representor port.
The implementation of the default behaviour would be simpler
if a "no match" handler is added to rte_kvargs_process().
As it requires an API breakage, it will be reworked later.
Fixes:
a7d3c6271d55 ("ethdev: support representor id as iterator filter")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Thomas Monjalon [Wed, 24 Oct 2018 13:12:32 +0000 (15:12 +0200)]
ethdev: filter destroy event before probed
If a port is being created and rollbacked because of an error,
the event RTE_ETH_EVENT_DESTROY should not be sent.
It makes no sense to receive a destroy event for a port which
was not yet announced via RTE_ETH_EVENT_NEW.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Olivier Matz [Tue, 23 Oct 2018 07:46:49 +0000 (09:46 +0200)]
net: support MPLS in software packet type parser
Add RTE_PTYPE_L2_ETHER_MPLS packet type support in rte_net_get_ptype().
Signed-off-by: Didier Pallard <didier.pallard@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Olivier Matz [Tue, 23 Oct 2018 07:46:48 +0000 (09:46 +0200)]
net: add MPLS header structure
Add the Mpls header structure in librte_net. It will be used by next
patch that adds the support of Mpls L2 layer in the software packet
type parser.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Dekel Peled [Wed, 24 Oct 2018 06:22:00 +0000 (09:22 +0300)]
ethdev: fix metadata documentation
Previous patch introduced the Tx metadata feature, with unnecessary
restrictions on data entry.
This fix updates the documentation, removing the data entry
restrictions on metadata item.
Fixes:
839b20be0e9b ("ethdev: support metadata as flow rule criteria")
Acked-by: Ori Kam <orika@mellanox.com>
Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Dekel Peled [Wed, 24 Oct 2018 06:21:59 +0000 (09:21 +0300)]
app/testpmd: fix metadata API and Tx insertion
Previous patch introduces the Tx metadata feature, with unnecessary
restrictions on data entry.
It also used the metadata in txonly fwd engine only.
This fix removes the data entry restrictions on metadata item.
It also implements callback function to add the metadata in every
Tx packet, sent by any fwd engine.
Fixes:
c18feafa193c ("app/testpmd: support metadata as flow rule item")
Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Rosen Xu [Tue, 23 Oct 2018 01:50:49 +0000 (09:50 +0800)]
raw/ifpga: check probing error
Fixes not checking rte_eal_hotplug_add() return value issue.
Coverity issue: 323508
Fixes:
ef1e8ede3da5 ("raw/ifpga: add Intel FPGA bus rawdev driver")
Cc: stable@dpdk.org
Signed-off-by: Rosen Xu <rosen.xu@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Ophir Munk [Tue, 23 Oct 2018 18:26:05 +0000 (18:26 +0000)]
net/mlx5: close all ports on remove
With the introduction of representors several eth devices are using
the same rte device (e.g. a PCI bus). When calling port detach on one
eth device it is required that all eth devices belonging to the
same rte device have been closed in advance, then the rte device
itself can be removed/detached.
This commit implements this requirement implicitly by adding a
remove callback to struct rte_pci_driver.
The new behavior can be demonstrated in testpmd.
First we attach a representor 0 using PCI address 0000:08:00.0
testpmd> port attach 0000:08:00.0,representor=[0]
Attaching a new port...
EAL: PCI device 0000:08:00.0 on NUMA socket 0
EAL: probe driver: 15b3:1013 net_mlx5
Port 0 is attached.
Done
Port 1 is attached.
Done
Port 0 is the master device (PF) - an ethdev of the PCI address.
Port 1 is representor 0 - another ethdev (representing a VF) using the
same PCI address. Next we detach port 1
testpmd> port detach 1
Removing a device...
Port 0 is closed
Port 1 is closed
Now total ports is 0
Done
Since port 0 has been implicitly closed we cannot act on it anymore.
testpmd> port stop 0
Invalid port 0
Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Ophir Munk [Tue, 23 Oct 2018 18:26:04 +0000 (18:26 +0000)]
net/mlx5: release port on close
With the introduction of representors several eth devices are using
the same rte device (e.g. a PCI bus). It is therefore required to
release the eth device resources during an eth device close operation
rather than during an rte device removal (detach) operation.
In current version many PMDs are still releasing the eth device as
part of the rte device removal. In order to allow a smooth transition
for all PMDs to behave correctly an ethdev flag RTE_ETH_DEV_CLOSE_REMOVE
is used. When this flag is set it indicates to rte_eth_dev_close() to
call rte_eth_dev_release_port(), so the port is freed during the close
operation.
Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Ophir Munk [Tue, 23 Oct 2018 18:26:03 +0000 (18:26 +0000)]
net/mlx5: allow multiple probing for representor
Implement probing of a rte device multiple times, see [1].
Set PCI driver RTE_PCI_DRV_PROBE_AGAIN flag to enable multiple probing
of the PCI device by the PCI common driver.
Consecutive probing requests with a devargs string may contain
repetitive master and representors devices for which eth device should
be created only once. In case an eth device already exists - silently
ignore it.
[1]
commit
e9d159c3d534 ("eal: allow probing a device again")
Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Yongseok Koh [Wed, 24 Oct 2018 12:36:15 +0000 (15:36 +0300)]
net/mlx5: fix bit width of item and action flags
Most of the code uses uint64_t for MLX5_FLOW_LAYER_* and
MLX5_FLOW_ACTION_*, but there're some code using uint32_t.
Fixes:
2ed2fe5f0a9c ("net/mlx5: rewrite IP address UDP/TCP port by E-Switch")
Fixes:
57123c00c1b8 ("net/mlx5: add Linux TC flower driver for E-Switch flow")
Fixes:
fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items")
Fixes:
3d69434113d1 ("net/mlx5: add Direct Verbs validation function")
Fixes:
84c406e74524 ("net/mlx5: add flow translate function")
Fixes:
23c1d42c7138 ("net/mlx5: split flow validation to dedicated function")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Yongseok Koh [Wed, 24 Oct 2018 12:36:14 +0000 (15:36 +0300)]
net/mlx5: fix flow tunnel handling
Both rte_flow and mlx5_flow redundantly have item flags. And it is not
properly set in the code. This causes wrong tunnel flag handling. A
rte_flow can have multiple expanded device flows if the flow has an RSS
action. Therefore, mlx5_flow should have the layers field.
Fixes:
c4d9b9f7f382 ("net/mlx5: add Direct Verbs final functions")
Fixes:
fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items")
Fixes:
3d69434113d1 ("net/mlx5: add Direct Verbs validation function")
Fixes:
84c406e74524 ("net/mlx5: add flow translate function")
Fixes:
4e05a229c5da ("net/mlx5: add flow prepare function")
Fixes:
23c1d42c7138 ("net/mlx5: split flow validation to dedicated function")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Yongseok Koh [Wed, 24 Oct 2018 12:36:13 +0000 (15:36 +0300)]
net/mlx5: rename static functions
In mlx5_flow*.c, static functions have names starting from 'flow_' while
shared ones start from "mlx5_flow_'.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Yongseok Koh [Tue, 23 Oct 2018 16:52:15 +0000 (16:52 +0000)]
net/mlx5: fix flow mark ID conversion in Direct Verbs
Fixes:
d02cb0691299 ("net/mlx5: add Direct Verbs translate actions")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Yongseok Koh [Tue, 23 Oct 2018 16:52:13 +0000 (16:52 +0000)]
net/mlx5: fix wildcard item for Direct Verbs
If a network layer is specified with no spec, it means wildcard match.
flow_dv_translate_item_*() returns without writing anything if spec is
null and it causes creation of wrong flow. E.g., the following flow has to
patch with any ipv4 packet.
flow create 0 ingress pattern eth / ipv4 / end actions ...
But, with the current code, it matches any packet because PMD doesn't write
anything about IPv4. The matcher value and mask becomes completely zero. It
should have written the IP version at least. It is same for the rest of
items.
Even if the spec is null, PMD has to write constant fields before return,
e.g. IP version and IP protocol number.
Fixes:
fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Yongseok Koh [Tue, 23 Oct 2018 16:52:12 +0000 (16:52 +0000)]
net/mlx5: fix item validation in Direct Verbs
1) remove MPLS item in validation as it doesn't have a translator.
2) add missing NVGRE item to validation
3) match switch-case order between validation and translation.
Fixes:
fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items")
Fixes:
3d69434113d1 ("net/mlx5: add Direct Verbs validation function")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Yongseok Koh [Tue, 23 Oct 2018 16:52:10 +0000 (16:52 +0000)]
net/mlx5: fix UDP hash field flag in Direct Verbs
Fixes:
fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Yongseok Koh [Tue, 23 Oct 2018 16:52:09 +0000 (16:52 +0000)]
net/mlx5: add warning message for Direct Verbs flow
In case that the library doesn't support DV flow, if enabled by
'dv_flow_en=1', print out a warning message and disable it.
Fixes:
51e72d386c99 ("net/mlx5: add runtime parameter to enable Direct Verbs")
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:16 +0000 (10:04 +0000)]
net/mlx5: support new flow counter API
This patch updates the functions performing the Verbs ibrary calls
in order to support different versions of the library.
The functions:
- flow_verbs_counter_new()
- flow_verbs_counter_release()
- flow_verbs_counter_query()
now have the several compilation branches, depending on the
counters support found in the system at compile time.
The flow_verbs_counter_create() function is introduced as
helper for flow_verbs_counter_new(), actually this helper
create the counters with Verbs.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:15 +0000 (10:04 +0000)]
net/mlx5: remove unnecessary structure initializers
The unnecessary structure filed initializers to zero are removed.
We need to do this minor preparation before the following
mlx5 counter structure modification.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:14 +0000 (10:04 +0000)]
net/mlx5: add new flow counter Verbs API to glue library
This patch updates the mlx5 glue library, new counter support
Verbs function pointers are added to the glue linking structure
mlx5_glue. This structure now contains the pointers to the both
versions of counter supporting functions due to compatibility
issues. Depending on configuration macros the functions perform
actual Verbs library calls or return an error with meaning
"feature is not supported" (NULL or ENOTSUP).
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:13 +0000 (10:04 +0000)]
net/mlx5: relocate flow counters query function
The flow_verbs_query_count() is moved into the the group of counter
managing functions and renamed to flow_verbs_counter_query() in order
to be in unified fashion with others.
Also minor function modification is made to avoid unreachable code
warnings if there is no counter support at compile time.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:13 +0000 (10:04 +0000)]
net/mlx5: simplify flow counters support check
The redundant check of Flow counters support in runtime is removed.
The flag flow_counter_en is eliminated from the code. The Verbs
create counter function just returns an error if no counter
support presented in the system.
If there is no any of Flow counters configuration macro defined
the log message is emited, indicating the missing counter support.
mlx5_flow_validate_action_count() fuctnion is also updated due to
flow_counter_en flag removal.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:12 +0000 (10:04 +0000)]
net/mlx5: introduce new flow counters configuration macro
The new configuration macro HAVE_IBV_DEVICE_COUNTERS_SET_V45 is
introduced. Both makefile and meson.build are changed.
Flow counter support code depends on the following configuration
macros:
- HAVE_IBV_DEVICE_COUNTERS_SET_V42 - is defined if system supports
the "old" flow counters functionality, MLNX_OFED version from
4.2 to 4.4 is required.
- HAVE_IBV_DEVICE_COUNTERS_SET_V45 - is defined if system supports
the "new" flow counters functionality, MLNX_OVED 4.5 (or higher)
or Linux rdma-core v19 (or higher) is required.
Neither HAVE_IBV_DEVICE_COUNTERS_SET_V42 nor
HAVE_IBV_DEVICE_COUNTERS_SET_V45 is defined if there is no
counters support.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:11 +0000 (10:04 +0000)]
net/mlx5: rename flow counter configuration macro
The HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT is replaced with
HAVE_IBV_DEVICE_COUNTERS_SET_V42. At this stage it is just
macro renaming. This macro is defined if system supports
the "old" Flow counters functionality, MLNX_OFED version
from 4.2 to 4.4 is required.
We need to do this preparation before introducing the new
configuration macro (HAVE_IBV_DEVICE_COUNTERS_SET_V45) for
the "new" Flow counters support.
Both makefile and meson.build are changed.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Viacheslav Ovsiienko [Tue, 23 Oct 2018 10:04:10 +0000 (10:04 +0000)]
net/mlx5: fix flow counters creation
The Flow counter creation function contains two problems:
- Flow counter object in Verbs is not freed in case of memory
allocation error. The call of counter Verbs object deallocating
function is added to fix.
- The initial value of reference counter is set to one in order
to provide the correct counter object freeing in the
flow_verbs_counter_release() function. The reference counter
field should be initialized to one.
Fixes:
60bd8c9747e8 ("net/mlx5: add count flow action")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Tiwei Bie [Wed, 24 Oct 2018 09:39:48 +0000 (17:39 +0800)]
vhost: initialize postcopy ufd properly
Currently, postcopy_ufd is initialized to 0 implicitly, so fd 0
could be closed unexpectedly by vhost_backend_cleanup(). Fix this
issue by initializing postcopy_ufd to -1 explicitly.
Fixes:
9eefef3b5970 ("vhost: introduce postcopy advise message")
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Maxime Coquelin [Tue, 23 Oct 2018 10:07:10 +0000 (12:07 +0200)]
vhost: avoid memory barriers when no descriptors dequeued
In both split and packed dequeue paths, flush_shadow_used_ring
and vhost_ring_call variants gets called even if not packets
have been dequeued, and so no descriptors updates happened.
It has an impact on CPU pipeline, as memory barriers are used
in these functions.
This patch don't call these functions if no descriptors have
been dequeued. The performance gain with split ring when
dequeue zero-copy is disabled should be null, but should be
noticeable with packed ring or dequeue zero-copy enabled.
Fixes:
ae999ce49dcb ("vhost: add Tx support for packed ring")
Fixes:
915cf9404225 ("vhost: use shadow used ring in dequeue path")
Cc: stable@dpdk.org
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
Tested-by: Jens Freimann <jfreimann@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Beilei Xing [Tue, 23 Oct 2018 06:14:31 +0000 (14:14 +0800)]
net/i40e: update Tx offload mask
Tx offload mask is updated in following commit:
commit
1037ed842c37 ("mbuf: fix Tx offload mask").
Currently, the new added offload flags are not supported in PMD
and application will fail to call PMD transmit prepare function.
This patch updates PMD Tx offload mask.
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Wei Zhao [Tue, 23 Oct 2018 03:38:10 +0000 (11:38 +0800)]
net/ixgbe: fix RSS flow error return
If hash function is 0, it should disable RSS then return 0.
Fixes:
518cc3927b13 ("net/ixgbe: move RSS to flow API")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Xiaolong Ye [Tue, 23 Oct 2018 00:54:28 +0000 (08:54 +0800)]
net/i40e: cancel alarm handler at the end of closure
Some operations in i40evf_dev_close like i40evf_dev_promiscuous_disable
still need alarm handler to clear the pending cmd, if alarm handler is
canceled in early stage of i40evf_dev_close,
i40evf_dev_promiscuous_disable will result in failure.
Fixes:
864a800d706d ("net/i40e: remove VF interrupt handler")
Cc: stable@dpdk.org
Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
Haiyue Wang [Mon, 22 Oct 2018 07:47:41 +0000 (15:47 +0800)]
net/i40e: enable loopback function for X722 MAC
In FVL, there was an issue and it didn't support the loopback function
before FW 5.0. For FPK (X722) it should work.
So it needs to distinguish between the devices by checking MAC type.
Fixes:
689bba33272d ("i40e: add VEB switching support")
Fixes:
bce83974ba2c ("net/i40e: set Tx loopback from PF")
Cc: stable@dpdk.org
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>