dpdk.git
7 years agonet/failsafe: fix errno set on command execution
Gaetan Rivet [Wed, 30 Aug 2017 15:59:54 +0000 (17:59 +0200)]
net/failsafe: fix errno set on command execution

This is unacceptable behavior.

Fixes: a0194d828100 ("net/failsafe: add flexible device definition")
Fixes: 35ffe4208140 ("net/failsafe: fix missing pclose after popen")
Cc: stable@dpdk.org
Reported-by: Matan Azrad <matan@mellanox.com>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/sfc: support Tx descriptor status API
Ivan Malov [Wed, 30 Aug 2017 09:08:47 +0000 (10:08 +0100)]
net/sfc: support Tx descriptor status API

Support for the feature is added to EFX Tx datapath

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/sfc: support Rx descriptor status API
Ivan Malov [Wed, 30 Aug 2017 09:08:46 +0000 (10:08 +0100)]
net/sfc: support Rx descriptor status API

Support for the feature is added to EFX Rx datapath

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/liquidio: add API to set MTU
Shijith Thotton [Wed, 30 Aug 2017 07:11:58 +0000 (12:41 +0530)]
net/liquidio: add API to set MTU

Support MTU change in the range ETHER_MIN_MTU to PF_MTU. A drop in PF
MTU lowers VF MTU if it goes out of range.

Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
7 years agonet/mlx5: fix probe failure report
Matan Azrad [Sun, 13 Aug 2017 12:25:12 +0000 (15:25 +0300)]
net/mlx5: fix probe failure report

The corrupted code doesn't return error when probe function
fails due to error in device mac address getting.
By this way, the probe function may return success even if the
ETH dev is not allocated.

Hence, the probe caller, for example failsafe PMD, fails when it
tries to get ETH dev after the device was plugged out while mlx5
was probing it.

The fix adds error report to the probe caller when priv_get_mac fails
and in all other failure options which are missing it.

By this way, it prevents the unexpected behavior to miss ETH device
after the device was probed successfully.

This bug was already present in the original code taken from mlx4.

Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters")
Fixes: 1371f4df16bc ("mlx5: check port is configured as ethernet device")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: improve stack usage during link update
Nélio Laranjeiro [Wed, 30 Aug 2017 14:47:07 +0000 (16:47 +0200)]
net/mlx5: improve stack usage during link update

Allocate no more memory than necessary for the second call to
ETHTOOL_GLINKSETTINGS.

Cc: stable@dpdk.org
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix clang build
Nélio Laranjeiro [Wed, 30 Aug 2017 14:47:06 +0000 (16:47 +0200)]
net/mlx5: fix clang build

On redhat 7.2 clang reports the following error:
   CC mlx5_rxmode.o
 /drivers/net/mlx5/mlx5_ethdev.c:820:32: error: field 'edata' with
 variable sized type 'struct ethtool_link_settings' not at the end
 of a struct or class is a GNU extension
 [-Werror,-Wgnu-variable-sized-type-not-at-end]
      struct ethtool_link_settings edata;

Use alternative approach to reserve buffer space on the stack.

Fixes: ef09a7fc7620 ("net/mlx5: fix inconsistent link status query")
Cc: stable@dpdk.org
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/i40e: fix VF device stop issue
Beilei Xing [Tue, 29 Aug 2017 18:34:33 +0000 (02:34 +0800)]
net/i40e: fix VF device stop issue

i40e HW data is gotten wrongly in i40evf_dev_stop function,
it may cause device can't be stopped.
This patch is to fix the issue.

Fixes: 185993420249 ("net/i40e: fix VF add/del MAC")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/sfc: specify correct scale table size on Rx start
Ivan Malov [Mon, 28 Aug 2017 12:53:46 +0000 (13:53 +0100)]
net/sfc: specify correct scale table size on Rx start

efx_rx_scale_tbl_set() takes the number of entries in the scale table
to be set, not the size of the table in bytes; currently this bug does
not make any damage since the size argument is used to wrap the loop
on the input table when filling in an MCDI request in case if the table
size in the MCDI request is larger then one provided by the user,
and MCDI scale table size is the same as the size of the table provided
by the driver; this patch brings a fix for the bug

Fixes: 4ec1fc3ba881 ("net/sfc: add basic stubs for RSS support on driver attach")
Cc: stable@dpdk.org
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/sfc/base: insert filters for encapsulated packets
Mark Spender [Mon, 28 Aug 2017 13:25:27 +0000 (14:25 +0100)]
net/sfc/base: insert filters for encapsulated packets

On Medford, with full-featured firmware running, encapsulated
packets may not be delivered unless filters are inserted for
them, as ordinary filters are not applied to encapsulated
packets. So filters for encapsulated packets need to be
inserted for each class of encapsulated packet. For simplicity,
catch-all filters are always inserted. These may match more
packets than the OS has asked for, but trying to insert more
precise filters increases complexity for little gain.

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
7 years agonet/sfc/base: support filters for encapsulated packets
Mark Spender [Mon, 28 Aug 2017 13:25:26 +0000 (14:25 +0100)]
net/sfc/base: support filters for encapsulated packets

This supports filters which match all unicast or multicast
inner frames in VXLAN, GENEVE, or NVGRE packets.
(Additional fields to match on can be added easily.)

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
7 years agonet/sfc/base: use proper MCDI command for encap filters
Mark Spender [Mon, 28 Aug 2017 13:25:25 +0000 (14:25 +0100)]
net/sfc/base: use proper MCDI command for encap filters

