dpdk.git
6 years agonet/bnxt: add check for multi host PF per port
Ajit Khaparde [Mon, 8 Jan 2018 20:24:30 +0000 (12:24 -0800)]
net/bnxt: add check for multi host PF per port

Certain SKUs of NIC can support features like NPAR, Multi Host PFs per
port.  We need to check for such features in order to restrict certain
HWRM commands from being sent to the FW.

For the single PF per port model, allow commands like hwrm_port_phy_cfg
from the PF driver. In NPAR and MH environments with multiple PFs per
port, we should not allow HWRM commands like hwrm_port_phy_cfg to be
sent to the FW.

This patch takes care of that.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agonet/bnxt: return proper error code
Ajit Khaparde [Mon, 8 Jan 2018 20:24:29 +0000 (12:24 -0800)]
net/bnxt: return proper error code

If the FW fails bnxt_hwrm_func_reset() with an error status,
instead of returning -1, return a more standard value of -EIO.
Similarly sometimes the status returned by certain FW commands
may not be generic. Return a more standard value of -EIO in
that case as well.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agonet/bnxt: fix group info usage
Ajit Khaparde [Mon, 8 Jan 2018 20:24:28 +0000 (12:24 -0800)]
net/bnxt: fix group info usage

Ring groups is a Rx only attribute. Make sure there are sufficient
ring groups available. Return an error if they are not available.

Fixes: 37d6161a68ba ("net/bnxt: add ring group alloc/free")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agonet/bnxt: parse checksum offload flags
Ajit Khaparde [Mon, 8 Jan 2018 20:24:27 +0000 (12:24 -0800)]
net/bnxt: parse checksum offload flags

Parse the Tx checksum offload flags and set the proper bits
in the Tx descriptor.

Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agonet/bnxt: fix double increment of idx during Tx ring alloc
Ajit Khaparde [Mon, 8 Jan 2018 20:24:26 +0000 (12:24 -0800)]
net/bnxt: fix double increment of idx during Tx ring alloc

We are incrementing idx twice while allocating Tx rings.
Since this is passed to the firmware, it may cause unexpected behavior.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agonet/bnxt: check return values in init
Ajit Khaparde [Mon, 8 Jan 2018 20:24:25 +0000 (12:24 -0800)]
net/bnxt: check return values in init

We are not checking for return values of functions like
bnxt_hwrm_queue_qportcfg and bnxt_hwrm_func_qcfg in bnxt_dev_init
thereby preventing a cleanup in case of a HWRM command failure.
This patch fixes that.

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
6 years agobus/dpaa: support enqueue frames of multiple queues
Akhil Goyal [Wed, 10 Jan 2018 10:46:41 +0000 (16:16 +0530)]
bus/dpaa: support enqueue frames of multiple queues

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: support push mode
Hemant Agrawal [Wed, 10 Jan 2018 10:46:40 +0000 (16:16 +0530)]
net/dpaa: support push mode

Signed-off-by: Sunil Kumar Kori <sunil.kori@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
6 years agobus/dpaa: support static queues
Hemant Agrawal [Wed, 10 Jan 2018 10:46:39 +0000 (16:16 +0530)]
bus/dpaa: support static queues

DPAA hardware support two kinds of queues:
1. Pull mode queue - where one needs to regularly pull the packets.
2. Push mode queue - where the hw pushes the packet to queue. These are
   high performance queues, but limited in number.

This patch add the driver support for push mode queues.

Signed-off-by: Sunil Kumar Kori <sunil.kori@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agoapp/testpmd: support loopback config for DPAA
Hemant Agrawal [Wed, 10 Jan 2018 10:46:38 +0000 (16:16 +0530)]
app/testpmd: support loopback config for DPAA

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: support loopback API
Hemant Agrawal [Wed, 10 Jan 2018 10:46:37 +0000 (16:16 +0530)]
net/dpaa: support loopback API

