dpdk.git
6 years agoraw/dpaa2_cmdif: introduce DPAA2 command interface driver
Nipun Gupta [Fri, 4 May 2018 10:11:26 +0000 (15:41 +0530)]
raw/dpaa2_cmdif: introduce DPAA2 command interface driver

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/fslmc: keep Tx queues information for DPCI devices
Nipun Gupta [Fri, 4 May 2018 10:11:25 +0000 (15:41 +0530)]
bus/fslmc: keep Tx queues information for DPCI devices

The DPCI devices have both Tx and Rx queues. Event devices use
DPCI Rx queues only, but CMDIF (AIOP) uses both Tx and Rx queues.
This patch enables Tx queues configuration too.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/fslmc: expose API to free DPCI device
Nipun Gupta [Fri, 4 May 2018 10:11:24 +0000 (15:41 +0530)]
bus/fslmc: expose API to free DPCI device

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agomempool/dpaa2: add functions for CMDIF
Nipun Gupta [Fri, 4 May 2018 10:11:23 +0000 (15:41 +0530)]
mempool/dpaa2: add functions for CMDIF

There are two API's which are required by NXP specific Command Interface
Application (AIOP CMDIF). This patch exposes these two API's.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agodoc: add DPAA2 QDMA rawdev guide
Nipun Gupta [Thu, 3 May 2018 16:06:10 +0000 (21:36 +0530)]
doc: add DPAA2 QDMA rawdev guide

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agoraw/dpaa2_qdma: support enqueue/dequeue operations
Nipun Gupta [Thu, 3 May 2018 16:06:09 +0000 (21:36 +0530)]
raw/dpaa2_qdma: support enqueue/dequeue operations

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agoraw/dpaa2_qdma: support configuration APIs
Nipun Gupta [Thu, 3 May 2018 16:06:08 +0000 (21:36 +0530)]
raw/dpaa2_qdma: support configuration APIs

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agoraw/dpaa2_qdma: introduce the DPAA2 QDMA driver
Nipun Gupta [Thu, 3 May 2018 16:06:07 +0000 (21:36 +0530)]
raw/dpaa2_qdma: introduce the DPAA2 QDMA driver

DPAA2 QDMA driver uses MC DPDMAI object. This driver enables
the user (app) to perform data DMA without involving CPU in
the DMA process

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/fslmc: add macros required by QDMA for FLE and FD
Nipun Gupta [Thu, 3 May 2018 16:06:06 +0000 (21:36 +0530)]
bus/fslmc: add macros required by QDMA for FLE and FD

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/fslmc: support scanning and probing of QDMA devices
Nipun Gupta [Thu, 3 May 2018 16:06:05 +0000 (21:36 +0530)]
bus/fslmc: support scanning and probing of QDMA devices

'dpdmai' devices detected on fsl-mc bus are represented by DPAA2 QDMA
devices in DPDK.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/fslmc: support MC DPDMAI object
Nipun Gupta [Thu, 3 May 2018 16:06:04 +0000 (21:36 +0530)]
bus/fslmc: support MC DPDMAI object

This patch adds the DPDMAI (Data Path DMA Interface)
object support in MC driver.

Signed-off-by: Cristian Sovaiala <cristian.sovaiala@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agodrivers/raw: support meson build
Nipun Gupta [Thu, 3 May 2018 16:06:03 +0000 (21:36 +0530)]
drivers/raw: support meson build

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agomaintainers: resign from vhost and vdev
Jianfeng Tan [Thu, 3 May 2018 09:52:01 +0000 (09:52 +0000)]
maintainers: resign from vhost and vdev

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
6 years agoversion: 18.05-rc2
Thomas Monjalon [Wed, 2 May 2018 21:12:16 +0000 (23:12 +0200)]
version: 18.05-rc2

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agonet/ixgbe: check probing error
Declan Doherty [Wed, 2 May 2018 15:59:41 +0000 (16:59 +0100)]
net/ixgbe: check probing error

Add NULL parameter check for rte_eth_dev_allocated() API call to
eth_ixgbe_pci_probe().

Coverity Issue: 277216
Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/ixgbe: fix probe with no devargs
Declan Doherty [Wed, 2 May 2018 15:59:40 +0000 (16:59 +0100)]
net/ixgbe: fix probe with no devargs

Initialise rte_ethdev_args parameters to zero to handle
the case where no devargs are passed to the IXGBE PF on
device probe, so that there is no invalid attempts to create
representor ports.

Coverity Issue: 277231
Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/ixgbe: revert default PF device name
Declan Doherty [Wed, 2 May 2018 15:59:39 +0000 (16:59 +0100)]
net/ixgbe: revert default PF device name

Changes introduced by cf80ba6e2038 modified the default name generated
for the IXGBE PF PMD, this patch reverts the default name to the
original PCI BDBF.

Fixes: cf80ba6e2038 ("net/ixgbe: add support for representor ports")

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/axgbe: fix jumbo setting overwritten
Ravi Kumar [Wed, 2 May 2018 08:47:24 +0000 (04:47 -0400)]
net/axgbe: fix jumbo setting overwritten

Stored register value to enable jumbo frame was always
overwritten. Assigning value based on rx_buf_size.

Coverity issue: 277239
Fixes: 7c4158a5b592 ("net/axgbe: add DMA programming and start/stop")