MC_CMD_FILTER_OP_IN_EXT is needed to set filters for encapsulated
packets.

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
7 years agonet/sfc/base: provide information about supported tunnels
Andrew Rybchenko [Mon, 28 Aug 2017 13:25:24 +0000 (14:25 +0100)]
net/sfc/base: provide information about supported tunnels

VXLAN/NVGRE (and Geneve) support is available on SFN8xxx with
full-feature firmware variant running.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
Reviewed-by: Mark Spender <mspender@solarflare.com>
7 years agonet/failsafe: fix failsafe bus uninit return value
Raslan Darawsheh [Tue, 29 Aug 2017 09:08:08 +0000 (12:08 +0300)]
net/failsafe: fix failsafe bus uninit return value

fs_bus_uninit is always returning 0 no matter what was the status
of each sub device bus_uninit value.

Fixes: a46f8d584eb8 ("net/failsafe: add fail-safe PMD")
Cc: stable@dpdk.org
Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/i40e: fix interrupt throttling setting in PF
Jingjing Wu [Thu, 24 Aug 2017 01:57:51 +0000 (09:57 +0800)]
net/i40e: fix interrupt throttling setting in PF

As no matter the PF host driver is DPDK or other kernel drivers,
they are sharing the same virtchnnl interfaces to communicate to VFs.
To follow the generic interface, DPDK PF need to set Interrupt
Throttling (ITR) index according to the rxitr_idx from virtchnnl
instead of ITR_NONE.

Fixes: 6d59e4ea74a6 ("net/i40e: change version number to support Linux VF")
Cc: stable@dpdk.org
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: remove DPDK PF version specific code
Beilei Xing [Wed, 23 Aug 2017 08:44:36 +0000 (16:44 +0800)]
net/i40e: remove DPDK PF version specific code

This patch removes unused code related to DPDK PF version.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/i40e: remove virtual channel command for VSI queue
Beilei Xing [Wed, 23 Aug 2017 08:44:35 +0000 (16:44 +0800)]
net/i40e: remove virtual channel command for VSI queue

This patch removes specific virtual channel command
VIRTCHNL_OP_CONFIG_VSI_QUEUES_EXT.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/i40e: remove virtual channel command for VLAN pvid
Beilei Xing [Wed, 23 Aug 2017 08:44:34 +0000 (16:44 +0800)]
net/i40e: remove virtual channel command for VLAN pvid

Since there's no specific version number to distinguish
DPDK PF and Linux kernel PF, DPDK VF won't recognize if
host is DPDK PF or kernel PF. The specific virtual channel
commands for DPDK pf can be deleted.
This patch removes I40E_VIRTCHNL_OP_CFG_VLAN_PVID.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/failsafe: fix parameters parsing
Matan Azrad [Sun, 27 Aug 2017 07:23:14 +0000 (10:23 +0300)]
net/failsafe: fix parameters parsing

The corrupted code used wrongly snprintf return value as the
number of characters actually copied, in spite of the meaning
is the number of characters which would be generated for the
given input.

It caused to remain zerod bytes between the failsafe command line
non sub device parameters indicates end of string.

Hence, when rte_kvargs_parse tried to parse all parameters, it
got end of string after the first one and the others weren't parsed.

So, if the mac parameters was the first in command line it was
taken while hotplug_poll was left default, and vice versa.

The fix updates the buffer index by dedicated variable contains
the copy size, by the way validates the comma separation.

Fixes: a46f8d584eb8 ("net/failsafe: add fail-safe PMD")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/mlx5: don't map doorbell register to write combining
Shahaf Shuler [Sun, 27 Aug 2017 06:47:09 +0000 (09:47 +0300)]
net/mlx5: don't map doorbell register to write combining

By default, Verbs maps the doorbell register to write combining.
Working with write combining is useful for drivers which use blue flame
for the doorbell write.

Since mlx5 PMD uses only doorbells and write combining mapping requires
an extra memory barrier to flush the doorbell after its write, setting
the mapping to un-cached by default.

Such change is expected to reduce the max and average round trip latency.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Signed-off-by: Alexander Solganik <solganik@gmail.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx5: replace memory barrier type
Shahaf Shuler [Sun, 27 Aug 2017 06:47:08 +0000 (09:47 +0300)]
net/mlx5: replace memory barrier type

The reason for the requirement of a barrier between the txq writes
and the doorbell record writes is to avoid a case where the device
reads the doorbell record's new value before the txq writes are flushed
to memory.

The current use of rte_wmb is not necessary, and can be replaced by
rte_io_wmb which is more relaxed.

Replacing the rte_wmb is also expected to improve the throughput.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Signed-off-by: Alexander Solganik <solganik@gmail.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/qede: fix possible null pointer dereference
RongQiang Xie [Thu, 24 Aug 2017 07:12:33 +0000 (15:12 +0800)]
net/qede: fix possible null pointer dereference

In function qede_rss_reta_update(), the pointer params returned from
call to function rte_zmalloc() may be NULL and will be dereferenced.
So, should judge if the params is NULL or not.

Fixes: 8b3ee85efe11 ("net/qede: fix RSS table entries for 100G adapter")
Cc: stable@dpdk.org
Signed-off-by: RongQiang Xie <xie.rongqiang@zte.com.cn>
Acked-by: Harish Patil <harish.patil@cavium.com>
7 years agonet/failsafe: safer subdev iterator
Gaetan Rivet [Wed, 23 Aug 2017 13:05:30 +0000 (15:05 +0200)]
net/failsafe: safer subdev iterator

The sub_device iterator macro should follow the general gist of the
tailq API for an easier understanding and safer use.

Once the loop has finished, the iterator should be set to NULL.
If no sub_device was iterated upon, the iterator should still be NULL.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/enic: fix possible null pointer dereference
RongQiang Xie [Wed, 23 Aug 2017 08:49:24 +0000 (16:49 +0800)]
net/enic: fix possible null pointer dereference

