dpdk.git
3 years agonet/mlx5: add flow translation of eCPRI header
Bing Zhao [Fri, 17 Jul 2020 07:11:46 +0000 (15:11 +0800)]
net/mlx5: add flow translation of eCPRI header

In the translation stage, the eCPRI item should be translated into
the format that lower layer driver could use. All the fields that
need to match must be in network byte order after translation, as
well as the mask. Since the header in the item belongs to the network
layers stack, and the input parameter of the header is considered to
be in big-endian format already.

Base on the definition in the PRM, the DW samples will be used for
matching in the FTE/STE. Now, the type field and only the PC ID, RTC
ID, and DLY MSR ID of the payload will be supported. The masks should
be 00 ff 00 00 ff ff(00) 00 00 in the network order. Two DWs are
needed to support such matching. The mask fields could be zeros to
support some wildcard rules. But it makes no sense to support the
rule matching only on the payload but without matching type field.

The DW samples should be stored after the flex parser creation for
eCPRI. There is no need to query the sample IDs each time when
creating a flow rule with eCPRI item. It will not introduce
insertion rate degradation significantly.

Signed-off-by: Bing Zhao <bingz@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
3 years agonet/mlx5: add flow validation of eCPRI header
Bing Zhao [Fri, 17 Jul 2020 07:11:45 +0000 (15:11 +0800)]
net/mlx5: add flow validation of eCPRI header

When creating a flow with eCPRI header item, the validation of it is
mandatory. The detailed limitations are listed below:
  1. Over Ether / VLAN, ethertype must be 0xAEFE.
  2. No tunnel support is described in the specification now.
  3. L3 layer is only supported when L4 is UDP, see #4.
  4. Over TCP is not supported from the specification, and over UDP
     is not supported right now.
  5. Concatenation indicator matching is not supported now.
  6. No need to check the revision.
  7. Only type field in the common header is mandatory, and one byte
     should be matched integrally.
  8. Fields in the message payload header are optional.
  9. Only messages with type #0, #2 and #5 are supported now.

Some limitations are only from software right now, because there is
no need to support all the message types and variants of protocol
stack listed in the specification.

Signed-off-by: Bing Zhao <bingz@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
3 years agonet/mlx5: convert Rx timestamps in real-time format
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:20 +0000 (08:23 +0000)]
net/mlx5: convert Rx timestamps in real-time format

The ConnectX-6DX supports the timestamps in various formats,
the new realtime format is introduced - the upper 32-bit word
of timestamp contains the UTC seconds and the lower 32-bit word
contains the nanoseconds. This patch detects what format is
configured in the NIC and performs the conversion accordingly.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agocommon/mlx5: add register access DevX routine
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:19 +0000 (08:23 +0000)]
common/mlx5: add register access DevX routine

The DevX routine to read/write NIC registers via DevX API is added.
This is the preparation step to check timestamp modes and units
and gather the extended statistics.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: provide send scheduling error statistics
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:18 +0000 (08:23 +0000)]
net/mlx5: provide send scheduling error statistics

The mlx5 PMD exposes the following new introduced
extended statistics counter to report the errors
of packet send scheduling on timestamps:

  - txpp_err_miss_int - rearm queue interrupt was not handled
    was not handled in time and service routine might miss
    the completions

  - txpp_err_rearm_queue - reports errors in rearm queue
  - txpp_err_clock_queue - reports errors in clock queue

  - txpp_err_ts_past - timestamps in the packet being sent
    were found in the past, timestamps were ignored

  - txpp_err_ts_future - timestamps in the packet being sent
    were found in the too distant future (beyond HW/clock queue
    capabilities to schedule, typically it is about 16M of
    tx_pp devarg periods)

  - txpp_jitter - estimated jitter in device clocks between
    8K completions of Clock Queue.

  - txpp_wander - estimated wander in device clocks between
    16M completions of Clock Queue.

  - txpp_sync_lost - error flag, the Clock Queue completions
    synchronization is lost, accurate packet scheduling can
    not be handled, timestamps are being ignored, the restart
    of all ports using scheduling must be performed.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: support reading device clock
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:17 +0000 (08:23 +0000)]
net/mlx5: support reading device clock

If send schedule feature is engaged there is the Clock Queue
created, that reports reliable the current device clock counter
value. The device clock counter can be read directly from the
Clock Queue CQE.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: support scheduling on send routine template
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:16 +0000 (08:23 +0000)]
net/mlx5: support scheduling on send routine template

This patch adds send scheduling on timestamps into tx_burst
routine template. The feature is controlled by static configuration
flag, the actual routines supporting the new feature are generated
over this updated template.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: prepare Tx to support scheduling
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:15 +0000 (08:23 +0000)]
net/mlx5: prepare Tx to support scheduling

The new static control flag is introduced to control
routine generating from template, enabling the scheduling
on timestamps.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: convert timestamp to completion index
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:14 +0000 (08:23 +0000)]
net/mlx5: convert timestamp to completion index

The application provides timestamps in Tx mbuf as clocks,
the hardware performs scheduling on Clock Queue completion index
match. This patch introduces the timestamp-to-completion-index
inline routine.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: prepare Tx queue structures to support timestamp
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:13 +0000 (08:23 +0000)]
net/mlx5: prepare Tx queue structures to support timestamp