Signed-off-by: Ravi Kumar <ravi1.kumar@amd.com>
6 years agonet/i40e: remove dependence on Tx queue flags
Qi Zhang [Wed, 2 May 2018 03:56:33 +0000 (11:56 +0800)]
net/i40e: remove dependence on Tx queue flags

Since we move to new offload APIs, txq_flags is no long needed.
This patch remove the dependence on that.

Fixes: 7497d3e2f777 ("net/i40e: convert to new Tx offloads API")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/i40e: fix queue offload initialization
Qi Zhang [Wed, 2 May 2018 03:56:32 +0000 (11:56 +0800)]
net/i40e: fix queue offload initialization

Add missing queue offload initialization.

Fixes: 7497d3e2f777 ("net/i40e: convert to new Tx offloads API")
Fixes: c3ac7c5b0b8a ("net/i40e: convert to new Rx offloads API")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/vmxnet3: convert to new Rx offload API
Louis Luo [Tue, 1 May 2018 21:22:56 +0000 (14:22 -0700)]
net/vmxnet3: convert to new Rx offload API

Ethdev RX offloads API has changed since: commit ce17eddefc20
("ethdev: introduce Rx queue offloads API")

This patch adopts the new RX Offload API in vmxnet3 driver.

Signed-off-by: Louis Luo <llouis@vmware.com>
Acked-by: Yong Wang <yongwang@vmware.com>
6 years agonet/dpaa2: add missing device info fields
Hemant Agrawal [Tue, 1 May 2018 10:44:28 +0000 (16:14 +0530)]
net/dpaa2: add missing device info fields

Add the hashed RSS support info and other fields in device info.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: fix RSS hash support
Hemant Agrawal [Tue, 1 May 2018 10:44:27 +0000 (16:14 +0530)]
net/dpaa: fix RSS hash support

Fixes: 4fa5e0bbc573 ("net/dpaa: support hashed RSS")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/i40e: fix Tx function selection with new offloads
Bruce Richardson [Tue, 1 May 2018 14:13:54 +0000 (15:13 +0100)]
net/i40e: fix Tx function selection with new offloads

The Tx function selection code in the driver only used the older txq
flags values to check whether the scalar or vector functions should be
used. This caused performance regressions with testpmd io-fwd as the
scalar path rather than the vector one was being used in the default
case. Fix this by changing the code to take account of new offloads and
deleting the defines used for the old ones.

Fixes: 7497d3e2f777 ("net/i40e: convert to new Tx offloads API")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/i40e: revert default PF device name
Declan Doherty [Mon, 30 Apr 2018 15:30:20 +0000 (16:30 +0100)]
net/i40e: revert default PF device name

Changes introduced by e0cb96204b71 modified the default name generated
for the i40e PF PMD, this patch reverts the default name to the
original PCI BDF.

Fixes: e0cb96204b71 ("net/i40e: add support for representor ports")

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/mlx4: fix inner RSS support for broken kernels
Adrien Mazarguil [Thu, 26 Apr 2018 16:26:16 +0000 (18:26 +0200)]
net/mlx4: fix inner RSS support for broken kernels

Linux 4.15 and 4.16 may report inner RSS as a supported capability of the
device, however it can't be used due to missing code in the kernel.

This triggers an error when creating the default hash QP and prevents this
PMD from starting up without a prior call to rte_flow_isolate().

Fixes: 55e8991e3199 ("net/mlx4: restore inner VXLAN RSS support")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agonet/mlx4: fix default RSS hash fields
Adrien Mazarguil [Thu, 26 Apr 2018 16:26:15 +0000 (18:26 +0200)]
net/mlx4: fix default RSS hash fields

Using special types value -1 with mlx4_conv_rss_types() is supposed to
return a supported set of Verbs RSS hash fields, that is, priv->hw_rss_sup
unmodified.

Due to the way this function is written and because it is also used to
initially populate priv->hw_rss_sup however, this special value works
properly only once and fails with ENOTSUP errors afterward.

This problem can be seen when re-creating default flows (e.g. by entering
and leaving isolated mode).

Fixes: 024e87bef40b ("net/mlx4: restore UDP RSS by probing capabilities")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agonet/mlx4: fix Rx resource leak in case of error
Adrien Mazarguil [Thu, 26 Apr 2018 16:26:13 +0000 (18:26 +0200)]
net/mlx4: fix Rx resource leak in case of error

When creation of a flow rule fails during dev_start(), the usage count of
the common RSS context is not decremented, which triggers an assertion
failure in debug mode during dev_close().

This is addressed by tracking the initialization status of the common RSS
context in order to add missing cleanup code.

A similar issue exists in mlx4_rxq_attach(), where usage count is
incremented on a Rx queue but not released in case of error. This may lead
to the above issue since RSS contexts created by flow rules attach
themselves to Rx queues, incrementing their usage count.

Fixes: 5697a4142107 ("net/mlx4: relax Rx queue configuration order")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agonet/mlx5: fix flow director rule deletion crash
Adrien Mazarguil [Thu, 26 Apr 2018 16:17:46 +0000 (18:17 +0200)]
net/mlx5: fix flow director rule deletion crash

Flow director rules matching traffic properties above layer 2 do not
target a fixed hash Rx queue (HASH_RXQ_ETH), it actually depends on the
highest protocol layer specified by each flow rule.

