dpdk.git
7 years agonet/ixgbe: replace macro with inline function
Qi Zhang [Wed, 5 Jul 2017 02:21:34 +0000 (22:21 -0400)]
net/ixgbe: replace macro with inline function

Code cleanup done for 2 purposes.
1. "index" variable is no more needed.
2. inline function makes it easier and safer to nest into a loop.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agotest/bonding: fix mode 4 names
Daniel Mrzyglod [Wed, 5 Jul 2017 15:27:47 +0000 (17:27 +0200)]
test/bonding: fix mode 4 names

ring network driver is limited to 32 characters
the name of device was extended to net_ring_unit_test_mode4_slave_0
which is 33 characters long.

Fixes: 5e41ab250dfa ("app/test: unit tests for bonding mode 4")
Cc: stable@dpdk.org
Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/mlx4: support flow API RSS action
Vasily Philipov [Wed, 5 Jul 2017 08:14:11 +0000 (11:14 +0300)]
net/mlx4: support flow API RSS action

This commit adds support for the flow API RSS action with the following
limitations:

 - Only supported when isolated mode is enabled.
 - The number of queues specified by the action (rte_flow_action_rss.num)
   must be a power of two.
 - Each queue index can be specified at most once in the configuration
   (rte_flow_action_rss.queue[]).
 - Because a queue can be associated with a single RSS context, it cannot
   be targeted by multiple RSS actions simultaneously.

Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx4: refactor RSS parent queue allocation
Vasily Philipov [Wed, 5 Jul 2017 08:14:10 +0000 (11:14 +0300)]
net/mlx4: refactor RSS parent queue allocation

A special "parent" queue must be allocated in addition to a group of
standard Rx queues for RSS to work. This is done automatically outside of
isolated mode by the PMD when applications request several Rx queues.

Since each configured flow rule with the RSS action may target a different
set of queues, the PMD must have the ability to dynamically allocate
several parent queues, one per RSS group.

If isolated mode was requested the default RSS parent queue isn't created
in this case.

Refactor RSS parent queue allocations (currently limited to a single
parent) in preparation for flow API RSS action support.

Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx4: implement isolated mode from flow API
Vasily Philipov [Wed, 5 Jul 2017 08:14:09 +0000 (11:14 +0300)]
net/mlx4: implement isolated mode from flow API

The user must request isolated mode before device configuration.

Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/vmxnet3: avoid code duplication
Chas Williams [Thu, 29 Jun 2017 19:35:50 +0000 (15:35 -0400)]
net/vmxnet3: avoid code duplication

Refactor vmxnet3_post_rx_bufs() to call vmxnet3_renew_desc()
to update the newly allocated mbufs.  While here, relocate the
relevant comments to vmxnet3_renew_desc().

Signed-off-by: Chas Williams <ciwillia@brocade.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/mlx4: fix mbuf poisoning in debug code
Vasily Philipov [Wed, 5 Jul 2017 11:49:22 +0000 (14:49 +0300)]
net/mlx4: fix mbuf poisoning in debug code

In debug mode, all mbuf ol_flags are temporarily enabled while sitting
in the Rx queue to detect otherwise silent data corruption, however
some of them are special (indirect and control) and must be cleared
before returning mbufs to the pool to avoid crashing.

Fixes: 7fae69eeff13 ("mlx4: new poll mode driver")
CC: stable@dpdk.org
Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/i40e: fix incorrect PF Rx bytes
Qi Zhang [Wed, 5 Jul 2017 06:48:06 +0000 (02:48 -0400)]
net/i40e: fix incorrect PF Rx bytes

Internal Rx packet bytes is over counted, CRC size is not excluded,
that cause incorrect Rx bytes or even negative value.

Fixes: 0bcdc44510ef ("net/i40e: exclude internal packet's byte count")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
7 years agoapp/testpmd: add cmd for dedicated LACP Rx/Tx queues
Tomasz Kulasek [Tue, 4 Jul 2017 16:46:27 +0000 (17:46 +0100)]
app/testpmd: add cmd for dedicated LACP Rx/Tx queues

Add new command to support enable/disable of dedicated Tx/Rx queue on
each slave of a bond device for LACP control plane traffic.

    set bonding lacp dedicated_queues <port_id> [enable|disable]

When enabled this option creates dedicated queues on each slave device
for LACP control plane traffic. This removes the need to filter control
plane packets in the data path.

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/bonding: add dedicated HW queues for LACP control
Tomasz Kulasek [Tue, 4 Jul 2017 16:46:26 +0000 (17:46 +0100)]
net/bonding: add dedicated HW queues for LACP control

Add support for hardware flow classification of LACP control plane
traffic to be redirect to a dedicated receive queue on each slave which
is not visible to application. Also enables a dedicate transmit queue
for LACP traffic which allows complete decoupling of control and data
paths.

This only applies to bonding devices running in mode 4
(link-aggregation-802.3ad).

Introduce two new APIs to support enable/disabled of dedicated
queues.

- rte_eth_bond_8023ad_dedicated_queues_enable
- rte_eth_bond_8023ad_dedicated_queues_disable

rte_eth_bond_8023ad_dedicated_queues_enable must be called before
bonding port is configured or started to reserved and configure the
dedicated queues.

When this option is enabled all slaves must support flow filtering
by Ethernet type and support one additional Tx and Rx queue on
each slave.

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/bonding: use ptype flags for LACP Rx filtering
Tomasz Kulasek [Tue, 4 Jul 2017 16:46:25 +0000 (17:46 +0100)]
net/bonding: use ptype flags for LACP Rx filtering