The fields to support send scheduling on dynamic timestamp
field are introduced and initialized on device start.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: introduce clock queue service routine
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:12 +0000 (08:23 +0000)]
net/mlx5: introduce clock queue service routine

Service routine is invoked periodically on Rearm Queue
completion interrupts, typically once per some milliseconds
(1-16) to track clock jitter and wander in robust fashion.
It performs the following:

- fetches the completed CQEs for Rearm Queue
- restarts Rearm Queue on errors
- pushes new requests to Rearm Queue to make it
  continuously running and pushing cross-channel requests
  to Clock Queue
- reads and caches the Clock Queue CQE to be used in datapath
- gathers statistics to estimate clock jitter and wander
- gathers Clock Queue errors statistics

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: allocate packet pacing context
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:11 +0000 (08:23 +0000)]
net/mlx5: allocate packet pacing context

This patch allocates the Packet Pacing context from the kernel,
configures one according to requested pace send scheduling
granularity and assigns to Clock Queue.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: create Tx queues with DevX
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:10 +0000 (08:23 +0000)]
net/mlx5: create Tx queues with DevX

To provide the packet send schedule on mbuf timestamp the Tx
queue must be attached to the same UAR as Clock Queue is.
UAR is special hardware related resource mapped to the host
memory and provides doorbell registers, the assigning UAR
to the queue being created is provided via DevX API only.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: create rearm queue for packet pacing
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:09 +0000 (08:23 +0000)]
net/mlx5: create rearm queue for packet pacing

The dedicated Rearm Queue is needed to fire the work requests to
the Clock Queue in realtime. The Clock Queue should never stop,
otherwise the clock synchronization might be broken and packet
send scheduling would fail. The Rearm Queue uses cross channel
SEND_EN/WAIT operations to provides the requests to the
Clock Queue in robust way.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: create clock queue for packet pacing
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:08 +0000 (08:23 +0000)]
net/mlx5: create clock queue for packet pacing

This patch creates the special completion queue providing
reference completions to schedule packet send from
other transmitting queues.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: introduce shared UAR resource
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:07 +0000 (08:23 +0000)]
net/mlx5: introduce shared UAR resource

This is preparation step before moving the Tx queue creation
to the DevX approach. Some features require the shared UAR
for Tx queues and scheduling completion queues, the patch
manages the shared UAR.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: fix UAR lock sharing for multiport devices
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:06 +0000 (08:23 +0000)]
net/mlx5: fix UAR lock sharing for multiport devices

The master and representors might be created over the multiport
Infiniband devices and the UAR resource allocated for sibling
ports might belong to the same underlying Infiniband device.
Hardware requires the write access to the UAR must be performed
as atomic 64-bit write, on 32-bit systems this is two sequential
writes, protected by lock. Due to possibility to share the same
UAR between sibling devices the locks must be moved to shared
context.

Fixes: f048f3d479a6 ("net/mlx5: switch to the shared IB device context")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/mlx5: introduce send scheduling devargs
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:05 +0000 (08:23 +0000)]
net/mlx5: introduce send scheduling devargs

This patch introduces the new devargs:

tx_pp - enables accurate packet send scheduling on mbuf timestamps
  in the PMD. On the device start if "rte_dynflag_timestamp"
  dynamic flag is registered and this devarg non-zero value is
  specified, the driver initializes all necessary internal
  infrastructure to provide packet scheduling. The parameter
  value specifies scheduling granularity in nanoseconds.

tx_skew - the parameter adjusts the send packet scheduling on
  timestamps and represents the average delay between beginning
  of the transmitting descriptor processing by the hardware and
  appearance of actual packet data on the wire. The value should
  be provided in nanoseconds and is valid only if tx_pp parameter
  is specified. The default value is zero.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agocommon/mlx5: prepare support of packet pacing
Viacheslav Ovsiienko [Thu, 16 Jul 2020 08:23:04 +0000 (08:23 +0000)]
common/mlx5: prepare support of packet pacing

This patch prepares the common part of the mlx5 PMDs to
support packet send scheduling on mbuf timestamps:

  - the DevX routine to query the packet pacing HCA capabilities
  - packet pacing Send Queue attributes support
  - the hardware related definitions

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agocommon/mlx5: fix link with ibverbs glue dlopen option
Thomas Monjalon [Mon, 13 Jul 2020 15:37:10 +0000 (17:37 +0200)]
common/mlx5: fix link with ibverbs glue dlopen option

In case the ibverbs glue is a separate library to dlopen,
the PMD library must allocate a glue structure to be filled by dlopen.

The glue management was in mlx5_common.c and moved to mlx5_common_os.c,
but the variable allocation was not removed from the original file.
The consequence was a link failure, if ibverbs dlopen option is enabled,
because of the redefinition of the variable (with GCC 10):
multiple definition of 'mlx5_glue'

The original definition is removed to keep only the one moved
in the Linux sub-directory.

Fixes: 79aa430721b1 ("common/mlx5: split common file under Linux directory")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Matan Azrad <matan@mellanox.com>
3 years agonet/e1000: fix crash on Tx done clean up
Jeff Guo [Thu, 16 Jul 2020 09:24:38 +0000 (17:24 +0800)]
net/e1000: fix crash on Tx done clean up

As tx mbuf is not set for some advanced descriptors, if there is no
mbuf checking before rte_pktmbuf_free_seg() function be called on
the process of tx done clean up, that will cause a segfault. So add
a NULL pointer check to fix it.