mlx5_fdir_filter_delete() makes this wrong assumption and causes a crash
when attempting to destroy flow rules with L3/L4 specifications.

Fixes: 4c3e9bcdd52e ("net/mlx5: support flow director")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agoeal/x86: fix atomic exchange for 32-bit
Konstantin Ananyev [Wed, 2 May 2018 13:58:26 +0000 (14:58 +0100)]
eal/x86: fix atomic exchange for 32-bit

Should break out of loop when rte_atomic64_cmpset() returns non-zero.

Fixes: ff2863570fcc ("eal: introduce atomic exchange operation")

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agomalloc: avoid padding elements on page deallocation
Anatoly Burakov [Wed, 2 May 2018 15:38:16 +0000 (16:38 +0100)]
malloc: avoid padding elements on page deallocation

Currently, when deallocating pages, malloc will fixup other
elements' headers if there is not enough space to store a full
element in leftover space. This leads to race conditions because
there are some functions that check for pad size with an unlocked
heap, expecting pad size to be constant.

Fix it by being more conservative and only freeing pages when
there is enough space before and after the page to store a free
element.

Fixes: 1403f87d4fb8 ("malloc: enable memory hotplug support")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomalloc: set pad to 0 on free
Anatoly Burakov [Wed, 2 May 2018 15:38:15 +0000 (16:38 +0100)]
malloc: set pad to 0 on free

The pad value is not used unless element is in pad state, but it
will show up in heap dumps and may be confusing.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agoeal: fix use-after-free on control thread creation
Jianfeng Tan [Wed, 2 May 2018 13:52:14 +0000 (13:52 +0000)]
eal: fix use-after-free on control thread creation

After below commit, we encounter some strange issue:
  1) Dead lock as described here:
     http://dpdk.org/ml/archives/dev/2018-April/099806.html
  2) SIGSEGV issue when starting a testpmd in VM.

Considering below commit changes to use dynamic memory instead of
stack for memory barrier, we doubt it's caused by use-after-free.

Fixes: 3d09a6e26d8b ("eal: fix threads block on barrier")

Reported-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reported-by: Lei Yao <lei.a.yao@intel.com>
Suggested-by: Stephen Hemminger <stephen@networkplumber.org>
Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
6 years agoeal: fix memory leak on control thread failure
Jianfeng Tan [Wed, 2 May 2018 10:26:32 +0000 (10:26 +0000)]
eal: fix memory leak on control thread failure

params is not freed if pthread_create() fails. The fix is
straight-forward.

Fixes: 3d09a6e26d8b ("eal: fix threads block on barrier")

Reported-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
6 years agoethdev: remove error return on RSS hash check
Ferruh Yigit [Tue, 1 May 2018 13:33:43 +0000 (14:33 +0100)]
ethdev: remove error return on RSS hash check

Many sample applications fail because of
dev_info.flow_type_rss_offloads check in rte_eth_dev_configure()

The sample applications need to be fixed/updated before returning error
on rte_eth_dev_configure() and rte_eth_dev_rss_hash_update().

This patch keeps the error logs but removes returning errors.

Fixes: 8863a1fbfc66 ("ethdev: add supported hash function check")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agoigb_uio: pass MODULE_CFLAGS in Kbuild
Luca Boccassi [Tue, 1 May 2018 13:50:33 +0000 (14:50 +0100)]
igb_uio: pass MODULE_CFLAGS in Kbuild

With the legacy build system MODULE_CFLAGS can be set to pass compiler
flags specific for the kernel modules builds.
This is used currently by Ubuntu and Debian.
Set ccflags-y in the Kbuild to achieve the same result with Meson, and
to keep backward compatbility with older scripts.

Fixes regression in Ubuntu/Debian when the Kbuild is included in the
DKMS source package, as DKMS will pick it up silently by default if
present, causing the MODULE_CFLAGS to be ignored.

Fixes: a52f4574f798 ("igb_uio: build with meson")
Cc: stable@dpdk.org
Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agoexamples/flow_classify: fix validation in port init
Bernard Iremonger [Mon, 30 Apr 2018 13:43:54 +0000 (14:43 +0100)]
examples/flow_classify: fix validation in port init

The port_init function calls the rte_eth_dev_is_valid_port function.
This function now returns 1 if the port state is attached.
A return value of 1 now means a valid port.

Fixes: a9dbe1802226 ("fix ethdev port id validation")

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
6 years agomalloc: fix heap size not set on init
Anatoly Burakov [Wed, 25 Apr 2018 13:42:55 +0000 (14:42 +0100)]
malloc: fix heap size not set on init

When heap initializes, we need to add already allocated segments
onto the heap. However, in doing that, we never increased total
heap size. Fix it by adding segment length to total heap length
when initializing the heap.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomem/linux: fix hugedir write deadlock
Anatoly Burakov [Mon, 30 Apr 2018 10:38:19 +0000 (11:38 +0100)]
mem/linux: fix hugedir write deadlock

At hugepage info initialization, EAL takes out a write lock on
hugetlbfs directories, and drops it after the memory init is
finished. However, in non-legacy mode, if "-m" or "--socket-mem"
switches are passed, this leads to a deadlock because EAL tries
to allocate pages (and thus take out a write lock on hugedir)
while still holding a separate hugedir write lock in EAL.