PMD specific API is being added as an EXPERIMENTAL API

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: support Rx queue count
Hemant Agrawal [Wed, 10 Jan 2018 10:46:36 +0000 (16:16 +0530)]
net/dpaa: support Rx queue count

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agobus/dpaa: query queue frame count support
Hemant Agrawal [Wed, 10 Jan 2018 10:46:35 +0000 (16:16 +0530)]
bus/dpaa: query queue frame count support

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: optimize Rx path
Nipun Gupta [Wed, 10 Jan 2018 10:46:34 +0000 (16:16 +0530)]
net/dpaa: optimize Rx path

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: optimize the Tx burst
Nipun Gupta [Wed, 10 Jan 2018 10:46:33 +0000 (16:16 +0530)]
net/dpaa: optimize the Tx burst

Optimize it for best case. Create a function
for TX offloads to be used in multiple legs.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: change Tx HW budget to 7
Nipun Gupta [Wed, 10 Jan 2018 10:46:32 +0000 (16:16 +0530)]
net/dpaa: change Tx HW budget to 7

change the TX budget to 7 to sync best with the hw.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agobus/dpaa: support creating dynamic HW portal
Hemant Agrawal [Wed, 10 Jan 2018 10:46:31 +0000 (16:16 +0530)]
bus/dpaa: support creating dynamic HW portal

HW portal is a processing context in DPAA. This patch allow
creation of a queue specific HW portal context.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agobus/dpaa: optimize the endianness conversions
Nipun Gupta [Wed, 10 Jan 2018 10:46:30 +0000 (16:16 +0530)]
bus/dpaa: optimize the endianness conversions

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agobus/dpaa: optimize the qman HW stashing settings
Nipun Gupta [Wed, 10 Jan 2018 10:46:29 +0000 (16:16 +0530)]
bus/dpaa: optimize the qman HW stashing settings

The settings are tuned for performance.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: add frame count based tail drop with CGR
Hemant Agrawal [Wed, 10 Jan 2018 10:46:28 +0000 (16:16 +0530)]
net/dpaa: add frame count based tail drop with CGR

Replace the byte based tail queue congestion support
with frame count based congestion groups.
It can easily map to number of RX descriptors for a queue.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: set the correct frame size in device MTU
Ashish Jain [Wed, 10 Jan 2018 10:46:27 +0000 (16:16 +0530)]
net/dpaa: set the correct frame size in device MTU

Setting correct frame size in dpaa_dev_mtu_set
api call. Also setting correct max frame size in
hardware in dev_configure for jumbo frames

Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agobus/dpaa: update platform SoC value register routines
Hemant Agrawal [Wed, 10 Jan 2018 10:46:26 +0000 (16:16 +0530)]
bus/dpaa: update platform SoC value register routines

This patch update the logic and expose the soc value
register, so that it can be used by other modules as well.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: fix FW version code
Hemant Agrawal [Wed, 10 Jan 2018 10:46:25 +0000 (16:16 +0530)]
net/dpaa: fix FW version code

fix the soc id path and missing fclose

Fixes: cf0fab1d2ca5 ("net/dpaa: support firmware version get API")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: fix the mbuf packet type if zero
Ashish Jain [Wed, 10 Jan 2018 10:46:24 +0000 (16:16 +0530)]
net/dpaa: fix the mbuf packet type if zero

Populate the mbuf field packet_type which is required
for calculating checksum while transmitting frames

Fixes: 8cffdcbe85aa ("net/dpaa: support scattered Rx")
Cc: stable@dpdk.org
Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/dpaa: fix uninitialized and unused variables
Hemant Agrawal [Wed, 10 Jan 2018 10:46:23 +0000 (16:16 +0530)]
net/dpaa: fix uninitialized and unused variables

This patch fixes the issues reported by NXP's internal
coverity build.

Fixes: 05ba55bc2b1a ("net/dpaa: add packet dump for debugging")
Fixes: 37f9b54bd3cf ("net/dpaa: support Tx and Rx queue setup")
Cc: stable@dpdk.org
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/sfc: change license to BSD-3-Clause
Andrew Rybchenko [Mon, 8 Jan 2018 13:35:35 +0000 (13:35 +0000)]
net/sfc: change license to BSD-3-Clause

Change license from BSD-2-Clause to BSD-3-Clause.
Bump copyright year.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/sfc/base: change license to BSD-3-Clause
Andrew Rybchenko [Mon, 8 Jan 2018 13:35:34 +0000 (13:35 +0000)]
net/sfc/base: change license to BSD-3-Clause