Bugzilla ID: 501
Fixes: 8d907d2b79f7 ("net/igb: free consumed Tx buffers on demand")
Cc: stable@dpdk.org
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
3 years agonet/iavf: fix GTPU L4 hash
Jeff Guo [Mon, 20 Jul 2020 04:00:20 +0000 (12:00 +0800)]
net/iavf: fix GTPU L4 hash

When the configure pattern involve GTPU inner l3 and l4, even the
configure input set only l3 but not l4, the different l4 protocol
header should also be configured for the different l4 protocol.

Fixes: 215a247b5f33 ("net/iavf: refactor hash flow")
Fixes: 642f20195015 ("net/iavf: support RSS for IPv4 IPv6 mix of GTP")

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/ice: fix GTPU L4 hash
Jeff Guo [Tue, 21 Jul 2020 02:32:46 +0000 (10:32 +0800)]
net/ice: fix GTPU L4 hash

When the configure pattern involve GTPU inner l3 and l4, even the
configure input set only l3 but not l4, the different l4 protocol
header should also be configured for the different l4 protocol.

Fixes: 0b952714e9c1 ("net/ice: refactor PF hash flow")
Fixes: de32fa2ba27b ("net/ice: support RSS for IPv6 prefix")

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/ice: fix symmetric hash configuration
Jeff Guo [Mon, 20 Jul 2020 09:13:56 +0000 (17:13 +0800)]
net/ice: fix symmetric hash configuration

Some protocol don't support symmetric hash, need to handle these cases.
When set an invalid symmetric hash rule, just return failed.

Fixes: 4eafe71ee952 ("net/ice: fix RSS type")

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/e1000: report VLAN extend capability
Zhihong Peng [Tue, 21 Jul 2020 03:05:14 +0000 (23:05 -0400)]
net/e1000: report VLAN extend capability

The rte_eth_dev_set_vlan_offload function will check vlan rx offload
capability, the i350/i210/i211 nics have vlan extend feature but
DEV_RX_OFFLOAD_VLAN_EXTEND is not set into the capability, that will
cause setting fail. So need to add this capability in
igb_get_rx_port_offloads_capa function.