Fix it by checking if write lock in hugepage info is active, and
not trying to lock the directory if the hugedir fd is valid.

Fixes: 1a7dc2252f28 ("mem: revert to using flock and add per-segment lockfiles")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Tested-by: Shahaf Shuler <shahafs@mellanox.com>
Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agoversion: 18.05-rc1
Thomas Monjalon [Fri, 27 Apr 2018 22:26:04 +0000 (00:26 +0200)]
version: 18.05-rc1

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agodoc: update memory option usage for FreeBSD
Reshma Pattan [Fri, 27 Apr 2018 12:59:22 +0000 (13:59 +0100)]
doc: update memory option usage for FreeBSD

EAL option -m is supported in FreeBSD,
so move it under supported heading from non
supported heading.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomaintainers: call out subtree for bbdev and security
Pablo de Lara [Fri, 13 Apr 2018 08:14:39 +0000 (09:14 +0100)]
maintainers: call out subtree for bbdev and security

Commits for bbdev and security libraries are merged
into the Next Crypto subtree.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
6 years agomaintainers: add backup for next-crypto tree
Akhil Goyal [Thu, 12 Apr 2018 08:32:16 +0000 (14:02 +0530)]
maintainers: add backup for next-crypto tree

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
6 years agomaintainers: claim EAL memory init
Anatoly Burakov [Mon, 23 Apr 2018 12:29:57 +0000 (13:29 +0100)]
maintainers: claim EAL memory init

Claim maintainership of all areas of EAL memory init, including
OS-specific parts of it.

Also, claim maintainership of fbarray, since although it's not
related to memory allocation, it is heavily used by it and its
primary purpose is to serve memory allocation functions, and
thus will appear under "memory allocation" banner.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
6 years agomem: revert to using flock and add per-segment lockfiles
Anatoly Burakov [Thu, 19 Apr 2018 10:20:21 +0000 (11:20 +0100)]
mem: revert to using flock and add per-segment lockfiles

The original implementation used flock() locks, but was later
switched to using fcntl() locks for page locking, because
fcntl() locks allow locking parts of a file, which is useful
for single-file segments mode, where locking the entire file
isn't as useful because we still need to grow and shrink it.

However, according to fcntl()'s Ubuntu manpage [1], semantics of
fcntl() locks have a giant oversight:

  This interface follows the completely stupid semantics of System
  V and IEEE Std 1003.1-1988 (“POSIX.1”) that require that all
  locks associated with a file for a given process are removed
  when any file descriptor for that file is closed by that process.
  This semantic means that applications must be aware of any files
  that a subroutine library may access.

Basically, closing *any* fd with an fcntl() lock (which we do because
we don't want to leak fd's) will drop the lock completely.

So, in this commit, we will be reverting back to using flock() locks
everywhere. However, that still leaves the problem of locking parts
of a memseg list file in single file segments mode, and we will be
solving it with creating separate lock files per each page, and
tracking those with flock().

We will also be removing all of this tailq business and replacing it
with a simple array - saving a few bytes is not worth the extra
hassle of dealing with pointers and potential memory allocation
failures. Also, remove the tailq lock since it is not needed - these
fd lists are per-process, and within a given process, it is always
only one thread handling access to hugetlbfs.

So, first one to allocate a segment will create a lockfile, and put
a shared lock on it. When we're shrinking the page file, we will be
trying to take out a write lock on that lockfile, which would fail if
any other process is holding onto the lockfile as well. This way, we
can know if we can shrink the segment file. Also, if no other locks
are found in the lock list for a given memseg list, the memseg list
fd is automatically closed.

One other thing to note is, according to flock() Ubuntu manpage [2],
upgrading the lock from shared to exclusive is implemented by dropping
and reacquiring the lock, which is not atomic and thus would have
created race conditions. So, on attempting to perform operations in
hugetlbfs, we will take out a writelock on hugetlbfs directory, so
that only one process could perform hugetlbfs operations concurrently.

[1] http://manpages.ubuntu.com/manpages/artful/en/man2/fcntl.2freebsd.html
[2] http://manpages.ubuntu.com/manpages/bionic/en/man2/flock.2.html

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")
Fixes: a5ff05d60fc5 ("mem: support unmapping pages at runtime")
Fixes: 2a04139f66b4 ("eal: add single file segments option")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: add memalloc init stage
Anatoly Burakov [Thu, 19 Apr 2018 09:40:48 +0000 (10:40 +0100)]
mem: add memalloc init stage

Currently, memseg lists for secondary process are allocated on
sync (triggered by init), when they are accessed for the first
time. Move this initialization to a separate init stage for
memalloc.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: improve autodetection of hugepage counts on 32-bit
Anatoly Burakov [Tue, 24 Apr 2018 10:19:24 +0000 (11:19 +0100)]
mem: improve autodetection of hugepage counts on 32-bit

For non-legacy mode, we are preallocating space for hugepages, so
we know in advance which pages we will be able to allocate, and
which we won't. However, the init procedure was using hugepage
counts gathered from sysfs and paid no attention to hugepage
sizes that were actually available for reservation, and failed
on attempts to reserve unavailable pages.

Fix this by limiting total page counts by number of pages
actually preallocated.