Use packet types flags in mbuf to provide hint for filtering of LACP
control plane traffic from the data path.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/bonding: fix number of bonding Tx/Rx queues
Declan Doherty [Tue, 4 Jul 2017 16:46:24 +0000 (17:46 +0100)]
net/bonding: fix number of bonding Tx/Rx queues

This patch fixes the maximum number of Tx an Rx queues supported by a
bonding device return by the rte_eth_dev_info_get function.

The bonding device now calculates the maximum number of supported Tx
and Rx queues based on the slaves bound to the bonded device, with the
minimum values of Tx and Rx queues from the device slaves being the
bonded devices maximum, as each slave must be able to support the same
number of Tx and Rx queues.

Fixes: 2efb58cbab6e ("bond: new link bonding library")
Cc: stable@dpdk.org
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/ena/base: initialize memory in the allocation macros
Alexander Matushevsky [Tue, 4 Jul 2017 13:51:53 +0000 (15:51 +0200)]
net/ena/base: initialize memory in the allocation macros

Uninitialized memory could cause memory corruption, by indicating
completion of the invalid mbuf.

Fixes: 3d3edc265fc8 ("net/ena: make coherent memory allocation NUMA-aware")
Cc: stable@dpdk.org
Signed-off-by: Alexander Matushevsky <matua@amazon.com>
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
7 years agonet/ena: fix cleanup of the Tx bufs
Michal Krawczyk [Tue, 4 Jul 2017 13:51:52 +0000 (15:51 +0200)]
net/ena: fix cleanup of the Tx bufs

After cleanup of the mbuf on Tx path, queue was still pointing to this
mbuf and upon cleanup of the Tx buffers, it was being freed second time.

Moreover, to make sure that upon interrupt all mbufs will be freed,
whole ring is being cleaned up instead of part of it - originally only
range between head and tail was being cleaned up.

Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Cc: stable@dpdk.org
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
7 years agonet/i40e: support VLAN stripping for VF
Beilei Xing [Tue, 4 Jul 2017 08:26:16 +0000 (16:26 +0800)]
net/i40e: support VLAN stripping for VF

VLAN stripping configuration is supported only for DPDK PF
previously. Since kernel PF supports VLAN stripping now, this
patch adds VLAN stripping support for both DPDK PF and kernel
PF.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/qede: update PMD version to 2.5.1.1
Rasesh Mody [Sat, 1 Jul 2017 19:30:02 +0000 (12:30 -0700)]
net/qede: update PMD version to 2.5.1.1

Update the PMD version.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add missing check for VNI
Rasesh Mody [Sat, 1 Jul 2017 19:30:01 +0000 (12:30 -0700)]
net/qede: add missing check for VNI

Add missing check for VNI field while adding unicast filter.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: set mdump flag
Rasesh Mody [Sat, 1 Jul 2017 19:30:00 +0000 (12:30 -0700)]
net/qede: set mdump flag

Set allow management FW dump flag during HW prepare.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: change debug verbosity of messages
Rasesh Mody [Sat, 1 Jul 2017 19:29:59 +0000 (12:29 -0700)]
net/qede: change debug verbosity of messages

Convert DP_NOTICE() to DP_ERR() as appropriate in PMD files.
Change DP_NOTICE() macro to make use of boolean flag to log
it as error message or informational message.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: add comments traces and format changes
Rasesh Mody [Sat, 1 Jul 2017 19:29:58 +0000 (12:29 -0700)]
net/qede: add comments traces and format changes

Changes include
 - comment modifications
 - adds tracing during initialization
 - adds/removes new lines

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: limit ring size to 32k
Harish Patil [Sat, 1 Jul 2017 19:29:57 +0000 (12:29 -0700)]
net/qede: limit ring size to 32k

Since nb_max is a u16 it can store value up to 65535 only (not 64K),
but this value is not a power-of-2. So limit the ring sizes to 32K.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
7 years agonet/qede: add notifying HW errors
Harish Patil [Sat, 1 Jul 2017 19:29:56 +0000 (12:29 -0700)]
net/qede: add notifying HW errors

Log HW errmsg on the stdout and do minimal handling to prevent HW
attentions from being reasserted.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/qede: fix DMA memory leak
Harish Patil [Sat, 1 Jul 2017 19:29:55 +0000 (12:29 -0700)]
net/qede: fix DMA memory leak

Implement the macro OSAL_DMA_FREE_COHERENT to release DMA memories.
Track all DMA memory allocations using an array of memzone pointers and
use that to free memory resources along with other resource deallocation.
With this change there is no need to alter the base code to additionally
pass an unique string needed for memzone creation.

Fixes: ec94dbc57362 ("qede: add base driver")
Cc: stable@dpdk.org
Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agonet/bonding: use ethdev API to get socket
Jan Blunck [Fri, 30 Jun 2017 14:34:49 +0000 (15:34 +0100)]
net/bonding: use ethdev API to get socket

The bonded device does not have to be a PCI device. Use the rte_ethdev
functions instead.

Signed-off-by: Wen Chiu <wchiu@brocade.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Jan Blunck <jblunck@infradead.org>
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/bonding: avoid allocating mempool on unknown socket
Eric Kinzie [Fri, 30 Jun 2017 14:34:48 +0000 (15:34 +0100)]
net/bonding: avoid allocating mempool on unknown socket

If the numa node is unknown, use the value from rte_socket_id() to avoid
an allocation failure.