Fixes: ef990fb56e55 ("net/e1000: convert to new Rx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Zhihong Peng <zhihongx.peng@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
3 years agonet/i40e: report VLAN filter capability
Zhihong Peng [Tue, 21 Jul 2020 02:45:28 +0000 (22:45 -0400)]
net/i40e: report VLAN filter capability

The rte_eth_dev_set_vlan_offload function will check vlan rx offload
capability, the i40e vf has vlan filter feature but
DEV_RX_OFFLOAD_VLAN_FILTER is not set into the capability, that will
cause setting fail. So need to add this capability in
i40e_vf_representor_dev_infos_get function.

Fixes: e0cb96204b71 ("net/i40e: add support for representor ports")
Cc: stable@dpdk.org
Signed-off-by: Zhihong Peng <zhihongx.peng@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
3 years agonet/dpaa: support queue info routines
Hemant Agrawal [Fri, 10 Jul 2020 16:21:37 +0000 (21:51 +0530)]
net/dpaa: support queue info routines

This patch add support for rxq_info_get and txq_info_get

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa2: support queue info routines
Hemant Agrawal [Fri, 10 Jul 2020 16:21:36 +0000 (21:51 +0530)]
net/dpaa2: support queue info routines

This patch add support for rxq_info_get and txq_info_get

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa2: support using Tx queue descriptor size
Hemant Agrawal [Fri, 10 Jul 2020 16:21:35 +0000 (21:51 +0530)]
net/dpaa2: support using Tx queue descriptor size

Add support to use Tx queue desc size to configure
congestion notification on TX queue

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa2: report error on queue deferred start
Hemant Agrawal [Fri, 10 Jul 2020 16:21:34 +0000 (21:51 +0530)]
net/dpaa2: report error on queue deferred start

This patch add support to reports errors on configuring
deferred start for rx or tx queues.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa: report error on using deferred start
Hemant Agrawal [Fri, 10 Jul 2020 16:21:33 +0000 (21:51 +0530)]
net/dpaa: report error on using deferred start

This patch add support to report on error
for rx and tx deferred start config

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa2: add Tx/Rx burst mode info
Apeksha Gupta [Fri, 10 Jul 2020 16:21:32 +0000 (21:51 +0530)]
net/dpaa2: add Tx/Rx burst mode info

Retrieve burst mode information according to the selected Tx/Rx mode and
offloads.

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
3 years agonet/dpaa: add Tx/Rx burst mode info
Apeksha Gupta [Fri, 10 Jul 2020 16:21:31 +0000 (21:51 +0530)]
net/dpaa: add Tx/Rx burst mode info

Retrieve burst mode information according to the selected Rx/Tx mode
and offloads.

Signed-off-by: Apeksha Gupta <apeksha.gupta@nxp.com>
3 years agonet/dpaa2: support per-port Rx mbuf timestamp
Hemant Agrawal [Fri, 10 Jul 2020 16:21:30 +0000 (21:51 +0530)]
net/dpaa2: support per-port Rx mbuf timestamp

DEV_RX_OFFLOAD_TIMESTAMP is per port, so the internal implementation
shall enable it on per port basis only.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/dpaa2: remove Rx timestamp enable PMD API
Hemant Agrawal [Fri, 10 Jul 2020 16:21:29 +0000 (21:51 +0530)]
net/dpaa2: remove Rx timestamp enable PMD API

This experimental API is no longer required as the same
purpose can be solved with standard DEV_RX_OFFLOAD_TIMESTAMP

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet: check fragmented headers in non-debug as well
Andrew Rybchenko [Mon, 13 Jul 2020 14:22:34 +0000 (15:22 +0100)]
net: check fragmented headers in non-debug as well

Pseudo-header checksum calculation requires contiguous headers.
There is no any formal requirements on data location and mbuf
structure which could be used by the application.

Since

commit dfc6b2fd8da3 ("mbuf: remove Intel offload checks from generic API")

fragmented headers checks are done inside
rte_net_intel_cksum_flags_prepare() in RTE_LIBRTE_ETHDEV_DEBUG build
because it is moved from rte_validate_tx_offload() which is called
under debug only.

Make corresponding check to be done in non-debug build as well
to avoid bad accesses, incorrect checksum calculation and to
return appropriate error from Tx prepare.

Make no-offloads check more precise and do it in non-debug build
as well to avoid contiguous headers check and Tx prepare failure
if it is not actually required.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
3 years agonet/bonding: change state machine to defaulted
Weifeng Li [Sat, 18 Jul 2020 04:35:38 +0000 (12:35 +0800)]
net/bonding: change state machine to defaulted

A dpdk bonding 802.3ad network as follows:
+----------+                        +-----------+
|dpdk lacp |bond1.1 <------> bond2.1|switch lacp|
|          |bond1.2 <------> bond2.2|           |
+----------+                        +-----------+
If a fiber optic go wrong about single pass during normal running like
this:
bond1.2 -----> bond2.2 ok
bond1.2 <--x-- bond2.2 error: bond1.2 receive no LACPDU Some packets
      from switch to dpdk will choose bond2.2
      and lost.

DPDK lacp state machine will transits to the expired state if no LACPDU
is received before the current_while_timer expires. But if no LACPDU is
received before the current_while_timer expires again, DPDK lacp state
machine has no change. Bond2.2 can not change to inactive depend on the
received LACPDU.
According to IEEE 802.3ad, if no lacpdu is received before the
current_while_timer expires again, the state machine should transits
from expired to defaulted. Bond2.2 will change to inactive depend on the
LACPDU with defaulted state.

This patch adds a state machine change from expired to defaulted when no
lacpdu is received before the current_while_timer expires again
according to IEEE 802.3ad:
If no LACPDU is received before the current_while timer expires again,
the state machine transits to the DEFAULTED state. The record Default
function overwrites the current operational parameters for the Partner
with administratively configured values. This allows configuration of
aggregations and individual links when no protocol partner is present,
while still permitting an active partner to override default settings.
The update_Default_Selected function sets the Selected variable FALSE
if the Link Aggregation Group has changed. Since all operational
parameters are now set to locally administered values there can be no
disagreement as to the Link Aggregation Group, so the Matched variable
is set TRUE.

The relevant description is in the chapter 43.4.12 of the link below:
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=850426

Signed-off-by: Weifeng Li <liweifeng96@126.com>
Acked-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
3 years agonet/bonding: delete redundant code
Dongyang Pan [Sat, 4 Jul 2020 01:15:26 +0000 (09:15 +0800)]
net/bonding: delete redundant code

The function valid_bonded_port_id() has already contains function
rte_eth_dev_is_valid_port(), so delete redundant check.

Fixes: 588ae95e7983 ("net/bonding: fix port ID check")
Cc: stable@dpdk.org
Signed-off-by: Dongyang Pan <197020236@qq.com>
Reviewed-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
3 years agonet/bnxt: support exact match templates
Kishore Padmanabha [Fri, 17 Jul 2020 03:25:26 +0000 (23:25 -0400)]
net/bnxt: support exact match templates

Added support for exact match templates

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
3 years agonet/bnxt: update TruFlow resource allocation numbers
Kishore Padmanabha [Fri, 17 Jul 2020 14:14:49 +0000 (19:44 +0530)]
net/bnxt: update TruFlow resource allocation numbers

The truflow session open allocation parameters are updated to
support NAT records, L2 context regions, engress encap features.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
3 years agonet/bnxt: modify default egress rule for VF representor
Kishore Padmanabha [Fri, 17 Jul 2020 14:14:48 +0000 (19:44 +0530)]
net/bnxt: modify default egress rule for VF representor

The default egress rule should include buffer descriptor action
record only if the VF representor is enabled.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: fix null pointer dereference
Kishore Padmanabha [Fri, 17 Jul 2020 14:14:47 +0000 (19:44 +0530)]
net/bnxt: fix null pointer dereference

Avoid dereferencing a null pointer.

Fixes: 313ac35ac701 ("net/bnxt: support ULP session manager init")
Cc: stable@dpdk.org
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
3 years agonet/bnxt: use SPDX license tag
Randy Schacher [Fri, 17 Jul 2020 14:14:46 +0000 (19:44 +0530)]
net/bnxt: use SPDX license tag

Update cfa_resource_types.h to use SPDX license header.

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: remove unused macro
Randy Schacher [Fri, 17 Jul 2020 14:14:45 +0000 (19:44 +0530)]
net/bnxt: remove unused macro

Remove unused define TF_MSG_TCAM_SET_DEV_DATA_SIZE.

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Shahaji Bhosle <sbhosle@broadcom.com>
3 years agonet/bnxt: use NAT IPv4 action
Jay Ding [Fri, 17 Jul 2020 14:14:44 +0000 (19:44 +0530)]
net/bnxt: use NAT IPv4 action

Use NAT IPv4 instead of NAT IPv4 SRC and DST.

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
3 years agonet/bnxt: fix exact match message size
Farah Smith [Fri, 17 Jul 2020 14:14:43 +0000 (19:44 +0530)]
net/bnxt: fix exact match message size

Fix incorrect EM message size when calling insert_em_internal.

Fixes: 98487d729b4a ("net/bnxt: cleanup and refactor session management")

Signed-off-by: Farah Smith <farah.smith@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: add matching protocol header info
Kishore Padmanabha [Fri, 17 Jul 2020 14:14:42 +0000 (19:44 +0530)]
net/bnxt: add matching protocol header info

The protocol header are implicitly matched based on the proto
field data. For instance, if ether type is set as 0x800 in the
ether header then ipv4 protocol header is assumed to be present
for template matching even if ipv4 header is not present in the
given flow pattern.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
3 years agonet/bnxt: fix accumulation of flow counters
Somnath Kotur [Fri, 17 Jul 2020 14:14:41 +0000 (19:44 +0530)]
net/bnxt: fix accumulation of flow counters

OVS-DPDK is accumulating the flow counters that are returned as part of
the flow_query API and it is being issued at least 3 times every second.
So there is no need to accumulate the counts internally in the driver.

Fixes: 306c2d28e247 ("net/bnxt: support count action in flow query")

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: enable default flows in TruFlow mode
Kishore Padmanabha [Fri, 17 Jul 2020 14:14:40 +0000 (19:44 +0530)]
net/bnxt: enable default flows in TruFlow mode

Removed the check to enable default flows only when VF representor
are enabled. It should be enabled all the time in truflow mode.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
3 years agonet/bnxt: initialize table scope parameter
Farah Smith [Fri, 17 Jul 2020 14:14:39 +0000 (19:44 +0530)]
net/bnxt: initialize table scope parameter

Initialize table scope resource manager parameter.
Clear out rm_is_allocated parms before calling as base_index was added
and used incorrectly in this instance.

Signed-off-by: Farah Smith <farah.smith@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: modify resource management scheme
Peter Spreadborough [Fri, 17 Jul 2020 14:14:38 +0000 (19:44 +0530)]
net/bnxt: modify resource management scheme

Add support for new resource manager to manage CFA resources.
TCAM is split into high and low regions now and CFA resource types
are being updated accordingly.

Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Farah Smith <farah.smith@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/ixgbe: fix flow control status
Guinan Sun [Sat, 23 May 2020 05:22:39 +0000 (05:22 +0000)]
net/ixgbe: fix flow control status

mac_ctrl_frame_fwd assignment is missing, so
setting mac_ctrl_frame_fwd should be added in
ixgbe_flow_ctrl_get().
The patch fixes the issue.

Fixes: 56ea46a997b7 ("ethdev: retrieve flow control configuration")
Cc: stable@dpdk.org
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Tested-by: Bo Chen <box.c.chen@intel.com>
3 years agonet/ixgbe: fix MAC control frame forward
Guinan Sun [Sat, 23 May 2020 05:22:38 +0000 (05:22 +0000)]
net/ixgbe: fix MAC control frame forward

mac_ctrl_frame_fwd shouldn't be cleared when port stop,
otherwise it will be inconsistent with the actual status.
This patch fixes the issue.

Fixes: a524f550da6e ("net/ixgbe: fix flow control mode setting")
Cc: stable@dpdk.org
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: fix filter pctype
Shougang Wang [Wed, 15 Jul 2020 08:08:10 +0000 (08:08 +0000)]
net/i40e: fix filter pctype

The i40e_filter_pctype TCP_SYN_NO_ACK, UNICAST_IPV4_UDP and
MULTICAST_IPV4_UDP for x722 were missing when translating RSS type to
i40e_filter_pctype. This patch fixes it.

Fixes: da7018ec29d4 ("net/i40e: fix queue region in RSS flow")
Cc: stable@dpdk.org
Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
Reviewed-by: Wei Zhao <wei.zhao1@intel.com>
3 years agonet/ice/base: fix memory leak on GTPU RSS
Junfeng Guo [Mon, 20 Jul 2020 07:09:55 +0000 (15:09 +0800)]
net/ice/base: fix memory leak on GTPU RSS

Add memory space free logic for adding and removing GTP-U before return
success status, to avoid memory leak issue.

Fixes: bed9bb3139ef ("net/ice/base: fix GTP-U inner RSS IPv4 IPv6 co-exist")
Cc: stable@dpdk.org
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: fix flow director Rx writeback packet
Chenmin Sun [Fri, 17 Jul 2020 14:57:58 +0000 (22:57 +0800)]
net/i40e: fix flow director Rx writeback packet

This patch fixes the fdir cannot receive rx writeback packet issue.
The root cause is FDIR interrupt is not correctly enabled.

Beside this, to make sure fdir programming works fine when the port
is stopped, move the fdir interrupt configure from start/stop to
setup/teardown.

Fixes: cfd662d22e7b ("net/i40e: fix interrupt throttling setting in PF")
Cc: stable@dpdk.org
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agonet/ice: fix GTPU RSS
Simei Su [Fri, 17 Jul 2020 03:27:36 +0000 (11:27 +0800)]
net/ice: fix GTPU RSS

Because of incomplete protocol header fields, GTPU_INNER_IPV4_UDP
and GTPU_INNER_IPV4_TCP profile aren't included in inner ipv4 group.
This patch complements header fields for GTPU/GTPU_EH ipv4 rss config.

Besides, after configuring L4 port, GTPU and GTPU_EH packets don't do
hash for UDP/TCP/SCTP. This patch also enables L4 hash for GTPU and GTPU
extension packets.

Fixes: d117de460035 ("net/ice: fix GTPU/PPPoE packets with no hash value")

Signed-off-by: Simei Su <simei.su@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: optimize flow director update rate
Chenmin Sun [Fri, 17 Jul 2020 17:36:58 +0000 (01:36 +0800)]
net/i40e: optimize flow director update rate

This patch optimized the fdir update rate for i40e PF, by tracking
whether the fdir rule being inserted into the guaranteed space
or shared space.
For the flows that are inserted to the guaranteed space, we assume
that the insertion will always succeed as the hardware only report
the "no enough space left" error. In this case, the software can
directly return success and no need to retrieve the result from
the hardware. When destroying a flow, we also assume the operation
will succeed as the software has checked the flow is indeed in
the hardware.
See the fdir programming status descriptor format in the datasheet
for more details.

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
3 years agonet/i40e: optimize TPID fetching
Chenmin Sun [Fri, 17 Jul 2020 17:36:57 +0000 (01:36 +0800)]
net/i40e: optimize TPID fetching

This patch moves the fetching the device tpid to where it really needs,
rather than fetching it every time when entered the functions.
This is because this operation costs too many cycles and it is used only
when matching the ethernet header.

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
3 years agonet/i40e: optimize flow director memory management
Chenmin Sun [Fri, 17 Jul 2020 17:36:56 +0000 (01:36 +0800)]
net/i40e: optimize flow director memory management

This patch allocated some memory pool for flow management to avoid
calling rte_zmalloc/rte_free every time.
This patch also improves the hash table operation. When adding/removing
a flow, the software will directly add/delete it from the hash table.
If any error occurs, it then roll back the operation it just done.

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
3 years agonet/i40e: support flow director space tracking
Chenmin Sun [Fri, 17 Jul 2020 17:36:55 +0000 (01:36 +0800)]
net/i40e: support flow director space tracking

This patch introduces a FDIR flow management for guaranteed/shared
space tracking.
The fdir space is reported by the
i40e_hw_capabilities.fd_filters_guaranteed and fd_filters_best_effort.
The fdir space is managed by hardware and now is tracking in software.
The management algorithm is controlled by the GLQF_CTL.INVALPRIO.
Detailed implementation please check in the datasheet and the
description of struct i40e_fdir_info.fdir_invalprio.

This patch changes the global register GLQF_CTL. Therefore, when devarg
``support-multi-driver`` is set, the patch will not take effect to
avoid affecting the normal behavior of other i40e drivers, e.g., Linux
kernel driver.

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Reviewed-by: Jingjing Wu <jingjing.wu@intel.com>
3 years agonet/bnxt: remove experimental build flag
David Marchand [Thu, 16 Jul 2020 07:26:18 +0000 (09:26 +0200)]
net/bnxt: remove experimental build flag

-DALLOW_EXPERIMENTAL_API is always set for in-tree compilation.
See https://git.dpdk.org/dpdk/commit/?id=acec04c4b2f5

Fixes: 322bd6e70272 ("net/bnxt: add port representor infrastructure")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: support decrement TTL action
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:38 +0000 (19:20 +0530)]
net/bnxt: support decrement TTL action