Change license from BSD-2-Clause-FreeBSD to BSD-3-Clause.
Bump copyright year.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
6 years agonet/sfc: support more options for a number of Tx descriptors
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:55 +0000 (20:24 +0000)]
net/sfc: support more options for a number of Tx descriptors

The number of Tx descriptors is not used as HW Tx ring size any more.
It simply defines maximum fill level.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: support more options for a number of Rx descriptors
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:54 +0000 (20:24 +0000)]
net/sfc: support more options for a number of Rx descriptors

The number of Rx descriptors is not used as HW Rx ring size any more.
It simply defines maximum fill level.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: use Tx queue max fill level calculated on init
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:53 +0000 (20:24 +0000)]
net/sfc: use Tx queue max fill level calculated on init

Prepare to support more options for number of Tx descriptors.

libefx-based datapath is updated just for completeness to
make code more readable and less error-prone.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: use Rx queue max fill level calculated on init
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:52 +0000 (20:24 +0000)]
net/sfc: use Rx queue max fill level calculated on init

Prepare to support more options for number of Rx descriptors.

libefx-based datapath is updated just for completeness to
make code more readable and less error-prone.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: make Tx free threshold check datapath specific
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:51 +0000 (20:24 +0000)]
net/sfc: make Tx free threshold check datapath specific

EFX_TXQ_LIMIT is libefx-specifics and it should not be used
for other Tx datapaths implementations (e.g. EF10 native).

EF10 native Tx datapath has its own understanding of the maximum
TxQ fill level imposed by EvQ clear strategy and space reserved
for Tx error and flush events.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/sfc: make refill threshold check Rx datapath specific
Andrew Rybchenko [Tue, 9 Jan 2018 20:24:50 +0000 (20:24 +0000)]
net/sfc: make refill threshold check Rx datapath specific

EFX_RXQ_LIMIT is libefx-specifics and it should not be used
for other Rx datapaths implementations (e.g. EF10 native).

EF10 native Rx datapath has its own understanding of the maximum
RxQ fill level imposed by EvQ clear strategy and space reserved
for Rx error and flush events.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
6 years agonet/avf: enable Rx interrupt
Jingjing Wu [Wed, 10 Jan 2018 13:02:06 +0000 (21:02 +0800)]
net/avf: enable Rx interrupt

Update the doc for the AVF features either.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable bulk allocate Rx
Wenzhuo Lu [Wed, 10 Jan 2018 13:02:05 +0000 (21:02 +0800)]
net/avf: enable bulk allocate Rx

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/avf: enable SSE Rx Tx
Jingjing Wu [Wed, 10 Jan 2018 13:02:04 +0000 (21:02 +0800)]
net/avf: enable SSE Rx Tx

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/i40e: support AVF basic interface
Jingjing Wu [Wed, 10 Jan 2018 13:02:03 +0000 (21:02 +0800)]
net/i40e: support AVF basic interface

Enable Virtchnl offload Caps negotiation and RSS_PF offload
to support AVF basic interface.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable ops to check queue info and status
Jingjing Wu [Wed, 10 Jan 2018 13:02:02 +0000 (21:02 +0800)]
net/avf: enable ops to check queue info and status

 - rxq_info_get
 - txq_info_get
 - rx_queue_count
 - rx_descriptor_status
 - tx_descriptor_status

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable ops for MTU setting
Jingjing Wu [Wed, 10 Jan 2018 13:02:01 +0000 (21:02 +0800)]
net/avf: enable ops for MTU setting

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable ops for RSS setting
Jingjing Wu [Wed, 10 Jan 2018 13:02:00 +0000 (21:02 +0800)]
net/avf: enable ops for RSS setting

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable MAC VLAN and promisc ops
Jingjing Wu [Wed, 10 Jan 2018 13:01:59 +0000 (21:01 +0800)]
net/avf: enable MAC VLAN and promisc ops

 - promiscuous_enable
 - promiscuous_disable
 - allmulticast_enable
 - allmulticast_disable
 - mac_addr_add
 - mac_addr_remove
 - mac_addr_set
 - vlan_filter_set
 - vlan_offload_set

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: support stats
Jingjing Wu [Wed, 10 Jan 2018 13:01:58 +0000 (21:01 +0800)]
net/avf: support stats

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable link status update
Jingjing Wu [Wed, 10 Jan 2018 13:01:57 +0000 (21:01 +0800)]
net/avf: enable link status update

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: enable basic Rx Tx
Wenzhuo Lu [Wed, 10 Jan 2018 13:01:56 +0000 (21:01 +0800)]
net/avf: enable basic Rx Tx

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/avf: enable queue and device
Jingjing Wu [Wed, 10 Jan 2018 13:01:55 +0000 (21:01 +0800)]
net/avf: enable queue and device