Signed-off-by: Eric Kinzie <ekinzie@brocade.com>
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/qede: add Tx offloads for MPLS-in-UDP packets
Harish Patil [Tue, 27 Jun 2017 07:21:32 +0000 (00:21 -0700)]
net/qede: add Tx offloads for MPLS-in-UDP packets

Add support for inner/outer L3/L4 TX csum offload for MPLS-in-UDP packets.
The driver checks for PKT_TX_TUNNEL_MPLSINUDP in Tx ol_flags and updates TX
BD elements with appropriate offsets/length of tunnel headers.
The pseudo csum calculation is removed from qede_xmit_prep_pkts() since its
not needed.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
7 years agombuf: introduce new Tx offload flag for MPLS-in-UDP
Harish Patil [Tue, 27 Jun 2017 07:21:31 +0000 (00:21 -0700)]
mbuf: introduce new Tx offload flag for MPLS-in-UDP

Some PMDs need to know the tunnel type in order to handle advance TX
features. This patch adds a new TX offload flag for MPLS-in-UDP packets.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
7 years agonet/bnxt: fix copy/pasted error message
Ajit Khaparde [Fri, 30 Jun 2017 14:20:21 +0000 (09:20 -0500)]
net/bnxt: fix copy/pasted error message

Fix an error message. Probably a copy/paste error.

Fixes: 36735a932ca7 ("net/bnxt: support set VF QOS and MAC anti spoof")

Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix set link config
Ajit Khaparde [Fri, 30 Jun 2017 14:20:20 +0000 (09:20 -0500)]
net/bnxt: fix set link config

bnxt_hwrm_port_phy_cfg() was not setting enables appropriately.
This was causing undesired issues with link config.
This patch takes care of that.

Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix autoneg on 10GBase-T links
Ajit Khaparde [Fri, 30 Jun 2017 14:20:19 +0000 (09:20 -0500)]
net/bnxt: fix autoneg on 10GBase-T links

We are not passing proper speed mask causing autoneg to not work
properly on 10GBase-T links. Use supported speeds from phy_qcfg
for auto mask to fix this.

Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix get link config
Ajit Khaparde [Fri, 30 Jun 2017 14:20:18 +0000 (09:20 -0500)]
net/bnxt: fix get link config

This patch fixes the get link configuration code.
bnxt_get_hwrm_link_config was using wrong macros and wrongly
deriving link speed based on link status which was causing
incorrect link information to be displayed in few scenarios.

Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix automatic clearing of VF stats
Ajit Khaparde [Fri, 30 Jun 2017 14:20:17 +0000 (09:20 -0500)]
net/bnxt: fix automatic clearing of VF stats

Add code to avoid automatic clearing of VF stats on a function
reset or a stat context free.

Add rte_pmd_bnxt_set_vf_persist_stats() PMD specific API.

Fixes: dd46c6bbd5d6 ("net/bnxt: support get and clear VF specific stats")

Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: enable default VNIC allocation
Ajit Khaparde [Fri, 30 Jun 2017 14:20:16 +0000 (09:20 -0500)]
net/bnxt: enable default VNIC allocation

Previously, no VNICs were allocated as the default VNIC,
even if they were configured as one.  This patch fixes that error.

Fixes: db678d5c2b54 ("net/bnxt: add HWRM VNIC configure")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix calculation of VNICs
Ajit Khaparde [Fri, 30 Jun 2017 14:20:15 +0000 (09:20 -0500)]
net/bnxt: fix calculation of VNICs

We used the default as a work-around for the 4-byte MTU VNICs,
but we filter those out now. So fix the calculation of VNICs
accordingly.

Fixes: ff63ebbb67a7 ("net/bnxt: determine the Rx status of VF")

Signed-off-by: Stephen Hurd <stephen.hurd@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: fix MTU configuration
Ajit Khaparde [Fri, 30 Jun 2017 14:20:14 +0000 (09:20 -0500)]
net/bnxt: fix MTU configuration

Set the MTU of the device to MAX size possible.

Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/bnxt: support Stratus VF device
Ajit Khaparde [Fri, 30 Jun 2017 14:20:13 +0000 (09:20 -0500)]
net/bnxt: support Stratus VF device

This patch adds support for Stratus VF devices.
Other than adding the VF device ID, we also are adding
support for short message format.

The new short firmware message of size 16 bytes points to a location
in host memory that contains the firmware message that the driver
wants the adapter to process. This indirection requires the
firmware to DMA the message into its own memory for processing.

When the firmware receives a Short Command Format, it will DMA the
firmware message from host memory into its internal memory and then
processes the message as it would have if it received the message
directly in the firmware communication channel.

With BCM57454, the number of VFs increase to 1K and so the requirement
for firmware communication channel memory on adapter becomes expensive.
The short firmware message saves the amount of memory required to support
1K VFs on adapter.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
7 years agonet/mlx: update C compliance standard
Adrien Mazarguil [Fri, 30 Jun 2017 17:19:08 +0000 (19:19 +0200)]
net/mlx: update C compliance standard

This commit addresses a compilation issue against Glibc >= 2.25, which
implements assert() through a nonstandard ({ }) construct. Such constructs
can normally not be used without __extension__ keyword when -pedantic is
enabled, as is the case when compiling mlx4 and mlx5 PMDs in debug mode.

While assert.h checks for the compiler ability to support GNU extensions,
Clang, unlike GCC, does not allow the above syntax when combining
-std=gnu99 with -pedantic.