Also, VA preallocate procedure only looks at mountpoints that are
available, and expects pages to exist if a mountpoint exists. That
might not necessarily be the case, so also check if there are
hugepages available for a particular page size on a particular
NUMA node.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Jananee Parthasarathy <jananeex.m.parthasarathy@intel.com>
6 years agomem: improve preallocation on 32-bit
Anatoly Burakov [Fri, 20 Apr 2018 15:25:26 +0000 (16:25 +0100)]
mem: improve preallocation on 32-bit

Previously, if we couldn't preallocate VA space on 32-bit for
one page size, we simply bailed out, even though we could've
tried allocating VA space with other page sizes.

For example, if user had both 1G and 2M pages enabled, and
has asked DPDK to allocate memory on both sockets, DPDK
would've tried to allocate VA space for 1x1G page on both
sockets, failed and never tried again, even though it
could've allocated the same 1G of VA space for 512x2M pages.

Fix this by retrying with different page sizes if VA space
reservation failed.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Jananee Parthasarathy <jananeex.m.parthasarathy@intel.com>
6 years agomem: fix 32-bit memory upper limit for non-legacy mode
Anatoly Burakov [Fri, 20 Apr 2018 15:25:25 +0000 (16:25 +0100)]
mem: fix 32-bit memory upper limit for non-legacy mode

32-bit mode has an upper limit on amount of VA space it can preallocate,
but the original implementation used the wrong constant, resulting in
failure to initialize due to integer overflow. Fix it by using the
correct constant.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Tested-by: Jananee Parthasarathy <jananeex.m.parthasarathy@intel.com>
6 years agomalloc: check for heap corruption
Anatoly Burakov [Mon, 16 Apr 2018 15:04:27 +0000 (16:04 +0100)]
malloc: check for heap corruption

Previous code checked for both first/last elements being NULL,
but if they weren't, the expectation was that they're both
non-NULL, which will be the case under normal conditions, but
may not be the case due to heap structure corruption.

Coverity issue: 272566
Fixes: bb372060dad4 ("malloc: make heap a doubly-linked list")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agomalloc: fix out-of-bounds segment array access
Anatoly Burakov [Mon, 16 Apr 2018 16:45:00 +0000 (17:45 +0100)]
malloc: fix out-of-bounds segment array access

Technically, while the pointer would've been invalid if msl_idx
were invalid, we wouldn't have actually attempted to access the
pointer until verifying the index. Fix it by moving array access
to after we've verified validity of the index.

Coverity issue: 272574
Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agomalloc: replace snprintf with strlcpy
Anatoly Burakov [Tue, 17 Apr 2018 14:20:45 +0000 (15:20 +0100)]
malloc: replace snprintf with strlcpy

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
6 years agomem: log page address before unmapping
Anatoly Burakov [Tue, 17 Apr 2018 10:57:52 +0000 (11:57 +0100)]
mem: log page address before unmapping

If user has specified a flag to unmap the area right after mapping it,
we were passing an already-unmapped pointer to RTE_LOG. This is not an
issue since RTE_LOG doesn't actually dereference the pointer, but fix
it anyway by moving call to RTE_LOG to before unmap.

Coverity issue: 272584
Fixes: b7cc54187ea4 ("mem: move virtual area function in common directory")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix page fault trigger
Anatoly Burakov [Fri, 27 Apr 2018 16:38:21 +0000 (17:38 +0100)]
mem: fix page fault trigger

Coverity reports these lines as having no effect. Technically, we do
want for those lines to have no effect, however they would've likely
been optimized out. Add volatile qualifiers to ensure the code has
effects.

Coverity issue: 272608
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix potential bad unmap on map failure
Anatoly Burakov [Mon, 16 Apr 2018 14:37:30 +0000 (15:37 +0100)]
mem: fix potential bad unmap on map failure

Previously, if mmap failed to map page address at requested
address, we were attempting to unmap the wrong address. Fix it
by unmapping our actual mapped address, and jump further to
avoid unmapping memory that is not allocated.

Coverity issue: 272602
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix comparison of old policy
Anatoly Burakov [Mon, 16 Apr 2018 16:18:55 +0000 (17:18 +0100)]
mem: fix comparison of old policy

Previous code had an old rebase leftover from the time when
oldpolicy was an actual int, instead of a pointer. Fix it to
do comparison with dereferencing the pointer.

Coverity issue: 272589
Fixes: 582bed1e1d1d ("mem: support mapping hugepages at runtime")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix potential resource leak on alloc
Anatoly Burakov [Mon, 16 Apr 2018 15:37:03 +0000 (16:37 +0100)]
mem: fix potential resource leak on alloc

Normally, tailq entry should have a valid fd by the time we attempt
to map the segment. However, in case it doesn't, we're leaking fd,
so fix it.

Coverity issue: 272570
Fixes: 2a04139f66b4 ("eal: add single file segments option")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomem: fix potential resource leak on freeing
Anatoly Burakov [Mon, 16 Apr 2018 15:31:08 +0000 (16:31 +0100)]
mem: fix potential resource leak on freeing

We close fd if we managed to find it in the list of allocated
segment lists (which should always be the case under normal
conditions), but if we didn't, the fd was leaking. Close it if
we couldn't find it in the segment list. This is not an issue
as if the segment is zero length, we're getting rid of it
anyway, so there's no harm in not storing the fd anywhere.