enable device and queue setup ops like:

 - dev_configure
 - dev_start
 - dev_stop
 - dev_close
 - dev_infos_get
 - rx_queue_start
 - rx_queue_stop
 - tx_queue_start
 - tx_queue_stop
 - rx_queue_setup
 - rx_queue_release
 - tx_queue_setup
 - tx_queue_release

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf: initialize PMD
Jingjing Wu [Wed, 10 Jan 2018 13:01:54 +0000 (21:01 +0800)]
net/avf: initialize PMD

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/avf/base: add base code for avf PMD
Jingjing Wu [Wed, 10 Jan 2018 13:01:53 +0000 (21:01 +0800)]
net/avf/base: add base code for avf PMD

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/mlx4: convert to new Rx offloads API
Shahaf Shuler [Wed, 10 Jan 2018 09:17:03 +0000 (11:17 +0200)]
net/mlx4: convert to new Rx offloads API

Ethdev Rx offloads API has changed since:

commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API")

This commit support the new Rx offloads API.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
6 years agonet/mlx4: convert to new Tx offloads API
Shahaf Shuler [Wed, 10 Jan 2018 09:17:02 +0000 (11:17 +0200)]
net/mlx4: convert to new Tx offloads API

Ethdev Tx offloads API has changed since:

commit cba7f53b717d ("ethdev: introduce Tx queue offloads API")

This commit support the new Tx offloads API.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
6 years agonet/mlx5: convert to new Rx offloads API
Shahaf Shuler [Wed, 10 Jan 2018 09:17:01 +0000 (11:17 +0200)]
net/mlx5: convert to new Rx offloads API

Ethdev Rx offloads API has changed since:

commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API")

This commit support the new Rx offloads API.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: convert to new Tx offloads API
Shahaf Shuler [Wed, 10 Jan 2018 09:17:00 +0000 (11:17 +0200)]
net/mlx5: convert to new Tx offloads API

Ethdev Tx offloads API has changed since:

commit cba7f53b717d ("ethdev: introduce Tx queue offloads API")

This commit support the new Tx offloads API.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: rename counter set in configuration
Nelio Laranjeiro [Wed, 10 Jan 2018 09:16:59 +0000 (11:16 +0200)]
net/mlx5: rename counter set in configuration

Counter_set is a counter used for flows when its support is available.
Renaming it to flow counter.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: add device configuration structure
Shahaf Shuler [Wed, 10 Jan 2018 09:16:58 +0000 (11:16 +0200)]
net/mlx5: add device configuration structure

Move device configuration and features capabilities to its own structure.
This structure is filled by mlx5_pci_probe(), outside of this function
it should be treated as *read only*.

This configuration struct will be used for the Tx/Rx queue setup to
select the Tx/Rx queue parameters based on the user configuration and
device capabilities.
In addition it will be used by the burst selection function to decide
on the best pkt burst to be used.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: change pkt burst select function prototype
Shahaf Shuler [Wed, 10 Jan 2018 09:16:57 +0000 (11:16 +0200)]
net/mlx5: change pkt burst select function prototype

Change the function prototype to return the function pointer of the
selected Tx/Rx burst function instead of assigning it directly to the
device context.

Such change will enable to use those select functions to query the burst
function that will be selected according to the device configuration.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
6 years agonet/mlx5: fix overwriting bit-fields in SW Rx queue
Yongseok Koh [Tue, 9 Jan 2018 17:38:50 +0000 (09:38 -0800)]
net/mlx5: fix overwriting bit-fields in SW Rx queue

