The rx_queues and tx_queues fields of the data structure points to a struct
virtnet_rx or virtnet_tx. Casting it to a virtqueue is an error.
It does not trigger any bug because pointer is not dereferenced inside the
function, but it can become a bug if this code is copy/pasted and vq is
dereferenced.
Olivier Matz [Tue, 12 Dec 2017 08:43:19 +0000 (09:43 +0100)]
net/bntx: use new API to get iova address XXX
XXX: use mbuf instead of m ?
The functions rte_mbuf_data_dma_addr*() are deprecated.
Replace them with their iova version. Also rename the 'data' variable
to 'm' (for mbuf) to avoid confusion.
Olivier Matz [Tue, 12 Dec 2017 08:50:39 +0000 (09:50 +0100)]
net/bnxt: fix headroom initialization
When allocating a new mbuf for Rx, the value of m->data_off should not
be reset to its default value (RTE_PKTMBUF_HEADROOM), instead of reusing
the previous undefined value, which could cause the packet to have a too
small or too high headroom.
Samuel Gauthier [Wed, 21 Jun 2017 15:04:49 +0000 (17:04 +0200)]
mk: fix libs installation when installing sdk
The 'install-sdk' target creates an invalid symlink in the install
directory:
# make install-sdk DESTDIR=/tmp/toto V=1
[...]
ln -snf $(/root/dpdk.org/buildtools/relpath.sh /tmp/toto/usr/local/lib \
/tmp/toto/usr/local/share/dpdk/x86_64-native-linuxapp-gcc/) \
/tmp/toto/usr/local/share/dpdk/x86_64-native-linuxapp-gcc/lib
[...]
# ls -l /tmp/toto/usr/local/share/dpdk/x86_64-native-linuxapp-gcc
drwxr-xr-x 2 root root 4096 Dec 11 11:49 app
lrwxrwxrwx 1 root root 21 Dec 11 11:49 include -> ../../../include/dpdk
lrwxrwxrwx 1 root root 12 Dec 11 11:49 lib -> ../../../lib # WRONG LINK
This happens because the directory is not created. Moreover, it makes
sense for install-sdk to install the libs, which could be necessary to
build something against dpdk. After the patch, the link is correct and
the *.a libs are properly installed:
# ls -l /tmp/toto/usr/local/share/dpdk/x86_64-native-linuxapp-gcc
drwxr-xr-x 2 root root 4096 Dec 11 11:53 app
lrwxrwxrwx 1 root root 21 Dec 11 11:53 include -> ../../../include/dpdk
lrwxrwxrwx 1 root root 12 Dec 11 11:53 lib -> ../../../lib
# ls -l /tmp/toto/usr/local/share/dpdk/x86_64-native-linuxapp-gcc/lib/
-rw-r--r-- 1 root root 1378 Dec 8 14:08 libdpdk.a
-rw-r--r-- 1 root root 123380 Dec 8 14:02 librte_acl.a
-rw-r--r-- 1 root root 3406 Dec 8 14:02 librte_bitratestats.a
[...]
Olivier Matz [Mon, 11 Dec 2017 10:26:08 +0000 (11:26 +0100)]
ethdev: fix missing imissed counter in xstats
imissed counter has been set as deprecated in commit 49f386542af4
("ethdev: remove driver specific stats") and removed from the
rte_eth_xstats_name_off structure.
The imissed counter has been restored few commits later but has not been
restored in the rte_eth_stats structure. Add it back again.
Fixes: 4eadb8ba11b7 ("ethdev: do not deprecate imissed counter") Cc: stable@dpdk.org Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Olivier Matz [Fri, 1 Dec 2017 15:08:57 +0000 (16:08 +0100)]
mbuf: fix mbuf free performance with non atomic refcnt
When RTE_MBUF_REFCNT_ATOMIC=n, the decrement of the mbuf reference
counter uses an atomic operation. This is not necessary and impacts
the performance (seen with TRex traffic generator).
We cannot replace rte_atomic16_add_return() by rte_mbuf_refcnt_update()
because it would add an additional check.
Solves this by introducing __rte_mbuf_refcnt_update(), which
updates the reference counter without doing anything else.
Fixes: 8f094a9ac5d7 ("mbuf: set mbuf fields while in pool") Suggested-by: Hanoch Haim <hhaim@cisco.com> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Olivier Matz [Mon, 4 Dec 2017 08:54:17 +0000 (09:54 +0100)]
net: update licence for network headers
To be compliant with the DPDK licensing guidelines, switch to
BSD-3-Clause. It can be done safely since the BSD headers from which
these files derive also exist as a BSD-3-Clause license in FreeBSD.
Olivier Matz [Wed, 29 Nov 2017 09:57:10 +0000 (10:57 +0100)]
eal: new function to create control threads
Many parts of dpdk use their own management threads. Introduce a new
wrapper for thread creation that will be extended in next commit to set
the name and affinity.
To be consistent with other DPDK APIs, the return value is negative in
case of error, which was not the case for pthread_create().
Thomas Monjalon [Wed, 15 Nov 2017 17:54:07 +0000 (18:54 +0100)]
doc: fix GSO guide as PDF
The PDF cannot be built because of some images integration being
forced as SVG. They are converted for PDF format, so the extension
must be a wildcard in the RST file.
Maria Lingemark [Tue, 14 Nov 2017 08:04:24 +0000 (09:04 +0100)]
pdump: fix typo in error log
Fixes: 278f945402c5 ("pdump: add new library for packet capture") Signed-off-by: Maria Lingemark <maria.lingemark@ericsson.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Update types of variables to correspond to nb_segs type change from
uint8_t to uint16_t.
Fixes: 97cb466d65c9 ("mbuf: use 2 bytes for port and nb segments") Cc: stable@dpdk.org Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Andrew Rybchenko [Tue, 14 Nov 2017 11:32:35 +0000 (11:32 +0000)]
net/sfc: avoid Tx queue setup failure if thresholds are set
Tx queue prefetch, host and writeback thresholds are used for
performance fine-tuning and not applicable to Solarflare NICs.
It is safe to just log warning and do not fail Tx queue setup
to be more friendly to DPDK applications which hardcode it.
Fixes: b1b7ad933b39 ("net/sfc: set up and release Tx queues") Cc: stable@dpdk.org Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Andrew Rybchenko [Tue, 14 Nov 2017 11:32:34 +0000 (11:32 +0000)]
net/sfc: avoid Rx queue setup failure if thresholds are set
Rx queue prefetch, host and writeback thresholds are used for
performance fine-tuning and not applicable to Solarflare NICs.
It is safe to just log warning and do not fail Rx queue setup
to be more friendly to DPDK applications which hardcode it.
Pengzhen Liu [Fri, 27 Oct 2017 03:54:09 +0000 (11:54 +0800)]
net/virtio: fix memory leak on failure
In function eth_virtio_dev_init(), dynamic memory stored
in "eth_dev->data->mac_addrs" variable and it is not freed
when function return,
this is a possible memory leak.
Fixes: 8ced1542f7a3 ("net/virtio: eth_dev->data->mac_addrs is not freed") Cc: stable@dpdk.org Signed-off-by: Pengzhen Liu <liupengzhen3@huawei.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
In weak memory order architectures (powerpc,arm), the 2nd load might be
reodered before the 1st load, that makes *entries is bigger than we wanted.
This nasty reording messed enque/deque up.
load r->cons.head
load r->prod.tail
...
store r->cons.{head,tail}
load r->cons.head
Then, r->cons.head will be bigger than prod_tail, then make *entries very
big and the consumer will go forward incorrectly.
After this patch, the old cons.head will be recaculated after failure of
rte_atomic32_cmpset
There is no such issue on X86, because X86 is strong memory order model.
But rte_smp_rmb() doesn't have impact on runtime performance on X86, so
keep the same code without architectures specific concerns.
Fixes: 50d769054872 ("ring: add burst API") Cc: stable@dpdk.org Signed-off-by: Jia He <jia.he@hxt-semitech.com> Signed-off-by: Jie Liu <jie2.liu@hxt-semitech.com> Signed-off-by: Bing Zhao <bing.zhao@hxt-semitech.com> Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Jianbo Liu <jianbo.liu@arm.com>
Pablo de Lara [Tue, 24 Oct 2017 09:55:54 +0000 (10:55 +0100)]
maintainers: update PTP client example
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com> Acked-by: John McNamara <john.mcnamara@intel.com>
Pablo de Lara [Tue, 24 Oct 2017 09:56:44 +0000 (10:56 +0100)]
maintainers: update job stats library
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Pawel Wodkowski <pawelx.wodkowski@intel.com> Acked-by: John McNamara <john.mcnamara@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: John McNamara <john.mcnamara@intel.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org> Acked-by: Kevin Traynor <ktraynor@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
Moti Haimovsky [Thu, 9 Nov 2017 17:30:56 +0000 (19:30 +0200)]
doc: update mlx4 documentation
This updates mlx4 documentation and DPDK release notes
to reflect the PMD support for rdma-core from linux-rdma.
- PMD is now freed from Mellanox OFED and now only depends on the
public rdma-core package (v15 and above) instead.
(see https://github.com/linux-rdma/rdma-core/releases)
This PMD should run under Linux v4.14 and above.
- In case any of the above requirements can't be satisfied,
Mellanox OFED v4.2 and above also provide an updated rdma-core
as well back-ported kernel modules for most Linux distributions
and previous Linux versions.
(see http://www.mellanox.com/page/products_dyn?product_family=26).
Thomas Monjalon [Wed, 8 Nov 2017 20:44:10 +0000 (21:44 +0100)]
doc: move fast mbuf free feature in net guide
The feature was added at the end of the table.
And the description was between the anchor _nic_features_timesync
and its title.
It is moved near related features with a new anchor.
It is also renamed from "mbuf fast free" to "fast mbuf free".
Fixes: d6f90afd3070 ("ethdev: add mbuf fast free Tx offload") Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
If pdump_pktmbuf_copy_data() fails it's possible to have segment leak
as rte_pktmbuf_free() only handles m_dup chain but not the seg just
allocated and yet not chained.
Fixes: 278f945402c5 ("pdump: add new library for packet capture") Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com>
This patch fixes three problems in memory autotest:
- the regex for IOVA
- missing validation of second and following output lines
- propagation of error to consecutive tests
- conversion base for mem size (hex indtead of dec)
First fix is for changes introduced with IOVA, the regex was not
updated which lead to unit test failure. Patch now also uses loop for
line outputs processing to verify more than just one line. By this we
also satisfy the pexpect() and scan the "Test OK"/"Test Failed" so in
case of error all output lines are consumed and does not break the
consecutive test (error does not propagate).
Fixes: 7ba49d39f14c ("mem: rename segment address from physical to IOVA") Fixes: b4ce15aa2bc7 ("app/test: fix memory autotest") Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
This patch fixes the memory leaks in memzone_autotest. Those memory leaks
lead to failures in tests from the same testing group due to out of memory
problems. With introduction of rte_memzone_free() it is now possible to
free the memzone. Fix uses this API call to make a clean after each test
case.
Jasvinder Singh [Fri, 10 Nov 2017 10:30:49 +0000 (10:30 +0000)]
app/testpmd: remove port status check from TM command
Currently, testpmd CLI doesn't permit to add leaf and non-leaf node when
port is started. It doesn't work in case of i40e device as DCB
configuration is deleted when port is stopped. Therefore, removes the
port status check before invoking leaf and nonleaf node API in the cli.
If needed, device can add port status check at the driver layer.
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Zhiyong Yang [Thu, 9 Nov 2017 09:21:24 +0000 (17:21 +0800)]
net/virtio: fix Rx interrupt with VFIO
When running l3fwd-power to test virtio rxq interrupt using vfio
pci noiommu mode, startup fails. In the function virtio_read_caps,
the code if (flags & PCI_MSIX_ENABLE) intends to double check
if vfio msix is enabled or not. However, it is not enable at that
time. So use_msix is assigned to "0", not "1", which causes the
failure of configuring rxq intr in l3fwd-power.
This patch adds the function "vtpci_msix_detect" to detect the status
of msix when interrupt changes happen.
In the meanwhile, virtio_intr_enable/disable are introduced to wrap
rte_intr_enable/disable to enhance the ability to detect msix.
use_msix can indicate three different msix status by:
VIRTIO_MSIX_NONE (0)
VIRTIO_MSIX_DISABLED (1)
VIRTIO_MSIX_ENABLED (2)
Fixes: cb482cb3a305 ("net/virtio: fix MAC address read") Cc: stable@dpdk.org Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Edward Makarov [Fri, 10 Nov 2017 14:18:04 +0000 (14:18 +0000)]
net/mlx5: fix link speed bitmasks
The constant ETHTOOL_LINK_MODE_1000baseT_Full_BIT and the others like
that in mlx5_link_update_unlocked_gs must be bit masks but unfortunately
they are bit numbers. This commit fixes the issue.
Fixes: 188408719888 ("net/mlx5: fix support for newer link speeds") Cc: stable@dpdk.org Signed-off-by: Edward Makarov <makarov@kraftway.ru> Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Matan Azrad [Fri, 10 Nov 2017 08:27:18 +0000 (08:27 +0000)]
net/mlx4: fix missing stamp during Tx completion
After processing completed packets, the owner bit of each TXBB comprised
in its WQEs must be invalidated. The loop stops short of processing the
last WQE.
Ajit Khaparde [Thu, 9 Nov 2017 17:46:28 +0000 (11:46 -0600)]
net/bnxt: fix link handling and configuration
Remove a case where we were sending a deprecated field to the FW.
There is no need to send auto_link_speed to the FW.
Also set the auto_mode correctly depending on the setting requested.
Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
We do not know how big can the BAR be, but we know anything less
than 1MB is an error. This BAR needs to be big enough for accessing
most of NFP internals.
Coverity issue: 195024 Fixes: d12206e00590 ("net/nfp: add NSP user space interface") Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Fixes: 97cb466d65c9 ("mbuf: use 2 bytes for port and nb segments") Cc: stable@dpdk.org Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Moti Haimovsky [Thu, 9 Nov 2017 08:59:33 +0000 (10:59 +0200)]
net/mlx4: fix Rx packet type offloads
This patch improves Rx packet type offload report in case the device is
a virtual function device.
In these devices we observed that the L2 tunnel flag is set also for
non-tunneled packets, this leads to a complete misinterpretation of the
packet type being received.
This issue occurs since the tunnel_mode is not set to 0x7 by the driver
for virtual devices and therefore the value in the L2 tunnel flag is
meaningless and should be ignored.
Xiaoyun Li [Thu, 9 Nov 2017 06:30:14 +0000 (14:30 +0800)]
net/i40e: fix VF cannot forward packets issue
When Rx interrupt is not enabled, there is no need to check if interrupt
allow others. It will cause VF cannot forwarding packets issue. This patch
fixes this issue.
Fixes: 96a9fd03c25f ("net/i40e: fix Rx queue interrupt mapping in VF") Cc: stable@dpdk.org Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com> Acked-by: Beilei Xing <beilei.xing@intel.com>
Akhil Goyal [Thu, 9 Nov 2017 12:23:57 +0000 (17:53 +0530)]
security: fix anonymous unions in structure definitions
Fixes: c261d1431bd8 ("security: introduce security API and framework") Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Radu Nicolau [Thu, 9 Nov 2017 09:57:21 +0000 (09:57 +0000)]
examples/ipsec-secgw: fix build with gcc 4.5.1
On SUSE11 with gcc 4.5.1 the following build error occurred,
most likely because of improper handling of annonymous unions:
examples/ipsec-secgw/ipsec.c:87:4 error:
unknown field ‘ipsec’ specified in initializer
Fixes: ec17993a145a ("examples/ipsec-secgw: support security offload") Signed-off-by: Radu Nicolau <radu.nicolau@intel.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Thomas Monjalon [Mon, 6 Nov 2017 14:40:54 +0000 (15:40 +0100)]
doc: adjust column width of PMD overview tables
The net PMD overview table is big and required to be shrunk.
The crypto PMD tables had variable column sizes: the latest
columns were smaller.
The minimum width is set to 0.9em without any forced padding.
The maximum width is set to 2em.
The width of the first column set by sphinx is overridden to 0
for full elasticity.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: John McNamara <john.mcnamara@intel.com>