Coverity issue: 272568
Fixes: 2a04139f66b4 ("eal: add single file segments option")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix potential double close on map failure
Anatoly Burakov [Mon, 16 Apr 2018 15:11:55 +0000 (16:11 +0100)]
mem: fix potential double close on map failure

We were closing descriptor before checking if mapping has
failed, but if it did, we did a second close afterwards. Fix
it by moving closing descriptor to after we've done all error
checks.

Coverity issue: 272560
Fixes: 2a04139f66b4 ("eal: add single file segments option")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agomem: fix resource leak on map failure
Anatoly Burakov [Mon, 16 Apr 2018 14:40:02 +0000 (15:40 +0100)]
mem: fix resource leak on map failure

Coverity issue: 272601
Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: use strlcpy instead of snprintf
Anatoly Burakov [Tue, 17 Apr 2018 13:42:27 +0000 (14:42 +0100)]
mem: use strlcpy instead of snprintf

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
6 years agomem: fix resize return handling for --single-file-segments
Jianfeng Tan [Thu, 26 Apr 2018 08:06:53 +0000 (08:06 +0000)]
mem: fix resize return handling for --single-file-segments

resize_hugefile() returns either 0 (which indicates success) or -1
(which indicates failure). We failed to check the success as we
use --single-file-segments option.

Fixes: 2a04139f66b4 ("eal: add single file segments option")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
6 years agoeal: fix threads block on barrier
Jianfeng Tan [Fri, 27 Apr 2018 16:41:42 +0000 (16:41 +0000)]
eal: fix threads block on barrier

Below commit introduced pthread barrier for synchronization.
But two IPC threads block on the barrier, and never wake up.

  (gdb) bt
  #0  futex_wait (private=0, expected=0, futex_word=0x7fffffffcff4)
      at ../sysdeps/unix/sysv/linux/futex-internal.h:61
  #1  futex_wait_simple (private=0, expected=0, futex_word=0x7fffffffcff4)
      at ../sysdeps/nptl/futex-internal.h:135
  #2  __pthread_barrier_wait (barrier=0x7fffffffcff0) at pthread_barrier_wait.c:184
  #3  rte_thread_init (arg=0x7fffffffcfe0)
      at ../dpdk/lib/librte_eal/common/eal_common_thread.c:160
  #4  start_thread (arg=0x7ffff6ecf700) at pthread_create.c:333
  #5  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Through analysis, we find the barrier defined on the stack could be the
root cause. This patch will change to use heap memory as the barrier.

Fixes: d651ee4919cd ("eal: set affinity for control threads")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agobus/dpaa: optimize physical to virtual address search
Shreyansh Jain [Fri, 27 Apr 2018 17:20:58 +0000 (22:50 +0530)]
bus/dpaa: optimize physical to virtual address search

With Hotplugging memory support, the order of memseg has been changed
from physically contiguous to virtual contiguous. DPAA bus and drivers
depend on PA to VA address conversion for I/O.

This patch creates a list of blocks requested to be pinned to the
DPAA mempool. For searching physical addresses, it is expected that
it would belong to this list (from hardware pool) and hence it is
less expensive than memseg walks. Though, there is a marginal drop
in performance vis-a-vis the legacy mode with physically contiguous
memsegs.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agobus/fslmc: optimize physical to virtual address search
Shreyansh Jain [Fri, 27 Apr 2018 17:20:57 +0000 (22:50 +0530)]
bus/fslmc: optimize physical to virtual address search

With Hotplugging memory support, the order of memseg has been changed
from physically contiguous to virtual contiguous. FSLMC bus and dpaa2
drivers depend on PA to VA address conversion when in Physical
addressing mode.

This patch creates a list of blocks requested to be pinned to the
DPAA2 mempool. For searching physical addresses, it is expected that
it would belong to this list (from hardware pool) and hence it is
less expensive than memseg walks. Though, this has marginal impact on
performance vis-a-vis legacy mode with physically contiguous memsegs.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
6 years agocrypto/dpaa_sec: remove ctx based offset for PA-VA conversion
Shreyansh Jain [Fri, 27 Apr 2018 17:20:56 +0000 (22:50 +0530)]
crypto/dpaa_sec: remove ctx based offset for PA-VA conversion

Crypto requires physical to virtual address conversion for
descriptors. Prior to memory hotplugging this was based on memseg
iteration assuming memsegs are all physical contiguous and using
cached start address fast calculations can be done. This
assumption now stands invalid with memory hotplugging support.

In preparation for supporting hotplugging change to memory,
this patchset removes the optimized pool context stored physical
address offset based PA-VA conversion.

This adversely affects the performance as complete memsegs now need
to be parsed, but a rework containing necessary optimization would be
posted over this.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
6 years agoapp/testpmd: conserve offload flags of mbuf
Yongseok Koh [Fri, 27 Apr 2018 17:22:52 +0000 (10:22 -0700)]
app/testpmd: conserve offload flags of mbuf

This patch is to accommodate an experimental feature of mbuf - external
buffer attachment. If mbuf is attached to an external buffer, its ol_flags
will have EXT_ATTACHED_MBUF set. Without enabling/using the feature,
everything remains same.