Bit-fields in mlx5_rxq_data can be changed on the fly by a control plane -
e.g. rxq->mark. However, vectorized Rx uses a bit-field to mark pending
errors. Even if one bit is written, consequence is to write the whole
integer and this can cause a synchronization issue - two entities write to
a same block without locking. As the pending_err bit is entirely internal
use for the datapath, this can be replaced with a local variable.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")
Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM")
Cc: stable@dpdk.org
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
6 years agonet/mlx4: verify Tx max sges
Moti Haimovsky [Thu, 4 Jan 2018 16:12:03 +0000 (18:12 +0200)]
net/mlx4: verify Tx max sges

Max number of Tx scatter-gather entries is a property of the device
and is queried at init. This value was not changed in a while and
most probably will not be changed in the future, Therefore and
in order to enhance Tx performance, the Tx max-sge value is hardcoded
in mlx4 PRM code.
This patch adds a verification that the above assumption still holds
and that the hardcoded value is still supported by the mlx4 hardware.

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
6 years agodoc: describe raw mode of FDIR in testpmd
Kirill Rybalchenko [Thu, 23 Nov 2017 16:15:01 +0000 (16:15 +0000)]
doc: describe raw mode of FDIR in testpmd

Add description of raw flow type mode for flow_director_filter
command in testpmd. Modify description of flow type parameter
for functions set_hash_global_config, set_hash_input_set and
set_fdir_input_set.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agoapp/testpmd: add raw flow type mode for FDIR
Kirill Rybalchenko [Thu, 23 Nov 2017 16:15:00 +0000 (16:15 +0000)]
app/testpmd: add raw flow type mode for FDIR

Add possibility to load file with raw packet and set it as a
template for FDIR setup.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/i40e: fix VSI MAC filter on primary address change
Olivier Matz [Wed, 3 Jan 2018 14:29:23 +0000 (15:29 +0100)]
net/i40e: fix VSI MAC filter on primary address change

When primary address mac is changed, the mac filters were not updated in
the VSI with the new mac addr and incoming packets with this destination
address are dropped by the hardware filters.

This patch removes the VSI mac filter for the previous mac address and
adds a new one for new mac address.

Fixes: e18e01e92c29 ("i40e: support default MAC address setting")
Cc: stable@dpdk.org
Signed-off-by: Laurent Hardy <laurent.hardy@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: add AVX2 Rx function
Bruce Richardson [Tue, 9 Jan 2018 14:32:54 +0000 (14:32 +0000)]
net/i40e: add AVX2 Rx function

Add a new Rx function using AVX2 instructions for higher
performance. For now, this functionality is limited to platforms
with Intel Xeon Scalable Processor(SP). The function to be used
is selected at runtime, not just at compile-time.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/i40e: add AVX2 Tx function
Bruce Richardson [Tue, 9 Jan 2018 14:32:53 +0000 (14:32 +0000)]
net/i40e: add AVX2 Tx function

Add a new Tx function using AVX2 instructions for higher
performance. For now, this functionality is limited to platforms
with Intel Xeon Scalable Processor(SP). The function to be used
is selected at runtime, not just at compile-time.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
6 years agonet/ixgbe/base: update README file
Qiming Yang [Wed, 10 Jan 2018 16:04:39 +0000 (00:04 +0800)]
net/ixgbe/base: update README file

Update README file to specify the version of drops.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add media type of fixed fiber
Qiming Yang [Wed, 10 Jan 2018 16:04:38 +0000 (00:04 +0800)]
net/ixgbe/base: add media type of fixed fiber

This patch adds new media type support of fixed fiber.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: update annotations
Qiming Yang [Wed, 10 Jan 2018 16:04:37 +0000 (00:04 +0800)]
net/ixgbe/base: update annotations

This patch mainly adds/removes comments for function parameters
that were missing or no longer needed.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: clear sync register during init
Qiming Yang [Wed, 10 Jan 2018 16:04:36 +0000 (00:04 +0800)]
net/ixgbe/base: clear sync register during init

This patch clears software resource bits in synchronization
register and updates host interface resource bit error case for
X540. It also fixes compile warnings of using GCC 7.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: use 2 bytes for flash read command
Qiming Yang [Wed, 10 Jan 2018 16:04:35 +0000 (00:04 +0800)]
net/ixgbe/base: use 2 bytes for flash read command

With this patch, it uses 2 bytes of buffer reading, as required
for flash read command. It also adds definitions for LESM module.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add PHY read and write
Qiming Yang [Wed, 10 Jan 2018 16:04:34 +0000 (00:04 +0800)]
net/ixgbe/base: add PHY read and write