In enic_alloc_consistent() function, if rte_malloc for mze is failed,
!mze is true, memzone should be freed and function should return NULL.

Fixes: da5f560be966 ("net/enic: fix memory freeing")
Cc: stable@dpdk.org
Signed-off-by: RongQiang Xie <xie.rongqiang@zte.com.cn>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/mlx5: extend debug logs verbosity
Shahaf Shuler [Wed, 23 Aug 2017 07:10:58 +0000 (10:10 +0300)]
net/mlx5: extend debug logs verbosity

Extend debug logs verbosity by printing the full completion with error
along with the entire txq in case of error. For the Rx case no logs were
added since such errors are counted and recovered by the Rx data path.

Such prints are essential to understand the root cause for the error.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agoapp/testpmd: fix wrong API of adding VF MAC
Wenzhuo Lu [Thu, 17 Aug 2017 18:33:43 +0000 (02:33 +0800)]
app/testpmd: fix wrong API of adding VF MAC

When adding a VF MAC address, rte_eth_dev_mac_addr_add is called.
It's not right, because this API is used to add a MAC address for
a VMDq pool not a VF. Although it can work on ixgbe as VMDq pool
and VF mean the same thing on ixgbe.

Fixes: 7741e4cf16c0 ("app/testpmd: VMDq and DCB updates")

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/i40e: new API to add VF MAC address from PF
Wenzhuo Lu [Thu, 17 Aug 2017 18:33:42 +0000 (02:33 +0800)]
net/i40e: new API to add VF MAC address from PF

Currently, rte_eth_dev_mac_addr_add is used by a testpmd CLI
to add a MAC address for VF. But the parameter 'pool' of this
API means the VMDq pool, not VF.
So, it's wrong to use it to add the VF MAC address.

This patch provides a new API that can be used to
add VF MAC address on i40e.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/mlx5: fix locking in xstats functions
Matan Azrad [Mon, 14 Aug 2017 11:32:24 +0000 (14:32 +0300)]
net/mlx5: fix locking in xstats functions

The corrupted code didn't unlock the spinlock in xstats
get and reset functions error flow.

Hence, if these errors happened, the device spinlock was
left locked and many mlx5 device functionalities were blocked.

The fix unlocks the spinlock in the missed places.

Fixes: e62bc9e70608 ("net/mlx5: fix extended statistics")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/ixgbe: check memory allocation result
RongQiang Xie [Tue, 22 Aug 2017 11:49:21 +0000 (19:49 +0800)]
net/ixgbe: check memory allocation result

In the function ixgbe_flow_create(), the value ntuple_filter_ptr,
ethertype_filter_ptr, syn_filter_ptr, fdir_rule_ptr and l2_tn_filter_ptr
use rte_zmalloc().

malloc may return NULL, so we should check if the return value is NULL
or success.

Signed-off-by: RongQiang Xie <xie.rongqiang@zte.com.cn>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/ixgbe: fix mapping of user priority to TC
Wei Dai [Mon, 21 Aug 2017 07:50:05 +0000 (15:50 +0800)]
net/ixgbe: fix mapping of user priority to TC

This patch fixes the mapping of user priority to traffic class
in Rx/Tx path of DCB configuration. Each DCB traffic class
should include all user priorities mapping to it in both Rx and
Tx path.

Fixes: 0807f80d35d0 ("ixgbe: DCB / flow control")
Cc: stable@dpdk.org
Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/mlx5: remove old MLNX OFED 3.3 verification
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:12 +0000 (10:15 +0200)]
net/mlx5: remove old MLNX OFED 3.3 verification

This version of MLNX_OFED is no more supported.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agonet/mlx5: remove multiple drop RSS queues
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:11 +0000 (10:15 +0200)]
net/mlx5: remove multiple drop RSS queues

Since MLNX_OFED 4.1 this code is no more useful.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agonet/mlx5: fix non working secondary process by removing it
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:10 +0000 (10:15 +0200)]
net/mlx5: fix non working secondary process by removing it

Secondary process is a copy/paste of the mlx4 drivers, it was never
tested and it even segfault at the secondary process start in the
mlx5_pci_probe().

This makes more sense to wipe this non working feature to re-write a
working and functional version.

Fixes: a48deada651b ("mlx5: allow operation in secondary processes")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agonet/mlx5: remove pedantic pragma
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:09 +0000 (10:15 +0200)]
net/mlx5: remove pedantic pragma

Those are useless since DPDK headers have been cleaned up.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agonet/mlx5: remove flow drop useless if branches
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:08 +0000 (10:15 +0200)]
net/mlx5: remove flow drop useless if branches

Those two if statements are useless as there is a verification on the drop
field of the flow to jump to the end of the function just above.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
7 years agonet/mlx5: cleanup Rx ring in free functions
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:07 +0000 (10:15 +0200)]
net/mlx5: cleanup Rx ring in free functions

Vector PMD returns buffers to the application without setting the pointers
in the Rx queue to null nor allocating them.  When the PMD cleanup the ring
it needs to take a special care to those pointers to not free the mbufs
before the application have used them nor if the application have already
freed them.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/mlx5: prepare vector Rx ring at setup time
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:06 +0000 (10:15 +0200)]
net/mlx5: prepare vector Rx ring at setup time

To use the vector, it needs to add to the PMD Rx mbuf ring four extra mbuf
to avoid memory corruption.  This additional mbuf are added on dev_start()
whereas all other mbuf are allocated on queue setup.