Work around missing keyword by moving these PMDs to a stricter compliance
standard without GNU extensions but properly checked by Glibc. Doing so is
supported on the DPDK side since includes have been cleaned up.

Even in C11, using types other than _Bool or signed/unsigned int for
bit-fields is an extension. Some GCC versions complain about that when
-pedantic checks are enabled.

The RTE_STD_C11 macro correctly prevented this issue with C99 but not with
C11 as it becomes a no-op. Forcing the extension keyword addresses it.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Tested-by: Yongseok Koh <yskoh@mellanox.com>
7 years agonet/bonding: change link status check to no-wait
Declan Doherty [Wed, 28 Jun 2017 10:15:50 +0000 (11:15 +0100)]
net/bonding: change link status check to no-wait

In 2 modes (802.3ad and TLB) of the link bonding driver, monitoring of
link status is used to determine the active slaves to use. These
functions are currently using the rte_link_link_get which could block
for up to 9 seconds, depending on the slave device.

In the 802.3ad periodic callback and in the TLB slave callback the
link status of slaves are checked using rte_eth_link_get function.

This patch changes to the no-wait version of the link get function to
avoid the possible issues which could be introduced if this call was
to block for an extended period of time.

Fixes: 46fb43683679 ("bond: add mode 4")
Fixes: 7c76a747e68c ("bond: add mode 5")
Cc: stable@dpdk.org
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/i40e: fix division by 0
Yong Wang [Fri, 23 Jun 2017 10:57:47 +0000 (06:57 -0400)]
net/i40e: fix division by 0

In function i40e_vsi_config_tc_queue_mapping(), if 'enabled_tcmap' is 0,
'total_tc' might be 0. Then 'total_tc' might be used in a division
by 0 in "qpnum_per_tc = i40e_align_floor(vsi->nb_qps / total_tc)".

Fix it by changing 'total_tc' from 0 to 1 just as func
i40e_vsi_update_queue_mapping() does.

Fixes: 4861cde46116 ("i40e: new poll mode driver")
Cc: stable@dpdk.org
Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/ixgbe: improve link state check on VF
Liang-Min Larry Wang [Wed, 28 Jun 2017 02:22:10 +0000 (10:22 +0800)]
net/ixgbe: improve link state check on VF

In current implementation, when checking VF link state, PF state
is checked too, although the function has a parameter to tell
if PF state checking is needed.
But in some scenario, user may not care about the PF state.
This patch enables the unused parameter to only check the VF
link state.

Signed-off-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
7 years agonet/ark: fix stats reset
John Miller [Wed, 28 Jun 2017 10:08:24 +0000 (06:08 -0400)]
net/ark: fix stats reset

Repairs a bug in the stats_reset where the wrong queue was
being passed into Tx reset.

Fixes: 727b3fe292bc ("net/ark: integrate PMD")
Cc: stable@dpdk.org
Signed-off-by: John Miller <john.miller@atomicrules.com>
7 years agonet/ark: support setting MTU
John Miller [Wed, 28 Jun 2017 10:08:23 +0000 (06:08 -0400)]
net/ark: support setting MTU

Allows a user extension to set a callback for the set_mtu
operation.

Signed-off-by: John Miller <john.miller@atomicrules.com>
7 years agonet/ark: allow unique user data for each port
John Miller [Wed, 28 Jun 2017 10:08:22 +0000 (06:08 -0400)]
net/ark: allow unique user data for each port

This change allows a user extension to provide unique private
callback data for all ports.

Arkville is a single-function multi-port device.  User_data resides
in the singleton Arkville structure.  This structure is shared across
all ports.

With this patch, we are providing a unique user pointer for each port
rather than a common pointer across multiple ports.

Signed-off-by: John Miller <john.miller@atomicrules.com>
7 years agonet/cxgbe: fix supported speed capabilities
Rahul Lakkireddy [Wed, 28 Jun 2017 04:37:41 +0000 (10:07 +0530)]
net/cxgbe: fix supported speed capabilities

Use port type to determine the supported speed capabilities.

Fixes: e274f5732225 ("ethdev: add speed capabilities")

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
7 years agonet/cxgbe: update supported port module types
Rahul Lakkireddy [Wed, 28 Jun 2017 04:37:40 +0000 (10:07 +0530)]
net/cxgbe: update supported port module types

Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
7 years agonet/vmxnet3: preserve configured MAC address
George Wilkie [Thu, 15 Jun 2017 12:17:42 +0000 (08:17 -0400)]
net/vmxnet3: preserve configured MAC address

When starting a vmxnet3 device, it is always writing the permanent MAC
address, even if a different MAC address was configured.  Write from
the device data instead which holds the current one.

Signed-off-by: George Wilkie <gwilkie@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agonet/vmxnet3: fix receive queue memory leak
Mandeep Rohilla [Thu, 15 Jun 2017 12:17:41 +0000 (08:17 -0400)]
net/vmxnet3: fix receive queue memory leak

This addresses an mbuf leak in an error condition during packet
receive.

Fixes: dfaff37fc46d ("vmxnet3: import new vmxnet3 poll mode driver implementation")
Cc: stable@dpdk.org
Signed-off-by: Mandeep Rohilla <mrohilla@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agonet/vmxnet3: make event processing less noisy
Robert Shearman [Thu, 15 Jun 2017 12:16:11 +0000 (08:16 -0400)]
net/vmxnet3: make event processing less noisy

Make vmxnet3_process_events less noisy by removing logging when there
are no events to process and by making link, device-change and debug
events DEBUG level rather than ERR.