This patch adds lockless read/write support for clause 22 PHY,
together with some enhancements for link speed and return value
handling.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: increase the timeout
Qiming Yang [Wed, 10 Jan 2018 16:04:33 +0000 (00:04 +0800)]
net/ixgbe/base: increase the timeout

Increase SECRX_RDY polling frequency and semaphore timeout which
fixes the FWSW.PT check in ixgbe_mng_present().

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/ixgbe/base: add functions to get version info
Qiming Yang [Wed, 10 Jan 2018 16:04:32 +0000 (00:04 +0800)]
net/ixgbe/base: add functions to get version info

Add common functions for getting OEM product version, option
ROM version, and ETrack id.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
6 years agonet/i40e/base: update base code info
Qi Zhang [Tue, 9 Jan 2018 20:30:22 +0000 (15:30 -0500)]
net/i40e/base: update base code info

Update README file to specify the version of drop.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: rename a field
Qi Zhang [Tue, 9 Jan 2018 20:30:21 +0000 (15:30 -0500)]
net/i40e/base: rename a field

Rename virtchnl_vf_resource's vf_offload_flags to vf_cap_flags.
The new name is more generic, so more than just offloading
capabilities can be added.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix unaligned data issue
Qi Zhang [Tue, 9 Jan 2018 20:30:20 +0000 (15:30 -0500)]
net/i40e/base: fix unaligned data issue

This fix prevents errors or warnings while accessing unaligned 32-bit
data words on non-x86 platforms during getting link info from firmware.

Fixes: e8228f1a16b7 ("net/i40e/base: report supported link modes")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix reading LLDP configuration
Qi Zhang [Tue, 9 Jan 2018 20:30:19 +0000 (15:30 -0500)]
net/i40e/base: fix reading LLDP configuration

Previous method for reading LLDP config was based on hard-coded offsets.
It happened to work, because of structured architecture of the NVM memory.
In the new approach, known as FLAT, we need to calculate the absolute
address, instead of using relative values. Needed defines for memory
location were added.

Fixes: 8db9e2a1b232 ("i40e: base driver")
CC: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix compile issue for GCC 6.3
Qi Zhang [Tue, 9 Jan 2018 20:30:18 +0000 (15:30 -0500)]
net/i40e/base: fix compile issue for GCC 6.3

When using GCC 6.3.0 and EXTRA_CFLAGS=-Og, the compiler is not smart
enough to see that when you have an integrated VF that just one of the
if statemets has to be true so that ntu is always set. Fix the way that
the code is for integrated VFs so that the compiler won't complain.

Fixes: 9783eb15eb98 ("i40e/base: wrap the register definitions for PF and VF")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add AQ critical error type
Qi Zhang [Tue, 9 Jan 2018 20:30:17 +0000 (15:30 -0500)]
net/i40e/base: add AQ critical error type

The FW has the ability to return a critical error on every AQ command.
So add the new return type as critical error to sync with firmware.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add rearrange process AQ command
Qi Zhang [Tue, 9 Jan 2018 20:30:16 +0000 (15:30 -0500)]
net/i40e/base: add rearrange process AQ command

Add new AQ command that help to inform software how advanced
rearrangement process is.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: enhance loopback AQ command
Qi Zhang [Tue, 9 Jan 2018 20:30:15 +0000 (15:30 -0500)]
net/i40e/base: enhance loopback AQ command

Enhanced loopback AQ command to allow variety of loopback modes.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add defines for flat NVM
Qi Zhang [Tue, 9 Jan 2018 20:30:14 +0000 (15:30 -0500)]
net/i40e/base: add defines for flat NVM

New control bits were defined for flat NVM structure.
One for pointing which NVM bank is currently used and
one used as indicator of structure type.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix link LED blink
Qi Zhang [Tue, 9 Jan 2018 20:30:13 +0000 (15:30 -0500)]
net/i40e/base: fix link LED blink

This fix solves an issue occurring while calling i40e_led_set function
from the driver with "blink" parameter set as TRUE. This call resulted
in Activity LED blinking instead of Link LED, which may lead to errors
in physically identyfying the port, since Activity LED may be blinking
for different reasons aswell.