If PMD delivers Rx packets with non-direct mbuf, ol_flags should not be
overwritten. For mlx5 PMD, if Multi-Packet RQ is enabled, Rx packets could
be carried with externally attached mbufs.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agombuf: support attaching external buffer
Yongseok Koh [Fri, 27 Apr 2018 17:22:51 +0000 (10:22 -0700)]
mbuf: support attaching external buffer

This patch introduces a new way of attaching an external buffer to a mbuf.

Attaching an external buffer is quite similar to mbuf indirection in
replacing buffer addresses and length of a mbuf, but a few differences:
  - When an indirect mbuf is attached, refcnt of the direct mbuf would be
    2 as long as the direct mbuf itself isn't freed after the attachment.
    In such cases, the buffer area of a direct mbuf must be read-only. But
    external buffer has its own refcnt and it starts from 1. Unless
    multiple mbufs are attached to a mbuf having an external buffer, the
    external buffer is writable.
  - There's no need to allocate buffer from a mempool. Any buffer can be
    attached with appropriate free callback.
  - Smaller metadata is required to maintain shared data such as refcnt.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agovhost/crypto: fix checks while moving descriptors
Fan Zhang [Fri, 27 Apr 2018 14:06:08 +0000 (15:06 +0100)]
vhost/crypto: fix checks while moving descriptors

This patch fix final condition check while moving virtqueue
descriptors.

Fixes: 3bb595ecd682 ("vhost/crypto: add request handler")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
6 years agovhost/crypto: fix missing head correction
Fan Zhang [Fri, 27 Apr 2018 13:52:33 +0000 (14:52 +0100)]
vhost/crypto: fix missing head correction

This patch fixes the missing head descriptor correction for
indirect descriptors.

Fixes: 0aee2428419f ("vhost/crypto: move to safe GPA translation API")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
6 years agovhost: fix vDPA set features
Xiao Wang [Wed, 25 Apr 2018 02:18:27 +0000 (10:18 +0800)]
vhost: fix vDPA set features

We should call set_features callback after setting features in virtio_net
structure, otherwise vDPA driver cannot get the right features.

Fixes: 07718b4f87aa ("vhost: adapt library for selective datapath")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Zhihong Wang <zhihong.wang@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
6 years agovhost: revert avoid concurrency when logging dirty pages
Maxime Coquelin [Fri, 20 Apr 2018 08:39:21 +0000 (10:39 +0200)]
vhost: revert avoid concurrency when logging dirty pages

This reverts commit 394313fff39d0f994325c47f7eab39daf5dc9e11.

While the patch did solve concurrency issue, it induces more
pages copies as some clean pages are marked as dirty for
performance reasons. Moreover, as there is no more contention
doing the logging, the rate of packets than can be processed is
higher, leading to even more pages to be dirtied.

It has been reported that with more than one queue pair, and
with a relatively low packet rate (1Mpps), the live migration
never converges until the flow is stopped.

While a better solution is found, it is better to reset to the
old behaviour, i.e. using atomic operation for dirty pages
logging.

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
6 years agodoc: update doc and release notes for szedata2 driver
Matej Vido [Fri, 27 Apr 2018 08:57:05 +0000 (10:57 +0200)]
doc: update doc and release notes for szedata2 driver

New version of the packages with dependencies for the szedata2
driver is needed due to the new API of the libsze2 library which
is used in the driver.
The documentation and the release notes are updated to contain
the information about the required versions.

Signed-off-by: Matej Vido <vido@cesnet.cz>
Acked-by: Jan Remes <remes@netcope.com>
6 years agonet/i40e: fix checking offload
Yanglong Wu [Fri, 27 Apr 2018 08:14:07 +0000 (16:14 +0800)]
net/i40e: fix checking offload

Missing "return -ENOTSUP" will always lead to illegal offload
passing through offload checking.

Fixes: 7497d3e2f777 ("net/i40e: convert to new Tx offloads API")

Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
6 years agonet/i40e: fix missing jumbo frame offload capability
Yanglong Wu [Wed, 18 Apr 2018 01:42:04 +0000 (09:42 +0800)]
net/i40e: fix missing jumbo frame offload capability

JUMBO_FRAME offload capability should be exposed since i40e
does support it

Fixes: c3ac7c5b0b8a ("net/i40e: convert to new Rx offloads API")

Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agoethdev: rename folder to library name
Ferruh Yigit [Thu, 26 Apr 2018 21:25:59 +0000 (22:25 +0100)]
ethdev: rename folder to library name

Library folder name and output library name are same except a few flaws
including librte_ether.

This library is network device abstraction layer, the name "ethdev" fits
better than "ether", and library & header files already named as ethdev.

Also there is a rte_ether.h in the net library which can cause confusion.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
6 years agonet/bonding: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:46 +0000 (08:56 -0700)]
net/bonding: convert to dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/vhost: implement dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:45 +0000 (08:56 -0700)]
net/vhost: implement dynamic logging

Use dynamic log type (instead of PMD) in vhost.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/pcap: support dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:44 +0000 (08:56 -0700)]
net/pcap: support dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/kni: support dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:43 +0000 (08:56 -0700)]
net/kni: support dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/failsafe: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:42 +0000 (08:56 -0700)]
net/failsafe: convert to dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/softnic: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:41 +0000 (08:56 -0700)]
net/softnic: convert to dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/ring: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:40 +0000 (08:56 -0700)]
net/ring: convert to dynamic logging

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/null: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:39 +0000 (08:56 -0700)]
net/null: convert to dynamic logging