Added support for decrement TTL action.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: increase number of egress flow entries
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:37 +0000 (19:20 +0530)]
net/bnxt: increase number of egress flow entries

Increase the number of egress flow entries.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: consider VLAN fields for template match criteria
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:36 +0000 (19:20 +0530)]
net/bnxt: consider VLAN fields for template match criteria

The vlan mask fields were not setting the field bitmap causing
the template match process to ignore vlan fields. This change fixes
this bug.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: support identifier search and ref count
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:35 +0000 (19:20 +0530)]
net/bnxt: support identifier search and ref count

Add support to search for identifiers and increase the reference
count for identifiers that are already allocated.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Mike Baucom <michael.baucom@broadcom.com>
3 years agonet/bnxt: ignore IPv4 TOS mask
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:34 +0000 (19:20 +0530)]
net/bnxt: ignore IPv4 TOS mask

This is a work around for the OVS setting offload rules that
are passing ipv4 tos mask as wild card and currently we do not
support.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: support extracting data from ULP blob
Kishore Padmanabha [Wed, 15 Jul 2020 13:50:33 +0000 (19:20 +0530)]
net/bnxt: support extracting data from ULP blob

Extended the ulp blob to extract data from the blob for a given
offset and length. The support is added only for little endian
format.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: support two table scopes
Farah Smith [Wed, 15 Jul 2020 13:50:32 +0000 (19:20 +0530)]
net/bnxt: support two table scopes