This patch brings this allocation back to the same place as other mbuf
allocation.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/mlx5: avoid reusing old queue's mbuf on reconfigure
Nélio Laranjeiro [Wed, 23 Aug 2017 08:15:05 +0000 (10:15 +0200)]
net/mlx5: avoid reusing old queue's mbuf on reconfigure

This patch prepare the merge of fake mbuf allocation needed by the vector
code with rxq_alloc_elts() where all mbuf of the queues should be
allocated.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/nfp: support new firmware medatada API
Alejandro Lucero [Tue, 22 Aug 2017 14:00:35 +0000 (15:00 +0100)]
net/nfp: support new firmware medatada API

We need to support how firmware metadata was handled until now and also
the new API, since NFP NFD 3.0 firmware versions. The new metadata API
adds flexibility for working with different metadata types and, mainly,
to allow adding metadata from different firmware components independently.

Although this patch just supports one type handled by the PMD, future uses
regarding firmware apps will extend this support.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/nfp: handle packets with length 0 as usual ones
Alejandro Lucero [Tue, 22 Aug 2017 10:41:26 +0000 (11:41 +0100)]
net/nfp: handle packets with length 0 as usual ones

A DPDK app could, whatever the reason, send packets with size 0.
The PMD is not sending those packets, which does make sense,
but the problem is the mbuf is not released either. That leads
to mbufs not being available, because the app trusts the
PMD will do it.

Although this is a problem related to app wrong behavior, we
should harden the PMD in this regard. Not sending a packet with
size 0 could be problematic, needing special handling inside the
PMD xmit function. It could be a burst of those packets, which can
be easily handled, but it could also be a single packet in a burst,
what is harder to handle.

It would be simpler to just send that kind of packets, which will
likely be dropped by the hw at some point. The main problem is how
the fw/hw handles the DMA, because a dma read to a hypothetical 0x0
address could trigger an IOMMU error. It turns out, it is safe to
send a descriptor with packet size 0 to the hardware: the DMA never
happens, from the PCIe point of view.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/ixgbe: add VLAN info in queue info msg to VF
Wei Dai [Mon, 21 Aug 2017 06:21:09 +0000 (14:21 +0800)]
net/ixgbe: add VLAN info in queue info msg to VF

This patch is to align with PF kernel driver version 5.1.3 to add the
number of queues to transmit VLAN packets in msg of queue info to VF.

If DCB is enabled, it is the number of DCB traffic classes.
If DCB is not enabled and default VLAN is enabled, it is 1.
For other cases, it is 0.

Signed-off-by: Wei Dai <wei.dai@intel.com>
7 years agonet/liquidio: remove FLR request to PF driver
Shijith Thotton [Mon, 21 Aug 2017 06:17:05 +0000 (11:47 +0530)]
net/liquidio: remove FLR request to PF driver

igb_uio and vfio-pci does pci reset during open and release of device.
So FLR request to LiquidIO PF driver during init and close in PMD is not
required.