Convert null device to use dynamic logging.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/af_packet: convert to dynamic log level
Stephen Hemminger [Wed, 25 Apr 2018 15:56:38 +0000 (08:56 -0700)]
net/af_packet: convert to dynamic log level

Convert this driver to use dynamic log level support.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agonet/tap: convert to dynamic logging
Stephen Hemminger [Wed, 25 Apr 2018 15:56:37 +0000 (08:56 -0700)]
net/tap: convert to dynamic logging

Use new logging macro to convert all calls to RTE_LOG() into
new dynamic log type.

Also fix whitespace.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
6 years agodoc: advertise equal stride super-buffer Rx mode in net/sfc
Andrew Rybchenko [Thu, 19 Apr 2018 11:37:06 +0000 (12:37 +0100)]
doc: advertise equal stride super-buffer Rx mode in net/sfc

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc: support MARK and FLAG actions in flow API
Roman Zhukov [Thu, 19 Apr 2018 11:37:05 +0000 (12:37 +0100)]
net/sfc: support MARK and FLAG actions in flow API

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc: make processing of flow rule actions more uniform
Roman Zhukov [Thu, 19 Apr 2018 11:37:04 +0000 (12:37 +0100)]
net/sfc: make processing of flow rule actions more uniform

Prepare function that parse flow rule actions to support not
fate-deciding actions.

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc/base: get max supported value for action MARK
Roman Zhukov [Thu, 19 Apr 2018 11:37:03 +0000 (12:37 +0100)]
net/sfc/base: get max supported value for action MARK

The mark value for MATCH_ACTION_MARK has a maximum value.
Requesting a value larger than the maximum will cause the
filter insertion to fail with EINVAL. This patch allows the
driver to check the value at the filter validation.

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc/base: support MARK and FLAG actions in filters
Roman Zhukov [Thu, 19 Apr 2018 11:37:02 +0000 (12:37 +0100)]
net/sfc/base: support MARK and FLAG actions in filters

This patch adds support for DPDK rte_flow "MARK" and "FLAG" filter
actions to filters on EF10 family NICs.

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc/base: get actions MARK and FLAG support
Roman Zhukov [Thu, 19 Apr 2018 11:37:01 +0000 (12:37 +0100)]
net/sfc/base: get actions MARK and FLAG support

Filter actions MARK and FLAG are supported on Medford2 by DPDK
firmware variant.

Signed-off-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc: support flow marks in equal stride super-buffer Rx
Andrew Rybchenko [Thu, 19 Apr 2018 11:37:00 +0000 (12:37 +0100)]
net/sfc: support flow marks in equal stride super-buffer Rx

Equal stride super-buffer Rx mode allows to mark packets in HW
using filters. Process the data on datapath and advertise
corresponding features to allow flow API support to implement it.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
6 years agonet/sfc: add Rx descriptor wait timeout
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:59 +0000 (12:36 +0100)]
net/sfc: add Rx descriptor wait timeout

Add device argument to customize Rx descriptor wait timeout which
is supported in DPDK firmware variant only in equal stride super-buffer
Rx mode only.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: support DPDK firmware variant
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:58 +0000 (12:36 +0100)]
net/sfc: support DPDK firmware variant

DPDK firmware variant supports equal stride super-buffer Rx mode which
provides higher packet rate and packet marks but requires dedicated
mempool manager with contiguous object block allocation (e.g. bucket).

Also the firmware supports subvariant without checksumming on Tx which
allows to reach higher packet rates on transmit if checksumming is not
required.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: check mempool when equal stride super-buffer used
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:57 +0000 (12:36 +0100)]
net/sfc: check mempool when equal stride super-buffer used

Equal stride super-buffer requires mempool with contiguous object
block allocation mechanism. Bucket mempool is the only which provides it.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: support callback to check if mempool is supported
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:56 +0000 (12:36 +0100)]
net/sfc: support callback to check if mempool is supported

The callback is a dummy yet since no Rx datapath provides its own
callback, so all pools are supported.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: support equal stride super-buffer Rx mode
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:55 +0000 (12:36 +0100)]
net/sfc: support equal stride super-buffer Rx mode

HW Rx descriptor represents many contiguous packet buffers which
follow each other. Number of buffers, stride and maximum DMA
length are setup-time configurable per Rx queue based on provided
mempool. The mempool must support contiguous block allocation and
get info API to retrieve number of objects in the block.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: allow to take mbuf pool into account when sizing
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:54 +0000 (12:36 +0100)]
net/sfc: allow to take mbuf pool into account when sizing

The new argument will be used by the equal stride super-buffer
Rx datapath.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
6 years agonet/sfc: allow one Rx queue entry carry many packet buffers
Andrew Rybchenko [Thu, 19 Apr 2018 11:36:53 +0000 (12:36 +0100)]
net/sfc: allow one Rx queue entry carry many packet buffers

One HW Rx descriptor has many packet buffers in the case of equal
stride super-buffer Rx modes. Each packet buffer is still treated
as separate SW Rx descriptor. rxq_entries is the size of HW Rx ring
whereas nb_rx_desc is the number of SW Rx descriptors.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>