Change these to use PMD_DRV_LOG instead of PMD_INIT_LOG since they
don't happen at device init.

Signed-off-by: Robert Shearman <rshearma@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agonet/vmxnet3: generate link-state change notifications
Robert Shearman [Thu, 15 Jun 2017 12:16:10 +0000 (08:16 -0400)]
net/vmxnet3: generate link-state change notifications

Generate link-state change notifications by listening to interrupts
generated by the device. Make use of the existing
vmxnet3_process_events function that was compiled out, but change it
to call vmxnet3_dev_link_update on a VMXNET3_ECR_LINK event and to not
be so noisy in its log messages.

Enable interrupts on starting the device, using a new helper function,
vmxnet3_enable_intr, based on vmxnet3_disable_intr and validated
against the FreeBSD driver.

Keep track of the number of interrupts registered for to avoid
hardcoding these in vmxnet3_enable/disable_intr and to provision for
any future rxq intr support.

Factor out the guts of vmxnet3_dev_link_update minus the started check
to allow the new function to be called from vmxnet3_dev_start in the
lsc-enabled case to ensure that the link state is correctly set from
the actual state at that point.

Signed-off-by: Robert Shearman <rshearma@brocade.com>
7 years agonet/vmxnet3: implement extended stats
Robert Shearman [Thu, 15 Jun 2017 12:16:09 +0000 (08:16 -0400)]
net/vmxnet3: implement extended stats

Implement xstats_get() to allow a number of driver-specific Tx and Rx
stats to be retrieved.

Signed-off-by: Robert Shearman <rshearma@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agonet/vmxnet3: retain counters on restart
Nachiketa Prachanda [Thu, 15 Jun 2017 12:16:08 +0000 (08:16 -0400)]
net/vmxnet3: retain counters on restart

Most NICs like virtio, igb/ixgbe etc. don't reset counters on
dev_start and arguably this helps in monitoring the counters
across a longer time span with multiple device start/stops.
vmxnet3 behavior is opposite to that and counters are reset by
the host side implementation each time the device is restarted.

Change the driver to save the counters in its private context
before it is reset by writing CMD_ACTIVATE to REG_CMD.

Signed-off-by: Nachiketa Prachanda <nprachan@brocade.com>
Acked-by: Shrikrishna Khare <skhare@vmware.com>
7 years agonet/tap: restore state of remote device when closing
Thomas Monjalon [Tue, 27 Jun 2017 12:33:15 +0000 (14:33 +0200)]
net/tap: restore state of remote device when closing

When exiting a DPDK application, the TAP remote was left
with the link down even if it was initially up.

The device flags of the remote netdevice are saved when probing,
and restored when calling the close function.
The remote state is not set down when calling the stop function anymore.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
7 years agoapp/testpmd: enable DDP remove profile feature
Andrey Chilikin [Wed, 28 Jun 2017 08:15:27 +0000 (09:15 +0100)]
app/testpmd: enable DDP remove profile feature

New command 'ddp del (port) (profile_path)' removes previously
loaded profile and deletes it from the list of the loaded profiles.

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/i40e: extended list of operations for DDP processing
Andrey Chilikin [Wed, 28 Jun 2017 08:15:26 +0000 (09:15 +0100)]
net/i40e: extended list of operations for DDP processing

This patch adds ability to remove already loaded profile
or write profile without registering it

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agoapp/testpmd: update DDP add command parameters
Andrey Chilikin [Tue, 27 Jun 2017 12:06:48 +0000 (13:06 +0100)]
app/testpmd: update DDP add command parameters

This patch adds optional output file path to 'ddp add' command:
'ddp add (port) (profile_path[,output_path])'

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
7 years agonet/i40e/base: update base code info
Jingjing Wu [Tue, 27 Jun 2017 13:29:18 +0000 (21:29 +0800)]
net/i40e/base: update base code info

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e: use set switch AQ instead of register setting
Jingjing Wu [Tue, 27 Jun 2017 13:29:17 +0000 (21:29 +0800)]
net/i40e: use set switch AQ instead of register setting

TPID can be set by set_switch_config aq, change the TPID setting
by set_switch_config on new FW release.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: extend processing of DDP
Jingjing Wu [Tue, 27 Jun 2017 13:29:16 +0000 (21:29 +0800)]
net/i40e/base: extend processing of DDP

This patch adds extended processing of DDP packages:
 - Execution of adminq command sections to support AQ-depended profiles,
   for example, for programming cloud filters types.
 - Ability to write a profile without registering it in the list of
   applied profiles, to be used for AQ-depended profiles.
 - Profile rollback is implemented to support restoration of original
   parser/analyzer configuration without the need of core reset,
   for example, for deploying new profile without resetting device.
 - Search for a specific section in a profile, to be used by driver
   to access metadata sections with description of PCTYPE/PTYPEs
   defined in the profile.

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: add EEPROM checksum verification
Jingjing Wu [Tue, 27 Jun 2017 13:29:15 +0000 (21:29 +0800)]
net/i40e/base: add EEPROM checksum verification

This patch ensures PFs mutually exclusive access to NVM.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: avoid reset timeout issue
Jingjing Wu [Tue, 27 Jun 2017 13:29:14 +0000 (21:29 +0800)]
net/i40e/base: avoid reset timeout issue