Need to remap the table scope ids allocated from HCAPI RM from high
to low value because for legacy devices a table scope is a set of base
addresses.  The PCIe addresses must map to a PCIe PF which exists in
the hardware.

Signed-off-by: Farah Smith <farah.smith@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: check index range in bulk get
Jay Ding [Wed, 15 Jul 2020 13:50:31 +0000 (19:20 +0530)]
net/bnxt: check index range in bulk get

In tf_tbl_bulk_get, check if the indexes are in the range
of reserved tbl id instead of checking the allocation of each id.

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: implement TF Identifier search
Jay Ding [Wed, 15 Jul 2020 13:50:30 +0000 (19:20 +0530)]
net/bnxt: implement TF Identifier search

Implement shadow copy DB to hold reference count for
each ID in each identifier type. Implement identifier
search functionality.

Signed-off-by: Jay Ding <jay.ding@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
3 years agonet/bnxt: delay EEM sysmem mapping
Peter Spreadborough [Wed, 15 Jul 2020 13:50:29 +0000 (19:20 +0530)]
net/bnxt: delay EEM sysmem mapping

- The mapping of kernel pages for EEM sysmem operation takes
  a significant amount of time. This change give the build option
  to delay the sysmem mapping until the first write to EEM

Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
3 years agoadd python2 deprecation notice
Louise Kilheeney [Fri, 10 Jul 2020 10:10:47 +0000 (11:10 +0100)]
add python2 deprecation notice