Fixes: 51b27bc5d898 ("i40e/base: update LED blinking")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: enable AQ event get in NVM update
Qi Zhang [Tue, 9 Jan 2018 20:30:12 +0000 (15:30 -0500)]
net/i40e/base: enable AQ event get in NVM update

This patch adds new I40E_NVMUPD_GET_AQ_EVENT state
to allow retrieval of AdminQ events as a result.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add NVM update preservation flags
Qi Zhang [Tue, 9 Jan 2018 20:30:11 +0000 (15:30 -0500)]
net/i40e/base: add NVM update preservation flags

Add preservation flags support on X722 devices for NVM update AdminQ
function wrapper. Add new parameter and handling to nvm update admin
queue function intended to allow nvmupdate tool to configure the
preservation flags in the AdminQ command.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: clean up
Qi Zhang [Tue, 9 Jan 2018 20:30:10 +0000 (15:30 -0500)]
net/i40e/base: clean up

1. Cleanup logical in __i40e_read_nvm_word and reuse it in
i40e_read_nvm_word.
2. Change couple functions to static so we can remove uncessary function
declarations
3. Cleanup logical in i40e_validate_nvm_checksum.
4. Add more debug information in PF reset
5. correct comments
6. Minor code style fix.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: fix NVM lock
Qi Zhang [Tue, 9 Jan 2018 20:30:09 +0000 (15:30 -0500)]
net/i40e/base: fix NVM lock

NVM lock is only required at below situation:
1. its X722 device or
2. API version >= 1.5
or may have issue at firmware downgrade.

Fixes: c5846a125b26 ("net/i40e/base: fix NVM access interfering")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add AQ command for DCB parameters
Qi Zhang [Tue, 9 Jan 2018 20:30:08 +0000 (15:30 -0500)]
net/i40e/base: add AQ command for DCB parameters

Add new Adminq command i40e_aqc_opc_set_dcb_parameters that
helps to get DCB parameters in data structure i40e_aqc_set_dcb_parameters.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add link speed convert function
Qi Zhang [Tue, 9 Jan 2018 20:30:07 +0000 (15:30 -0500)]
net/i40e/base: add link speed convert function

Introduce a helper function which can convert the AdminQ link speed
definition into a virtchnl definition. This can then be used by host
driver implementations in order to safely convert to the interface
recognized by the virtual functions.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: code refactoring for LED blink
Qi Zhang [Tue, 9 Jan 2018 20:30:06 +0000 (15:30 -0500)]
net/i40e/base: code refactoring for LED blink

Code refactory, wrap repeated code in function.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add macro for 25G device
Qi Zhang [Tue, 9 Jan 2018 20:30:05 +0000 (15:30 -0500)]
net/i40e/base: add macro for 25G device

Add macro to idenfity 25G device by device ID

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add byte swaps in PHY register access
Qi Zhang [Tue, 9 Jan 2018 20:30:04 +0000 (15:30 -0500)]
net/i40e/base: add byte swaps in PHY register access

Add byte swap commandwhen transferring data between memory and firmware
while using PHY register access functions. Endianness also need to be
handled correctly during these swaps.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: retry AQC to overcome IRCRead hangs
Qi Zhang [Tue, 9 Jan 2018 20:30:03 +0000 (15:30 -0500)]
net/i40e/base: retry AQC to overcome IRCRead hangs

When the I2C is busy, the PHY reads are delayed. The firmware will
return EGAIN in these cases with an expectation that the SW will trigger
the reads again. This patch retries the operation for a maximum period
of 500ms.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: release spinlock before function returns
Qi Zhang [Tue, 9 Jan 2018 20:30:02 +0000 (15:30 -0500)]
net/i40e/base: release spinlock before function returns

Fix a bug that adminq spin lock is not be released before function
i40e_nvmupd_command returns.

Fixes: 5a2e46a3e405 ("net/i40e/base: refactor NVM update command processing")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add (Q)SFP module memory access definitions
Qi Zhang [Tue, 9 Jan 2018 20:30:01 +0000 (15:30 -0500)]
net/i40e/base: add (Q)SFP module memory access definitions

Add definations used for accessing and interrupting contents
of (Q)SFP module internal EEPROM memory.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add capability macros
Qi Zhang [Tue, 9 Jan 2018 20:30:00 +0000 (15:30 -0500)]
net/i40e/base: add capability macros