This patch allows detection of upcoming core reset in case NIC gets
stuck while performing FLR reset. The i40e_pf_reset() function returns
I40E_ERR_NOT_READY when global reset was detected.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: avoid potential null pointer dereference
Jingjing Wu [Tue, 27 Jun 2017 13:29:13 +0000 (21:29 +0800)]
net/i40e/base: avoid potential null pointer dereference

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: use admin queue for setting LEDs behavior
Jingjing Wu [Tue, 27 Jun 2017 13:29:12 +0000 (21:29 +0800)]
net/i40e/base: use admin queue for setting LEDs behavior

Instead of accessing register directly, use newly added AQC in
order to blink LEDs. Introduce and utilize a new flag to prevent
excessive API version checking.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: support switch parameters
Jingjing Wu [Tue, 27 Jun 2017 13:29:11 +0000 (21:29 +0800)]
net/i40e/base: support switch parameters

Adds double VLAN tagging ethertype fields to Set Switch Parameters AQ
command.  These were added in firmware API 1.7.

Callers of i40e_aq_set_switch_config() can specify the ethertypes to
use by filling out the corresponding fields in struct i40e_hw.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: update FW AQ API version to 1.7
Jingjing Wu [Tue, 27 Jun 2017 13:29:10 +0000 (21:29 +0800)]
net/i40e/base: update FW AQ API version to 1.7

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: track id can be 0
Jingjing Wu [Tue, 27 Jun 2017 13:29:09 +0000 (21:29 +0800)]
net/i40e/base: track id can be 0

track_id == 0 is valid for “read only” profiles when
profile does not have any “write” commands.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: report supported link modes
Jingjing Wu [Tue, 27 Jun 2017 13:29:08 +0000 (21:29 +0800)]
net/i40e/base: report supported link modes

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: add new PHY types for 25G AOC and ACC
Jingjing Wu [Tue, 27 Jun 2017 13:29:07 +0000 (21:29 +0800)]
net/i40e/base: add new PHY types for 25G AOC and ACC

This patch adds new phy types for 25G Active Optical Cables (AOC) and
Active Copper Cables (ACC) support.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: store the requested FEC information
Jingjing Wu [Tue, 27 Jun 2017 13:29:06 +0000 (21:29 +0800)]
net/i40e/base: store the requested FEC information

Store information about FEC modes, that were requested. It will be used
in printing link status information function and this way there is no
need to call admin queue there.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: add support for Adaptive Virtual Function
Jingjing Wu [Tue, 27 Jun 2017 13:29:05 +0000 (21:29 +0800)]
net/i40e/base: add support for Adaptive Virtual Function

Add device id define and mac_type assignment needed for Adaptive
Virtual Function.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: add AQ command for read/write PHY registers
Jingjing Wu [Tue, 27 Jun 2017 13:29:04 +0000 (21:29 +0800)]
net/i40e/base: add AQ command for read/write PHY registers

This patch adds new additional command for accessing to PHY registers.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: sync nvmupdate command and adminq subtask
Jingjing Wu [Tue, 27 Jun 2017 13:29:03 +0000 (21:29 +0800)]
net/i40e/base: sync nvmupdate command and adminq subtask

During NVMupdate, state machine gets into unrecoverable state because
i40e_clean_adminq_subtask can get scheduled after the admin queue
command but before other state variables are updated.

This patch adds locking around admin queue command and update of
state variables so that adminq_subtask will have accurate information
whenever it gets scheduled.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/i40e/base: use new virtchnl header file
Jingjing Wu [Tue, 27 Jun 2017 13:29:02 +0000 (21:29 +0800)]
net/i40e/base: use new virtchnl header file

Modify the necessary files to be compatible with the new virtchnl.h file
instead of relying on i40e_virtchnl.h variant. This mostly changes
references to VIRTCHNL_ variables by removing prefix of I40E_.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/bonding: fix when NTT flag updated
Sha Zhang [Mon, 22 May 2017 07:52:11 +0000 (15:52 +0800)]
net/bonding: fix when NTT flag updated

According to the standard, state machine of LACP should transmit lacpdu
when partner's state changes from slow to fast, rather than from fast
to slow.

Fixes: 46fb43683679 ("bond: add mode 4")
Cc: stable@dpdk.org
Signed-off-by: Sha Zhang <zhangsha.zhang@huawei.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
7 years agonet/i40e: avoid PCI probing failure when using bogus SFP
Olivier Matz [Thu, 15 Jun 2017 09:08:32 +0000 (11:08 +0200)]
net/i40e: avoid PCI probing failure when using bogus SFP

When a port is using a bogus SFP, the PCI probing returns an error,
preventing to register a portid.

To give a better chance to the applications to retry after the SFP is
changed, move this check in eth_i40e_dev_configure(), so that only a
port reconfiguration is needed to retry.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
7 years agonet/dpaa2: add support for multi seg buffers
Hemant Agrawal [Thu, 22 Jun 2017 13:57:17 +0000 (19:27 +0530)]
net/dpaa2: add support for multi seg buffers

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: add support for frame based Tx congestion
Hemant Agrawal [Thu, 22 Jun 2017 13:57:16 +0000 (19:27 +0530)]
net/dpaa2: add support for frame based Tx congestion

Change from byte based to frame based.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agobus/fslmc: add check for memseg availability
Shreyansh Jain [Thu, 22 Jun 2017 13:57:15 +0000 (19:27 +0530)]
bus/fslmc: add check for memseg availability

Cleanup the DMA map logic for memsegs. Earlier, in case
DMA mapping reaching end of segment, it reports a spurious error.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
7 years agobus/fslmc: fix the failure loop condition
Hemant Agrawal [Thu, 22 Jun 2017 13:57:14 +0000 (19:27 +0530)]
bus/fslmc: fix the failure loop condition