Prepare for python2 removal in 20.11.

Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
3 years agoapp/bbdev: support python3
Louise Kilheeney [Fri, 10 Jul 2020 10:10:54 +0000 (11:10 +0100)]
app/bbdev: support python3

Use of the print function required for python3 compatibility.

Signed-off-by: Louise Kilheeney <louise.kilheeney@intel.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
3 years agotest/eal: check invalid CPU value
Kevin Traynor [Mon, 20 Jul 2020 10:19:08 +0000 (11:19 +0100)]
test/eal: check invalid CPU value

When using --lcores option, there is a limit of CPU_SETSIZE.
Currently that allows 0..1023 on Linux.

Check it is caught when this limit is exceeded.

Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
3 years agobus/fslmc: fix memory leak in secondary process
Yunjian Wang [Fri, 17 Jul 2020 10:50:17 +0000 (18:50 +0800)]
bus/fslmc: fix memory leak in secondary process

In fslmc_process_mcp(), we allocate memory for 'dev_name' but not
released before return in secondary process. And it is not used
since commit a69f79300262 ("bus/fslmc: support multi VFIO group"),
so it can be removed.

Fixes: e55d0494ab98 ("bus/fslmc: support secondary process")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agolpm: report error when defer queue overflows
Ruifeng Wang [Thu, 16 Jul 2020 15:49:19 +0000 (23:49 +0800)]
lpm: report error when defer queue overflows

Coverity complains about unchecked return value of rte_rcu_qsbr_dq_enqueue.
By default, defer queue size is big enough to hold all tbl8 groups. When
enqueue fails, return error to the user to indicate system issue.

Coverity issue: 360832
Fixes: 8a9f8564e9f9 ("lpm: implement RCU rule reclamation")

Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
3 years agomempool/ring: support RTS and HTS ring modes
Konstantin Ananyev [Wed, 15 Jul 2020 14:58:15 +0000 (15:58 +0100)]
mempool/ring: support RTS and HTS ring modes

Two new sync modes were introduced into rte_ring:
relaxed tail sync (RTS) and head/tail sync (HTS).
This change provides user with ability to select these
modes for ring based mempool via mempool ops API.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Gage Eads <gage.eads@intel.com>
3 years agodoc: add ring based mempool guide
Konstantin Ananyev [Wed, 15 Jul 2020 14:58:14 +0000 (15:58 +0100)]
doc: add ring based mempool guide

Add documentation for rte_ring mempool driver.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
3 years agoregex/mlx5: add empty start/stop/close
Ori Kam [Mon, 20 Jul 2020 06:26:17 +0000 (06:26 +0000)]
regex/mlx5: add empty start/stop/close

Add the start, stop and close functions.
In current implementation they are empty functions
and are only exists in order that when called
from rte level, the function will return with success code.

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support dequeue
Yuval Avnery [Mon, 20 Jul 2020 06:26:16 +0000 (06:26 +0000)]
regex/mlx5: support dequeue

Implement dequeue function for the regex API.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support enqueue
Yuval Avnery [Mon, 20 Jul 2020 06:26:15 +0000 (06:26 +0000)]
regex/mlx5: support enqueue

Will look for a free SQ to send the job on.
doorbell will be given when sq is full, or no more jobs on the burst.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: setup fast path
Yuval Avnery [Mon, 20 Jul 2020 06:26:14 +0000 (06:26 +0000)]
regex/mlx5: setup fast path

Allocated and register input/output buffers and metadata.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: add send queue
Ori Kam [Mon, 20 Jul 2020 06:26:13 +0000 (06:26 +0000)]
regex/mlx5: add send queue

This commit introduce the SQ creation.
The SQ is used for enqueuing a job.

In order to support out of order matches, we create number
os SQ per one application QP.

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: add completion queue creation
Ori Kam [Mon, 20 Jul 2020 06:26:12 +0000 (06:26 +0000)]
regex/mlx5: add completion queue creation