See commit b58eedfc7dd5 ("igb_uio: issue FLR during open and release of
device file")

Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
7 years agonet/failsafe: fix Tx sub device deactivating
Matan Azrad [Wed, 16 Aug 2017 14:19:28 +0000 (17:19 +0300)]
net/failsafe: fix Tx sub device deactivating

The corrupted code couldn't recognize that all sub devices
were not ready for Tx traffic when failsafe PMD was trying
to switch device because of an unreachable condition using.

Hence, the current Tx sub device variable was not updated
correctly.

The fix removed the unreachable branch and added new one
in the right place respecting the original intent.

Fixes: ebea83f899d8 ("net/failsafe: add plug-in support")
Fixes: 598fb8aec6f6 ("net/failsafe: support device removal")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agodoc/failsafe: fix typos
Yong Wang [Fri, 18 Aug 2017 10:57:48 +0000 (06:57 -0400)]
doc/failsafe: fix typos

Fixes: a46f8d584eb8 ("net/failsafe: add fail-safe PMD")
Cc: stable@dpdk.org
Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
7 years agonet/i40e: fix PF notify issue when VF is not up
Xiaoyun Li [Tue, 15 Aug 2017 07:39:36 +0000 (15:39 +0800)]
net/i40e: fix PF notify issue when VF is not up

This patch stops PF from sending message to VF when VF's admin queue
isn't enabled, namely VF isn't up.

Fixes: 4861cde46116 ("i40e: new poll mode driver")
Cc: stable@dpdk.org
Signed-off-by: Xiaoyun Li <xiaoyun.li@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/nfp: fix Rx interrupt when multiqueue
Alejandro Lucero [Fri, 11 Aug 2017 15:16:55 +0000 (16:16 +0100)]
net/nfp: fix Rx interrupt when multiqueue

intr_vec was not properly configured. This is not a problem when
just one queue is supported but it fails with multiqueue.

Some minor refactoring also done for hardware interrupt configuration.

Fixes: ea121b28316d ("net/nfp: add Rx interrupts")
Cc: stable@dpdk.org
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/nfp: fix RSS
Alejandro Lucero [Fri, 11 Aug 2017 13:43:50 +0000 (14:43 +0100)]
net/nfp: fix RSS

Redirection table was not being updated properly.
There is also a problem when configuring RSS.

Fixes: 934e4c60fbff ("nfp: add RSS")
Cc: stable@dpdk.org
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/nfp: write MAC address to configuration bar
Alejandro Lucero [Fri, 11 Aug 2017 10:25:33 +0000 (11:25 +0100)]
net/nfp: write MAC address to configuration bar

If not a valid mac present in configuration bar, PMD creates a random
one. It needs to be passed to the NIC.

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
7 years agonet/i40e: fix flow control watermark mismatch
Qi Zhang [Thu, 10 Aug 2017 10:48:07 +0000 (18:48 +0800)]
net/i40e: fix flow control watermark mismatch

Flow control watermark is not read out correctly,
that may cause an application who not intend to change
watermark but does change it with a rte_eth_dev_flow_ctrl_set
call right after rte_eth_dev_flow_ctrl_get.

The idea fix is, during init, the watermark is set with default value,
so it is not necessary to read out from hw register during flow_ctl_get,
But due to I40E_GLRPB_GHW limitation, it is shared by different ports on
the same device, it is possible the value is changed on another port,
but local variable not sync, so we have to read out register every
flow_ctl_get.

Fixes: f53577f06925 ("i40e: support flow control")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
7 years agonet/i40e: fix return code not checked
Daniel Mrzyglod [Thu, 10 Aug 2017 09:12:14 +0000 (11:12 +0200)]
net/i40e: fix return code not checked

Calling i40e_vsi_delete_mac without checking return
value (as is done elsewhere 5 out of 6 times)

Coverity issue: 140735
Fixes: 43c89d5a4fde ("net/i40e: set VF MAC from PF")

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/ixgbe: fix MAC VLAN filter fail problem
Wei Zhao [Tue, 8 Aug 2017 06:19:18 +0000 (14:19 +0800)]
net/ixgbe: fix MAC VLAN filter fail problem

Add a mode type check for MAC VLAN mode, if fdir is
in this mode, it do not need to do sanity check for x550.

Fixes: dc0c16105d2d ("ixgbe: fix X550 flow director check")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
7 years agonet/ark: remove empty header file
Ferruh Yigit [Thu, 3 Aug 2017 17:38:45 +0000 (18:38 +0100)]
net/ark: remove empty header file

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Ed Czeck <ed.czeck@atomicrules.com>
7 years agobus/fslmc: update MC to 10.3.x
Shreyansh Jain [Sat, 16 Sep 2017 10:35:49 +0000 (16:05 +0530)]
bus/fslmc: update MC to 10.3.x

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agobus/fslmc: refactor scan and probe functions
Shreyansh Jain [Fri, 25 Aug 2017 10:19:54 +0000 (15:49 +0530)]
bus/fslmc: refactor scan and probe functions

Scan now searches for devices through sysfs interface and adds them
to a list for later initialization. During probe, each device is
initialized accroding to its property.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agodrivers: refactor DPAA2 object definition
Shreyansh Jain [Fri, 25 Aug 2017 10:19:53 +0000 (15:49 +0530)]
drivers: refactor DPAA2 object definition

Initially, DPAA2 objects (except ETH and CRYPTO) were defined from VFIO
layer. This patch moves that into Bus definition.
This patch also realigns the object types with the new device types.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/dpaa2: update driver type field
Shreyansh Jain [Fri, 25 Aug 2017 10:19:52 +0000 (15:49 +0530)]
net/dpaa2: update driver type field

Shifting from existing device identifier to driver type field.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agocrypto/dpaa2_sec: update driver type field
Shreyansh Jain [Fri, 25 Aug 2017 10:19:51 +0000 (15:49 +0530)]
crypto/dpaa2_sec: update driver type field

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agobus/fslmc: introduce new device type enumerator
Shreyansh Jain [Fri, 25 Aug 2017 10:19:50 +0000 (15:49 +0530)]
bus/fslmc: introduce new device type enumerator

Existing devices and drivers depended on device ID rather than type.
A new enumerator for all DPAA2 devices is introduced in this patch.

At this point, the probe would not be able to link DPAA2 devices
with the driver and I/O would not work. Subsequent patches will
fix this.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agobus/fslmc: support only single group and container
Shreyansh Jain [Fri, 25 Aug 2017 10:19:49 +0000 (15:49 +0530)]
bus/fslmc: support only single group and container

Currently DPAA2 code doesn't support multiple groups and containers.
Remove such provision in code to simplify code.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Reviewed-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agoeal: fix auxv open check for ARM and PPC
Lukasz Majczak [Thu, 28 Sep 2017 06:54:59 +0000 (08:54 +0200)]
eal: fix auxv open check for ARM and PPC

The assertion of return value from the open() function is done against
0, while it is a correct value - open() returns -1 in case of an error.
It causes problems while trying to run as a daemon, in which case, this
call to open() will return 0 as a valid descriptor.

Fixes: b94e5c9406b5 ("eal/arm: add CPU flags for ARMv7")
Fixes: 97523f822ba9 ("eal/arm: add CPU flags for ARMv8")
Fixes: 9ae155385686 ("eal/ppc: cpu flag checks for IBM Power")
Cc: stable@dpdk.org
Signed-off-by: Lukasz Majczak <lma@semihalf.com>
Acked-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
7 years agoeal: cleanup strerror function
Bruce Richardson [Thu, 7 Sep 2017 13:09:56 +0000 (14:09 +0100)]
eal: cleanup strerror function

When compiled on Ubuntu with extra warnings enabled, the rte_strerror()
function triggered a warning about an unused return value from
strerror_r(). Rather than always have this warning disabled, we fix this,
and in the process do some cleanup of the code so as to reduce the
complexity of the fix, e.g. not having the #ifdef macros inside the
snprintf call.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agovfio: fix close unchecked file descriptor
Kuba Kozak [Thu, 21 Sep 2017 13:49:08 +0000 (15:49 +0200)]
vfio: fix close unchecked file descriptor

Add file descriptor value check before calling close() function.

Coverity issue: 141297
Fixes: 811b6b25060f ("vfio: fix file descriptor leak in multi-process")
Cc: stable@dpdk.org
Signed-off-by: Kuba Kozak <kubax.kozak@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Patrick MacArthur <patrick@patrickmacarthur.net>
7 years agohash: document jhash boundary behavior
Chas Williams [Mon, 18 Sep 2017 19:47:40 +0000 (15:47 -0400)]
hash: document jhash boundary behavior

Due to the uint32_t accesses in the hash computation, keys that aren't
aligned to a uint32_t boundary or multiples of uint32_t in length, may
see accesses beyond the end of the key.  This may cross a page boundary.

Signed-off-by: Chas Williams <chas3@att.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agonet: fix inner L2 length in packet type parser
Olivier Matz [Mon, 11 Sep 2017 14:57:22 +0000 (16:57 +0200)]
net: fix inner L2 length in packet type parser

The inner L2 length returned by rte_net_get_ptype() is not
properly initialized. If the caller does not zero the header
lengths structure, the inner_l2 field will be undefined.

Fix it by initializing inner_l2 to 0 when parsing a inner layer.

Fixes: 2c15c5377da2 ("net: support NVGRE in software packet type parser")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
7 years agotest/ring: do not mask result of enqueue or dequeue
Olivier Matz [Wed, 20 Sep 2017 11:32:16 +0000 (13:32 +0200)]
test/ring: do not mask result of enqueue or dequeue

The define RTE_RING_SZ_MASK is the maximum size supported by the
rte_ring. The size is checked at ring creation.

There is no reason today to mask the result of
rte_ring_sp_enqueue_burst() or rte_ring_sc_dequeue_burst() with this
value. The flag RTE_RING_QUOT_EXCEED was previously included in the
returned value but it was removed in
commit 77dd3064270c ("ring: remove watermark support").

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
7 years agoring: increase maximum ring size
Olivier Matz [Wed, 20 Sep 2017 11:32:15 +0000 (13:32 +0200)]
ring: increase maximum ring size

There is no reason to prevent ring from being larger than 0x0FFFFFFF.
Increase the maximum size to 0x7FFFFFFF, which is the maximum possible
without changing the code and the structure definition (size is stored
on a uint32_t).

Link: http://dpdk.org/ml/archives/dev/2017-September/074701.html
Suggested-by: Venkatesh Nuthula <venki497@gmail.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
7 years agotest/log: fix dynamic log levels testing
Radoslaw Biernacki [Thu, 21 Sep 2017 18:44:09 +0000 (20:44 +0200)]
test/log: fix dynamic log levels testing

This patch fixes the dynamic log levels testing in logs_autotest.
Introduction of rte_log_set_level() in patch c1b5fa94a46f was done
with parameter RTE_LOG_EMERG which caused all RTE_LOG() calls an
early return due to all given levels were far below EMERG.
If first two logs supposed to show up on console, the initial log
level must be low (DEBUG). It is than changed above ERR when we test
if TESTAPP2 log type can be filtered by log type log level.

Fixes: c1b5fa94a46f ("eal: support dynamic log types")

Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agocmdline: fix warning for unused return value
Bruce Richardson [Thu, 7 Sep 2017 13:09:23 +0000 (14:09 +0100)]
cmdline: fix warning for unused return value

When DPDK is compiled on Ubuntu with extra warnings turned on, there is a
warning about the return value from write() being unchecked. Rather than
having builds disable the warning, which may mask other cases we do care
about, we can add a dummy use of the return value in the code to silence it
in this instance.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agomaintainers: update mlx5
Nelio Laranjeiro [Tue, 12 Sep 2017 11:25:54 +0000 (13:25 +0200)]
maintainers: update mlx5

Promote Yongseok as additional maintainer for mlx5 PMD.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Olga Shern <olgas@mellanox.com>
7 years agodoc: fix a typo in testpmd guide
Rami Rosen [Sat, 23 Sep 2017 16:55:19 +0000 (19:55 +0300)]
doc: fix a typo in testpmd guide

Fixes: 37a56cce7b8e ("app/testpmd: enable DDP get info feature")

Signed-off-by: Rami Rosen <rami.rosen@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agoethdev: fix ABI version
Ferruh Yigit [Thu, 14 Sep 2017 14:55:06 +0000 (15:55 +0100)]
ethdev: fix ABI version

The ethdev ABI has been broken in release 17.08 without being bumped.

Fixes: c33ade1227a5 ("doc: notify ethdev callback process API change")
Cc: stable@dpdk.org
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Reviewed-by: Zhiyong Yang <zhiyong.yang@intel.com>
7 years agodoc: add missing PMD versions in release notes
Ferruh Yigit [Wed, 27 Sep 2017 18:58:37 +0000 (19:58 +0100)]
doc: add missing PMD versions in release notes

These PMDs must be versioned because they have an API.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Zhiyong Yang <zhiyong.yang@intel.com>
7 years agoeal: initialize logging before bus
Stephen Hemminger [Mon, 28 Aug 2017 18:13:31 +0000 (11:13 -0700)]
eal: initialize logging before bus

Any log messages during bus initialization maybe lost because
the bus registration constructor is called before the logging constructor.

Fixes: a97725791eec ("bus: introduce bus abstraction")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
7 years agoeal: add doc for constructor macros
Thomas Monjalon [Mon, 2 Oct 2017 13:57:15 +0000 (15:57 +0200)]
eal: add doc for constructor macros

It is a reminder that the constructors without priority
get the lowest priority.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agopower: add turbo functions to map file
David Hunt [Tue, 3 Oct 2017 07:22:13 +0000 (08:22 +0100)]
power: add turbo functions to map file

Fixes: 94608a0f7f45 ("power: add per-core turbo boost API")

Signed-off-by: David Hunt <david.hunt@intel.com>
7 years agoethdev: support vtune task tracing
Ilia Kurakin [Fri, 22 Sep 2017 14:52:29 +0000 (17:52 +0300)]
ethdev: support vtune task tracing

The patch simplifies DPDK applications analysis for developers which use
Intel® VTune Amplifier.

The empty cycles are such iterations that yielded no RX packets. As far as
DPDK is running in poll mode, wasting cycles is equal to wasting CPU time.
Tracing such iterations can identify that device is underutilized. Tracing
empty cycles becomes even more critical if a system uses a lot of Ethernet
ports.

The patch gives possibility to analyze empty cycles without changing
application code. All needs to be done is just to reconfigure and rebuild
the DPDK itself with CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS
enbled. The important thing here is that this does not affect DPDK code.
The profiling code is not being compiled if user does not specify config
flag.

The patch provides common way to inject RX queues profiling and VTune
specific implementation.

Signed-off-by: Ilia Kurakin <ilia.kurakin@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
7 years agoexamples/vm_power_manager: add per-core turbo CLI
David Hunt [Wed, 13 Sep 2017 10:44:18 +0000 (11:44 +0100)]
examples/vm_power_manager: add per-core turbo CLI

Add extra commands to guest cli to allow enable/disable of
per-core turbo. Includes messages to vm_power_mgr in host.

Signed-off-by: David Hunt <david.hunt@intel.com>
7 years agoexamples/vm_power_manager: add per-core turbo
David Hunt [Wed, 13 Sep 2017 10:44:17 +0000 (11:44 +0100)]
examples/vm_power_manager: add per-core turbo

Add extra commands to command line to allow enable/disable of
per-core turbo.

When a core has turbo enabled, calling for max frequency will allow it to
go to a turbo frequency (P0n).

When a core has turbo disabled, calling for max frequency will allow it to
go to the maximum non-turbo frequency (P1), but not beyond.

Signed-off-by: David Hunt <david.hunt@intel.com>
7 years agopower: add per-core turbo boost API
David Hunt [Wed, 13 Sep 2017 10:44:16 +0000 (11:44 +0100)]
power: add per-core turbo boost API

Adds a new set of APIs to allow per-core turbo
enable-disable.

Signed-off-by: David Hunt <david.hunt@intel.com>
7 years agomaintainers: add Ferruh for main branch
Thomas Monjalon [Tue, 19 Sep 2017 20:05:42 +0000 (22:05 +0200)]
maintainers: add Ferruh for main branch

Ferruh will co-maintain the main branch at git://dpdk.org/dpdk.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agomaintainers: add Yuanhan for stable branches
Thomas Monjalon [Tue, 19 Sep 2017 15:52:34 +0000 (17:52 +0200)]
maintainers: add Yuanhan for stable branches

Yuanhan was maintaining 16.07, 17.02 and 17.05 branches.
He is still doing LTS releases for 16.11.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agomaintainers: separate main tree and devtools maintenance
Thomas Monjalon [Tue, 19 Sep 2017 15:48:48 +0000 (17:48 +0200)]
maintainers: separate main tree and devtools maintenance

Being the maintainer of devtools is different of
maintaining the main tree.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
7 years agodevtools: fix version search with git < 2.7.0
Thomas Monjalon [Mon, 4 Sep 2017 22:05:32 +0000 (00:05 +0200)]
devtools: fix version search with git < 2.7.0

The script git-log-fixes.sh (used in check-git-log.sh) looks
for git tags to find the version where a bug is introduced.

In DPDK 17.08, the script has been fixed to ignore tags from
non current branch.
It was using the option --merged which was introduced in git 2.7.0.

As git 2.7.0 is not so old, a fallback is provided for some years.

The fallback is replacing the tag --merged option by a branch filter.
If the tag is found in the branch, the branch name is replaced
by the tag.

This script could be improved to allow using another reference branch,
instead of hard coding HEAD branch (the current one).

Fixes: 26857dabb3c9 ("devtools: ignore non merged tags for backport")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Tested-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agoservice: fix build with gcc 4.9
Yi Yang [Thu, 21 Sep 2017 01:50:43 +0000 (09:50 +0800)]
service: fix build with gcc 4.9

Some compilers detect this error:

    error: ‘ids[0]’ may be used uninitialized in this function
    ret = rte_service_map_lcore_set(i, ids[lcore_iter], 1);

It can be reproduced very easily on Fedora 21 with
gcc-4.9.2-6.fc21.x86_64.

Fixes: 21698354c832 ("service: introduce service cores concept")
Cc: stable@dpdk.org
Signed-off-by: Yi Yang <yi.y.yang@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agocfgfile: add section number of entries by index
Guduri Prathyusha [Thu, 27 Apr 2017 06:51:40 +0000 (12:21 +0530)]
cfgfile: add section number of entries by index

rte_cfgfile_section_num_entries_by_index() is added to get the number of
entries of a section when multiple sections of the same name are
present.

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
7 years agoservice: fix lcore stop
Guduri Prathyusha [Wed, 6 Sep 2017 07:15:41 +0000 (12:45 +0530)]
service: fix lcore stop

lcore_states store the state of the lcore. Fixing the invalid
dereference of lcore_states with service number

Unit test case service_lcore_start_stop fails with the above fix.
Service core was stopped without stopping the service.

This commit fixes the test by adding negative and positive cases of
stopping the service lcore before and after stopping the service
respectively

Fixes: 21698354c832 ("service: introduce service cores concept")
Fixes: f038a81e1c56 ("service: add unit tests")

Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
Reviewed-by: Harry van Haaren <harry.van.haaren@intel.com>
7 years agodoc: add notes on service cores API updates
Harry van Haaren [Mon, 21 Aug 2017 12:58:16 +0000 (13:58 +0100)]
doc: add notes on service cores API updates

Add a section on the service cores API changes to 17.11 release notes.

Suggested-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: clarify documentation for register
Harry van Haaren [Mon, 21 Aug 2017 12:58:15 +0000 (13:58 +0100)]
service: clarify documentation for register

This commit adds a section to the service register function
to make it clear that registering a service, must not configure
service-cores (eg: adding lcores or changing mappings).

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: add component runstate
Harry van Haaren [Mon, 21 Aug 2017 12:58:14 +0000 (13:58 +0100)]
service: add component runstate

This commit adds a new flag that the component (or "backend")
can use to indicate readyness. The service function callback
will not be called until the component sets itself as ready.

The use-case behind adding this feature is eg: a service that
requires configuration before it can start. Any service that
emulates an ethdev will have rte_eth_dev_configure() called,
and only after that the service will know how many queues/etc
to allocate. Once that configuration is complete, the service
marks itself as ready using rte_service_component_runstate_set().

This feature request results from prototyping services, and
requiring a flag in each service to note "internal" readyness.
Instead that logic is now lifted to the service library.

The unit tests have been updated to test the component runstate.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: reset core call stats on dump
Harry van Haaren [Mon, 21 Aug 2017 12:58:13 +0000 (13:58 +0100)]
service: reset core call stats on dump

This aligns with the service stats, which are currently
also reset on read. A generic statistics API would be
helpful for the service library in future.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix lcore in wait state in lcore add
Harry van Haaren [Mon, 21 Aug 2017 12:58:12 +0000 (13:58 +0100)]
service: fix lcore in wait state in lcore add

This commit ensures that after an lcore is added, that
it is in the WAIT state. Previously, adding an lcore did
not ensure that the core was ready for being relaunch, which
would cause errors during lcore_start(). Now that the lcore is
ensured to be in WAIT state by the lcore_add() function, this
is no longer an issue.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix return values of functions to 0 or 1
Harry van Haaren [Mon, 21 Aug 2017 12:58:11 +0000 (13:58 +0100)]
service: fix return values of functions to 0 or 1

Previously to this commit, the return value of the following
functions was the mask value, instead of a neat 0 or 1.

This commit fixes this using the "!!" trick, to force the
number to 1 instead of the bitmask value itself, bringing
the return value in line with the function documentation.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix loops to always scan all services
Harry van Haaren [Mon, 21 Aug 2017 12:58:10 +0000 (13:58 +0100)]
service: fix loops to always scan all services

Services can be registered and unregistered, and "holes" can
appear in the contiguous array of services if a service is
unregistered. As a result, we must never iterate to the
number of services (as counted by rte_service_count), instead
scanning the service array and checking if the service is valid.

After this commit, the rte_service_count variable is only used
for its intended purpose; tracking the number of services that
are present.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: fix and refactor atomic service accesses
Harry van Haaren [Mon, 21 Aug 2017 12:58:09 +0000 (13:58 +0100)]
service: fix and refactor atomic service accesses

This commit fixes an issue in the service runner function,
where the atomic value was not cleared on exiting the service
function. This resulted in future attempts to run the service
to appear like the function was running, however it was in
reality deadlocked.

This commit refactors the atomic handling to be more readable,
by splitting the implementation code into a new static inline
function. The remaining flow control of atomics in the existing
function is refactored for readability.

Fixes: 21698354c832 ("service: introduce service cores concept")

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in get by name function
Harry van Haaren [Mon, 21 Aug 2017 12:58:08 +0000 (13:58 +0100)]
service: use id in get by name function

This commit reworks the service_get_by_name() function to
accept an integer, and removes the service_get_by_id() function.

All functions now accept an integer argument representing the
service, so it is no longer required to expose the service_spec
pointers to the application.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in unregister
Harry van Haaren [Mon, 21 Aug 2017 12:58:07 +0000 (13:58 +0100)]
service: use id in unregister

This commit reworks the unregister API to accept an integer.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in service stats functions
Harry van Haaren [Mon, 21 Aug 2017 12:58:06 +0000 (13:58 +0100)]
service: use id in service stats functions

This commit reworks the statistics functions to use integer ids
for services instead of pointers. Passing UINT32_MAX to the dump
function prints all info, similar to passing NULL previously.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in runstate function
Harry van Haaren [Mon, 21 Aug 2017 12:58:05 +0000 (13:58 +0100)]
service: use id in runstate function

This commit reworks the API to move from two separate start
and stop functions, to a "runstate" API which allows setting
the runstate. The is_running API is replaced with an function
to query the runstate. The runstate functions take a id value
for service. Unit tests and the eventdev sw pmd are updated.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: return integer service id from register
Harry van Haaren [Mon, 21 Aug 2017 12:58:04 +0000 (13:58 +0100)]
service: return integer service id from register

This commit reworks the service register function to accept
an extra parameter. The parameter is a uint32_t *, which when
provided will be set to the integer service_id that the newly
registered service is represented by.

This is useful for services that wish to validate settings at
a later point in time - they need to know their own service id.

This commit updates the eventdev sw pmd, as well as unit tests
to use the new register API.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
7 years agoservice: use id in lcore to service map functions
Harry van Haaren [Mon, 21 Aug 2017 12:58:03 +0000 (13:58 +0100)]
service: use id in lcore to service map functions

This commit updates the APIs exposed to map service cores and
services. The previous APIs required a pointer to a service,
and used two separate functions for enable and disable. The
new API uses an integer ID for the service and has a parameter
for map or unmap. Unit tests are updated and passing, and the
map file is updated to the new function names.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>