Correct the while condition for cleanup in case of failure.

Fixes: a0d5c9caf0f1 ("bus/fslmc: add frame queue based dq storage")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agodoc: change dpaa2 helper repository path
Hemant Agrawal [Thu, 22 Jun 2017 13:57:13 +0000 (19:27 +0530)]
doc: change dpaa2 helper repository path

changing the NXP DPDK helper repository from helper to extras.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
7 years agonet/dpaa2: disable Tx congestion notification
Hemant Agrawal [Thu, 22 Jun 2017 13:57:12 +0000 (19:27 +0530)]
net/dpaa2: disable Tx congestion notification

Making it off by default.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: check SoC version for stashing enable
Hemant Agrawal [Thu, 22 Jun 2017 13:57:11 +0000 (19:27 +0530)]
net/dpaa2: check SoC version for stashing enable

Instead of qbman version, check the SoC version for stashing
enablement decision.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: align the queue numbers with MC firmware
Hemant Agrawal [Thu, 22 Jun 2017 13:57:10 +0000 (19:27 +0530)]
net/dpaa2: align the queue numbers with MC firmware

Align dpaa2 PMD driver code to the way MC Firmware manages queues.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: set data align option in MC firmware
Hemant Agrawal [Thu, 22 Jun 2017 13:57:09 +0000 (19:27 +0530)]
net/dpaa2: set data align option in MC firmware

Configuring the MC FW to configure data alignment by default.
This help in improving performance for some of the platform variants.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/dpaa2: set device driver
Hemant Agrawal [Thu, 22 Jun 2017 13:57:08 +0000 (19:27 +0530)]
net/dpaa2: set device driver

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
7 years agonet/i40e: fix flow director for IPv6
Beilei Xing [Thu, 22 Jun 2017 09:30:52 +0000 (17:30 +0800)]
net/i40e: fix flow director for IPv6

After adding a fdir rule for IPv6 with input set TC, IPv6 packets
with the specific TC can't be assigned the right queue.
The root cause is that TC is parsed wrongly, this patch fixes
TC parsing problem.

Fixes: 7d83c152a207 ("net/i40e: parse flow director filter")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
7 years agonet/fm10k: initialize link status in device start
Xiao Wang [Thu, 22 Jun 2017 11:20:03 +0000 (04:20 -0700)]
net/fm10k: initialize link status in device start

Fm10k host driver can't manage PHY directly and provides a fake link
status by always reporting LINK_UP. We should initialize link status
in device start, otherwise application will get LINK_DOWN status
when LSC configured.

Fixes: 9ae6068c86da ("fm10k: add dev start/stop")
Cc: stable@dpdk.org
Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
7 years agonet/sfc: support flow API isolated mode
Ivan Malov [Tue, 20 Jun 2017 16:37:09 +0000 (17:37 +0100)]
net/sfc: support flow API isolated mode

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
7 years agonet/mlx5: fix TSO segment size
Shahaf Shuler [Tue, 20 Jun 2017 05:24:47 +0000 (08:24 +0300)]
net/mlx5: fix TSO segment size

In case on multi segment packet, the TSO segment size
was taken from the last segment. This may lead to incorrect
values in case not all segments are initialized with the field.

Fixing it by taking the value from the first segment.

Fixes: 3f13f8c23a7c ("net/mlx5: support hardware TSO")
Cc: stable@dpdk.org
Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/mlx4: fix assertion failure on link update
Adrien Mazarguil [Fri, 16 Jun 2017 11:37:51 +0000 (13:37 +0200)]
net/mlx4: fix assertion failure on link update

The interrupt handler can sometimes be triggered for reasons other than a
link status event. An assertion failure happen when such events occur while
an asynchronous link status update is already scheduled.

Address this issue using the same approach as its mlx5 counterpart,
commit a9f2fbc42f0c ("net/mlx5: fix inconsistent link status")

Fixes: c4da6caa426d ("mlx4: handle link status interrupts")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
7 years agonet/igb: fix flex filter length
Wei Zhao [Fri, 16 Jun 2017 05:04:24 +0000 (13:04 +0800)]
net/igb: fix flex filter length

igb flex filter supports recognizing any arbitrary pattern within first
128 bytes of the packet.

But the macro E1000_FLEX_FILTERS_MASK_SIZE only covers first 64 bytes.

Fixes: 231d43909a31 ("igb: migrate flex filter to new API")
Cc: stable@dpdk.org
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
7 years agonet/igb: fix flex type filter
Wei Zhao [Fri, 16 Jun 2017 05:04:23 +0000 (13:04 +0800)]
net/igb: fix flex type filter

There is a bug in flex type filter parsing because of wrong local
variable index usage.

Bug cause filter to fail and wrong mask calculation.

Fixes: 7cd77faf7129 ("net/igb: parse flow API flex filter")

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
7 years agonet/mlx5: fix Rx interrupts management
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:17 +0000 (13:49 +0200)]
net/mlx5: fix Rx interrupts management

This commit addresses various issues that may lead to undefined behavior
when configuring Rx interrupts.

While failure to create a Rx queue completion channel in rxq_ctrl_setup()
prevents that queue from being created, existing queues still have theirs.
Since the error handler disables dev_conf.intr_conf.rxq as well, subsequent
calls to rxq_ctrl_setup() create Rx queues without interrupts. This leads
to a scenario where not all Rx queues support interrupts; missing checks on
the presence of completion channels may crash the application.