Add capability macros for 25G AOC/ACC PHYS.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e/base: add new PHY type
Qi Zhang [Tue, 9 Jan 2018 20:29:59 +0000 (15:29 -0500)]
net/i40e/base: add new PHY type

Add new PHY type I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP, it will be set
by firmware if device module does not meet the thermal requirements.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agodoc: add DDP in i40e guide
Beilei Xing [Wed, 10 Jan 2018 02:01:55 +0000 (10:01 +0800)]
doc: add DDP in i40e guide

Update i40e.rst to declare DDP support and input set configuration,
as implemented in DPDK 17.11.

Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
6 years agonet/ixgbe: fix the failure of number of Tx queue check
Yanglong Wu [Wed, 10 Jan 2018 01:51:36 +0000 (09:51 +0800)]
net/ixgbe: fix the failure of number of Tx queue check

Tx_q check fails when the SRIOV is active and tx_q > rx_q. It has
to use the maximum HW queue number for calculation, to get the
right number of queue can be used.

Fixes: 27b609cbd1c6 ("ethdev: move the multi-queue mode check to specific drivers")
Cc: stable@dpdk.org
Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
6 years agonet/i40e: exclude LLDP packet count
Qi Zhang [Mon, 11 Dec 2017 18:09:51 +0000 (13:09 -0500)]
net/i40e: exclude LLDP packet count

When use port stats register to calculate the packet count, LLDP packets
are counted in statistics which is not expected, the patch exclude this
number from total number.

Fixes: 763de290cbd1 ("net/i40e: fix packet count for PF")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: turn off flexible payload on driver init
Kirill Rybalchenko [Tue, 9 Jan 2018 15:36:54 +0000 (15:36 +0000)]
net/i40e: turn off flexible payload on driver init

Function i40e_GLQF_reg_init() overwrites global register for
flexible payload, forcing extraction of first 16 bytes of
L2/L3/L4 payload to the field vector even if flexible payload
is not used by an application. Such unconditional turn on of
flexible payload effectively disables ability to use outer
IP Destination address for RSS/FDIR for tunnelled packets,
as flexible payload overwrites outer IP destination address
on the field vector.
Now flexible payload turned on only when flow director is
enabled and configured.

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
6 years agonet/i40e: determine number of queues per VF at run time
Wei Dai [Tue, 9 Jan 2018 08:56:07 +0000 (16:56 +0800)]
net/i40e: determine number of queues per VF at run time

Without this patch, the number of queues per i40e VF is set to 4
by CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4 in config/common_base.
It is a fixed value determined at compile time and can't be changed
at run time.
With this patch, the number of queues per i40e VF can be determined
at run time. For example, if the PCI address of an i40e PF is
aaaa:bb.cc, with the EAL parameter -w aaaa:bb.cc,queue-num-per-vf=8,
the number of queues per VF created from this PF is set to 8.
If there is no "queue-num-per-vf" setting in EAL parameters, it uses
the default value of 4. And if the value after the "queue-num-per-vf"
is invalid, it will also use the default value. The valid values can
be 1, 2, 4, 8, or 16.

Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
6 years agonet/i40e: change VF default ITR interval
Beilei Xing [Wed, 27 Dec 2017 06:01:49 +0000 (14:01 +0800)]
net/i40e: change VF default ITR interval

Current default ITR interval I40E_QUEUE_ITR_INTERVAL_DEFAULT is
used by both DPDK PF and DPDK VF, but this ITR interval value
will cause lots of interrupts when using VF. This patch modifies
VF default ITR interval to reduce interrupts.
ITR interval can be reconfigured by RTE_LIBRTE_I40E_ITR_INTERVAL
if expecting low latency.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
6 years agonet/i40e: fix FDIR rule confiliction issue
Beilei Xing [Thu, 30 Nov 2017 06:36:08 +0000 (14:36 +0800)]
net/i40e: fix FDIR rule confiliction issue

Failed to create two FDIR rules with different vlan id for
the same PCTYPE. Root cause is that wrong hash key length
is used.

Fixes: 4149825bbdb9 ("net/i40e: finish integration FDIR with generic flow API")
Cc: stable@dpdk.org
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>