This commit adds the creation of CQ

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support rules import
Francis Kelly [Mon, 20 Jul 2020 06:26:11 +0000 (06:26 +0000)]
regex/mlx5: support rules import

This commit introduce the ability to program rules to the
RegEx engine.

Signed-off-by: Francis Kelly <fkelly@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support configuration
Ori Kam [Mon, 20 Jul 2020 06:26:10 +0000 (06:26 +0000)]
regex/mlx5: support configuration

This commit implements the configure function.
This function is responsible to configure the RegEx engine.

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: add engine status check
Ori Kam [Mon, 20 Jul 2020 06:26:09 +0000 (06:26 +0000)]
regex/mlx5: add engine status check

This commit checks the engine status.

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support info query
Ori Kam [Mon, 20 Jul 2020 06:26:08 +0000 (06:26 +0000)]
regex/mlx5: support info query

This commit adds the get info function.

Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: support probing
Ori Kam [Mon, 20 Jul 2020 06:26:07 +0000 (06:26 +0000)]
regex/mlx5: support probing

This commit adds the probe function to the RegEx PMD.

Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: add log macros
Yuval Avnery [Mon, 20 Jul 2020 06:26:06 +0000 (06:26 +0000)]
regex/mlx5: add log macros

Add the MLX5_REGEX_LOG macro which should be used for error prints.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
3 years agoregex/mlx5: introduce driver for BlueField 2
Yuval Avnery [Mon, 20 Jul 2020 06:26:05 +0000 (06:26 +0000)]
regex/mlx5: introduce driver for BlueField 2

This commit introduce the RegEx poll mode drivers class, and
adds Mellanox RegEx PMD.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Signed-off-by: Ori Kam <orika@mellanox.com>
3 years agodoc: announce removal of mbuf legacy refcnt field
Phil Yang [Fri, 17 Jul 2020 04:36:51 +0000 (12:36 +0800)]
doc: announce removal of mbuf legacy refcnt field

refcnt_atomic member in structures rte_mbuf and rte_mbuf_ext_shared_info
will be removed in 20.11 release.

Suggested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Signed-off-by: Phil Yang <phil.yang@arm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: David Marchand <david.marchand@redhat.com>
3 years agombuf: use C11 atomic builtins for refcnt
Phil Yang [Fri, 17 Jul 2020 04:36:50 +0000 (12:36 +0800)]
mbuf: use C11 atomic builtins for refcnt

Use C11 atomic builtins with explicit ordering instead of rte_atomic
ops which enforce unnecessary barriers on aarch64.

Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Suggested-by: Dodji Seketeli <dodji@redhat.com>
Signed-off-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
3 years agotest/crypto: skip unsupported cases
Akhil Goyal [Thu, 16 Jul 2020 19:07:13 +0000 (00:37 +0530)]
test/crypto: skip unsupported cases

blockcipher cases are either returning TEST_SUCCESS
or TEST_FAILED as status, but the test may not be
supported by the PMD which is also a success case
for the PMD. Hence checking for status == TEST_FAILED
for setting the overall status as failed.

Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Reviewed-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ankur Dwivedi <adwivedi@marvell.com>
3 years agoexamples/ipsec-secgw: enable flow based distribution
Anoob Joseph [Fri, 17 Jul 2020 12:31:10 +0000 (18:01 +0530)]
examples/ipsec-secgw: enable flow based distribution

RTE_FLOW API allows hardware parsing and steering of packets to specific
queues which helps in distributing ingress traffic across various cores.
Adding 'flow' rules allows user to specify the distribution required.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
3 years agoapp/testpmd: fix typos
Viacheslav Ovsiienko [Wed, 15 Jul 2020 10:30:35 +0000 (10:30 +0000)]
app/testpmd: fix typos

Fix minor typos.

Fixes: 4940344dab1d ("app/testpmd: add Tx scheduling command")

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/virtio-user: fix uninitialized reply-ack variable
Chenbo Xia [Tue, 14 Jul 2020 11:03:05 +0000 (11:03 +0000)]
net/virtio-user: fix uninitialized reply-ack variable

This patch fixes an issue that uninitialized has_reply_ack
is used for setting message flags.

Coverity issue: 360834
Fixes: c60208dd6384 ("net/virtio-user: support reply-ack")

Signed-off-by: Chenbo Xia <chenbo.xia@intel.com>
Acked-by: Adrian Moreno <amorenoz@redhat.com>
3 years agonet/ice: fix IPv6 NAT-T ESP
Jeff Guo [Thu, 16 Jul 2020 07:29:00 +0000 (15:29 +0800)]
net/ice: fix IPv6 NAT-T ESP

The hash for ipv6 nat-t esp should be enable as ipv4 nat-t esp.

Fixes: dadf70e5c30a ("net/ice: enable additional input set for RSS hash")

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: fix queue pairs configuration in VF
Alvin Zhang [Thu, 16 Jul 2020 06:33:36 +0000 (14:33 +0800)]
net/i40e: fix queue pairs configuration in VF

If a VF request PF to allocate more number of queue pairs, the PF will
free the queue pairs which have been allocated and reset the VF. So,
VF should stop to work until all the process is done. This patch modify
the process of the request queue pairs. To improve efficiency and
eliminate code redundancy, the promiscuous ops were also updated.

Fixes: c48eb308ed13 ("net/i40e: support VF request more queues")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>