Considering that the PMD is not supposed to disable user-provided
configuration parameters (dev_conf.intr_conf.rxq), and that these can
change for subsequent rxq_ctrl_setup() calls anyway, properly supporting a
mixed mode where not all Rx queues have interrupts enabled is a better
approach.

To do so with a minimum set of changes, priv_intr_efd_enable() and
priv_create_intr_vec() are first refactored as a single
priv_rx_intr_vec_enable() function (same for their "disable" counterparts).
Since they had to be used together, there was no point in keeping them
separate.

Remaining changes:

- Always clean up before reconfiguring interrupts to avoid memory leaks.
- Always clean up when closing the device.
- Use malloc()/free() instead of their rte_*() counterparts since there is
  no need to store the vector in huge pages-backed memory.
- Allow more Rx queues than the size of the event file descriptor array as
  long as Rx interrupts are not requested on all of them.
- Properly clean up interrupt handle when disabling Rx interrupts (nb_efd
  and intr_vec reset to 0).
- Check completion channel presence while toggling Rx interrupts on a given
  queue.

Fixes: 3c7d44af252a ("net/mlx5: support user space Rx interrupt event")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix return value in Rx interrupts code
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:16 +0000 (13:49 +0200)]
net/mlx5: fix return value in Rx interrupts code

A negative return value is documented for that function in case of error.

Fixes: 3c7d44af252a ("net/mlx5: support user space Rx interrupt event")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix Rx interrupts support checks
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:15 +0000 (13:49 +0200)]
net/mlx5: fix Rx interrupts support checks

Not exposing Rx interrupts callbacks when this feature is unsupported is
less intrusive than having two different versions for these functions.

Fixes: 3c7d44af252a ("net/mlx5: support user space Rx interrupt event")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx5: fix misplaced Rx interrupts functions
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:14 +0000 (13:49 +0200)]
net/mlx5: fix misplaced Rx interrupts functions

These functions do not belong to the data path. Their prototypes are also
misplaced.

Fixes: 3c7d44af252a ("net/mlx5: support user space Rx interrupt event")
Cc: stable@dpdk.org
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
7 years agonet/mlx4: fix Rx interrupts management
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:13 +0000 (13:49 +0200)]
net/mlx4: fix Rx interrupts management

This commit addresses various issues that may lead to undefined behavior
when configuring Rx interrupts.

While failure to create a Rx queue completion channel in rxq_setup()
prevents that queue from being created, existing queues still have theirs.
Since the error handler disables dev_conf.intr_conf.rxq as well, subsequent
calls to rxq_setup() create Rx queues without interrupts. This leads to a
scenario where not all Rx queues support interrupts; missing checks on the
presence of completion channels may crash the application.

Considering that the PMD is not supposed to disable user-provided
configuration parameters (dev_conf.intr_conf.rxq), and that these can
change for subsequent rxq_setup() calls anyway, properly supporting a mixed
mode where not all Rx queues have interrupts enabled is a better approach.

To do so with a minimum set of changes, priv_intr_efd_enable() and
priv_create_intr_vec() are first refactored as a single
priv_rx_intr_vec_enable() function (same for their "disable" counterparts).
Since they had to be used together, there was no point in keeping them
separate.

Remaining changes:

- Always clean up before reconfiguring interrupts to avoid memory leaks.
- Always clean up when closing the device.
- Use malloc()/free() instead of their rte_*() counterparts since there is
  no need to store the vector in huge pages-backed memory.
- Allow more Rx queues than the size of the event file descriptor array as
  long as Rx interrupts are not requested on all of them.
- Properly clean up interrupt handle when disabling Rx interrupts (nb_efd
  and intr_vec reset to 0).
- Check completion channel presence while toggling Rx interrupts on a given
  queue.

Fixes: 9f05a4b81809 ("net/mlx4: support user space Rx interrupt event")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Moti Haimovsky <motih@mellanox.com>
7 years agonet/mlx4: fix Rx interrupts with multiple ports
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:12 +0000 (13:49 +0200)]
net/mlx4: fix Rx interrupts with multiple ports

Several Ethernet device structures are allocated on top of a common PCI
device for mlx4 adapters with multiple ports. These inherit a common
interrupt handle from their parent PCI device, which prevents Rx interrupts
from working properly on all ports as their configuration is overwritten.

Use a local interrupt handle to address this issue.

Fixes: 9f05a4b81809 ("net/mlx4: support user space Rx interrupt event")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Moti Haimovsky <motih@mellanox.com>
7 years agonet/mlx4: fix typos from prior commit
Adrien Mazarguil [Wed, 14 Jun 2017 11:49:11 +0000 (13:49 +0200)]
net/mlx4: fix typos from prior commit

Fixes: 9f05a4b81809 ("net/mlx4: support user space Rx interrupt event")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Moti Haimovsky <motih@mellanox.com>
7 years agoapp/testpmd: enable DDP get info feature
Andrey Chilikin [Fri, 16 Jun 2017 09:25:15 +0000 (10:25 +0100)]
app/testpmd: enable DDP get info feature

This patch demonstrates how to get information about dynamic device
personalization (DDP) profile.

Command 'ddp get info (path_to_profile)' extracts and prints
information about the given profile.

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
7 years agonet/i40e: get information about DDP profile
Andrey Chilikin [Fri, 16 Jun 2017 09:25:14 +0000 (10:25 +0100)]
net/i40e: get information about DDP profile

This patch adds ability to request information about dynamic device
personalization (DDP) profile.

Signed-off-by: Andrey Chilikin <andrey.chilikin@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>