Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:56 +0000 (17:48 +0300)]
net/sfc: support representor info get
Let the driver provide the user with information about available
representors by implementing the representor_info_get operation.
Due to the lack of any structure to representor IDs, every ID range
describes exactly one representor.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:55 +0000 (17:48 +0300)]
net/sfc: use switch port ID as representor ID
Representor IDs must be unique for each representor. VFs, which are
currently used, are not unique as they may repeat in combination with
different PCI controllers and PFs. On the other hand, switch port IDs
are unique, so they are a better fit for this role.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:54 +0000 (17:48 +0300)]
net/sfc: support new representor parameter syntax
Allow the user to specify representor entities using the structured
parameter values.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:53 +0000 (17:48 +0300)]
net/sfc: include controller and port in representor name
Make representor names unique on multi-host configurations.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:52 +0000 (17:48 +0300)]
net/sfc: store PCI address for represented entities
This information will be useful when representor info API is implemented.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:51 +0000 (17:48 +0300)]
net/sfc: maintain controller to EFX interface mapping
Newer hardware may have arbitrarily complex controller configurations,
and for this reason the mapping has been made dynamic: it is represented
with a dynamic array that is indexed by controller numbers and each
element contains an EFX interface number. Since the number of controllers
is expected to be small, this approach should not hurt the performance.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:50 +0000 (17:48 +0300)]
common/sfc_efx/base: allow getting VNIC MCDI client handles
Equality checks between VNICs should be done by comparing their client
handles. This means that clients should be able to retrieve client
handles for arbitrary functions and themselves.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:49 +0000 (17:48 +0300)]
common/sfc_efx/base: add API to read MAE mport journal
This is required to provide the driver with the current state of mports.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:48 +0000 (17:48 +0300)]
common/sfc_efx/base: retrieve function interfaces for VNICs
This information is required to be able to fully identify the function.
Add this information to the NIC configuration structure for easy access.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:47 +0000 (17:48 +0300)]
common/sfc_efx/base: add multi-host function mport selector
Provide helper function to compose multi-host aware PCIe
function M-port selector.
The firmware expects mport selectors to use different sets of values to
represent a PCIe interface in mport selectors and elsewhere. In order to
avoid having the user perform the conversion themselves, it is now done
automatically when a selector is constructed.
In addition, a type has been added to libefx for possible PCIe
interfaces.
This is done to abstract different representations away from the users.
Allow to support matching traffic coming from an arbitrary PCIe
end-point of the NIC and redirect traffic to it.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:46 +0000 (17:48 +0300)]
net/sfc: free MAE lock once switch domain is assigned
If for some reason the hardware switch ID initialization function fails,
MAE lock is still held after the function finishes. This patch fixes that.
Fixes:
1e7fbdf0ba19 ("net/sfc: support concept of switch domains/ports")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Igor Romanov [Mon, 11 Oct 2021 14:48:45 +0000 (17:48 +0300)]
net/sfc: add simple port representor statistics
Gather statistics of enqueued and dequeued packets in Rx and Tx burst
callbacks to report in stats_get callback.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:44 +0000 (17:48 +0300)]
net/sfc: implement representor Rx
Implement traffic forwarding for representor and representor proxy
from virtual functions to representor Rx queues.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:43 +0000 (17:48 +0300)]
net/sfc: handle ingress mport in EF100 Rx prefix
Set ingress mport dynamic field in mbuf in EF100.
For a given PF, Rx queues of representor devices
function on top of the only Rx queue operated by
the PF representor proxy facility. This field is
a means to demultiplex traffic hitting the queue.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:42 +0000 (17:48 +0300)]
net/sfc: use xword type for EF100 Rx prefix
Layout of the EF100 Rx prefix is defined in terms of a 32 bytes long
value type (xword). Replace oword with xword to avoid truncation.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:41 +0000 (17:48 +0300)]
net/sfc: implement representor Tx
Forward traffic that is transmitted from a port representor to the
corresponding virtual function using the dedicated TxQ.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:40 +0000 (17:48 +0300)]
net/sfc: support multiple device probe
Support probing the device multiple times so that additional port
representors can be created with hotplug EAL API. To hotplug a
representor, the PF must be hotplugged with different representor
device argument.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:39 +0000 (17:48 +0300)]
net/sfc: implement port representor link update
Implement the callback by reporting link down if the representor
is not started, otherwise report link up with undefined link speed.
Link speed is undefined since representors can pass traffic to each
other even if the PF link is down.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:38 +0000 (17:48 +0300)]
net/sfc: implement port representor start and stop
Implement queue start and stop operation both in port
representors and representor proxy.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:37 +0000 (17:48 +0300)]
net/sfc: implement representor Tx queue start/stop
Implement Tx queue start and stop in port representor proxy.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:36 +0000 (17:48 +0300)]
net/sfc: implement representor Rx queue start/stop
Add extra libefx flags to Rx queue information initialization
function interface to be able to specify the ingress m-port
flag for a representor RxQ. Rx prefix of packets on that queue
will contain ingress m-port field required for packet forwarding
in representor proxy.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:35 +0000 (17:48 +0300)]
net/sfc: implement representor queue setup and release
Implement queue creation and destruction both in port representors
and representor proxy.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:34 +0000 (17:48 +0300)]
net/sfc: add representor proxy port API
The API is required to create and destroy representor proxy
port assigned to representor.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:33 +0000 (17:48 +0300)]
common/sfc_efx/base: add mport alias MCDI wrappers
The APIs allow creation of mports for port representor
traffic filtering.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:32 +0000 (17:48 +0300)]
common/sfc_efx/base: add API to get mport selector by ID
The conversion is required when mport ID is received via
mport allocation and mport selector is required for filter
creation.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:31 +0000 (17:48 +0300)]
common/sfc_efx/base: add filter ingress mport matching field
The field changes the mport for which the filter is created.
It is required to filter traffic from VF on an alias mport.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:30 +0000 (17:48 +0300)]
net/sfc: add port representors infrastructure
Provide minimal implementation for port representors that only can be
configured and can provide device information.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Viacheslav Galaktionov [Mon, 11 Oct 2021 14:48:29 +0000 (17:48 +0300)]
common/sfc_efx/base: allow creating invalid mport selectors
There isn't always a valid mport that can be used. For these cases,
special invalid selectors can be generated. Requests that use such
selectors in any way will be rejected.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Igor Romanov [Mon, 11 Oct 2021 14:48:28 +0000 (17:48 +0300)]
net/sfc: move adapter state enum to separate header
Adapter state will be reused by representors, that will have
a separate adapter. Rename adapter state to ethdev state
so that the meaning of it is clearer.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:27 +0000 (17:48 +0300)]
net/sfc: reserve queues for port representors
A Tx/Rx queue pair is required to forward traffic between
port representors and virtual functions.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:26 +0000 (17:48 +0300)]
net/sfc: add representors proxy infrastructure
Representor proxy is a mediator between virtual functions and port
representors. It forwards traffic between virtual functions and port
representors performing base PF ethdev + VF's representor traffic
(de-)multiplexing. The implementation will be provided by later patches.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:25 +0000 (17:48 +0300)]
net/sfc: support EF100 Tx override prefix
Add internal mbuf dynamic flag and field to request EF100 native
Tx datapath to use Tx prefix descriptor to override egress m-port.
Overriding egress m-port is necessary on representor Tx burst
so that the packet will reach corresponding VF.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:24 +0000 (17:48 +0300)]
common/sfc_efx/base: add API to get mport ID by selector
The mport ID is required to set appropriate egress mport ID
in Tx prefix for port representor TxQ.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:23 +0000 (17:48 +0300)]
net/sfc: insert switchdev mode MAE rules
By default, the firmware is in EVB mode, but insertion of the first MAE
rule resets it to switchdev mode automatically and removes all automatic
MAE rules added by EVB support. On initialisation, insert MAE rules that
forward traffic between PHY and PF.
Add an API for creation and insertion of driver-internal MAE
rules(flows).
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Igor Romanov [Mon, 11 Oct 2021 14:48:22 +0000 (17:48 +0300)]
net/sfc: add switch mode device argument
Add the argument that allows user to choose either switchdev or legacy
mode. Legacy mode enables switching by using Ethernet virtual bridging
(EVB) API. In switchdev mode, VF traffic goes via port representor
(if any) on PF, and software virtual switch (for example, Open vSwitch)
steers the traffic.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Andrew Rybchenko [Mon, 11 Oct 2021 14:48:21 +0000 (17:48 +0300)]
common/sfc_efx/base: update EF100 registers definitions
Pick up all changes and extra definitions.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Andrew Rybchenko [Mon, 11 Oct 2021 14:48:20 +0000 (17:48 +0300)]
common/sfc_efx/base: update MCDI headers
Pickup new FW interface definitions.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Viacheslav Galaktionov [Mon, 11 Oct 2021 12:53:06 +0000 (15:53 +0300)]
ethdev: fix representor port ID search by name
The patch is required for all PMDs which do not provide representors
info on the representor itself.
The function, rte_eth_representor_id_get(), is used in
eth_representor_cmp() which is required in ethdev class iterator to
search ethdev port ID by name (representor case). Before the patch
the function is called on the representor itself and tries to get
representors info to match.
Search of port ID by name is used after hotplug to find out port ID
of the just plugged device.
Getting a list of representors from a representor does not make sense.
Instead, a backer device should be used.
To this end, extend the rte_eth_dev_data structure to include the port ID
of the backing device for representors.
Signed-off-by: Viacheslav Galaktionov <viacheslav.galaktionov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
Reviewed-by: Xueming Li <xuemingl@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:12 +0000 (14:29 +0300)]
net/sfc: collect per queue stats in EF100 Tx
If Tx datapath collects per queue statistics, use these stats
to provide opackets and obytes in basic ethdev stats.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:11 +0000 (14:29 +0300)]
net/sfc: collect per queue stats in EF100 Rx
If Rx datapath collects per queue statistics, use these stats
to provide ipackets and ibytes in basic ethdev stats.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:10 +0000 (14:29 +0300)]
net/sfc: support SW stats groups
Add support for grouping SW stats together. When stats are
grouped the corresponding stats values for each queue
are obtained during calling one read callback. This is useful
to group per-queue stats 'packets' and 'bytes' to keep stats
consistent, i.e. a number of bytes corresponds to a number of
packets. These stats will be added in the following patches.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:09 +0000 (14:29 +0300)]
net/sfc: add toggle to disable total stat
Add toggle to disable total SW stat. This is useful
for per-queue 'packets' and 'bytes' to not conflict
with corresponding basic stats. These stats will be
added in the following patches.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:08 +0000 (14:29 +0300)]
net/sfc: prepare not having some SW stats on adapter
Global description structure of SW stats is used currently.
Following patches introduce SW stats that may be unavailable
for some adapters, so add per-adapter descriptions to safely
work with multiple adapters.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:07 +0000 (14:29 +0300)]
net/sfc: optimize getting number of SW stats
Optimize getting number of SW stats by caching the
value during device configure since it's the only
place it may change.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:06 +0000 (14:29 +0300)]
net/sfc: fix missing const of SW stats descriptions
Description is a global variable shared by all adapters and must
not be modified.
Fixes:
fdd7719eb3c1 ("net/sfc: add xstats for Rx/Tx doorbells")
Cc: stable@dpdk.org
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:05 +0000 (14:29 +0300)]
net/sfc: fix cleanup order of SW stats
Fix cleanup order of SW stats structures to be reversed
to initialization order.
Fixes:
fdd7719eb3c1 ("net/sfc: add xstats for Rx/Tx doorbells")
Cc: stable@dpdk.org
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:04 +0000 (14:29 +0300)]
net/sfc: rename SW stats structures
Delete 'x' in:
1. per-adapter 'struct sfc_sw_xstats' with corresponding
field 'sw_xstats'.
2. 'struct sfc_sw_xstat_descr' and callback prototype
'sfc_get_sw_xstat_val_t' with its implementations.
The 'x' stands for 'extended' in RTE but from sfc point of
view these are just SW stats.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:03 +0000 (14:29 +0300)]
net/sfc: rename accumulative SW stats to total
This is a better word used in RTE docs.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ivan Ilchenko [Tue, 28 Sep 2021 11:29:02 +0000 (14:29 +0300)]
net/sfc: rename array of SW stats descriptions
Rename global array of SW stats descriptions declared as
'struct sfc_sw_xstat_descr sfc_sw_xstats[]' to
'sfc_sw_stats_descr[]' to avoid ambiguity since there is
structure declared as 'struct sfc_sw_xstats'.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Ferruh Yigit [Mon, 4 Oct 2021 17:27:02 +0000 (18:27 +0100)]
net/ena: remove useless address check
Reported by "gcc (GCC) 12.0.0
20211003 (experimental)":
./drivers/net/ena/ena_rss.c: In function ‘ena_rss_reta_query’:
./drivers/net/ena/ena_rss.c:140:66:
error: the comparison will always evaluate as ‘false’ for the
pointer operand in ‘reta_conf + 136’ must not be NULL
[-Werror=address]
140 | (reta_size > RTE_RETA_GROUP_SIZE && ((reta_conf + 1) == NULL)))
| ^~
Fixing it by removing useless check.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
Chengchang Tang [Sat, 9 Oct 2021 07:48:05 +0000 (15:48 +0800)]
net/hns3: remove similar macro function definitions
For different capabilities, we declare different macro functions to
determine whether the capabilities are supported.
This patch declare a unified macro function to judge capabilities.
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Huisong Li [Mon, 11 Oct 2021 09:12:46 +0000 (17:12 +0800)]
app/testpmd: retain all original dev conf when config DCB
When configuring DCB, testpmd retains the rx_mode/tx_mode configuration in
rte_port->dev_conf. But some configurations, such as the link_speed, were
not saved if they were set before configuring DCB.
Fixes:
1a572499beb6 ("app/testpmd: setup DCB forwarding based on traffic class")
Cc: stable@dpdk.org
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Andrew Rybchenko [Mon, 11 Oct 2021 13:24:53 +0000 (16:24 +0300)]
ethdev: remove legacy Rx descriptor done API
rte_eth_rx_descriptor_status() should be used as a replacement.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Chengchang Tang [Fri, 24 Sep 2021 09:57:20 +0000 (17:57 +0800)]
app/testpmd: add command to show LACP bonding info
Add a new cmdline to help diagnostic the bonding mode 4 in testpmd.
Show the lacp information about the bonded device and its slaves:
show bonding lacp info <bonded device port_id>
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Chengchang Tang [Wed, 22 Sep 2021 07:09:13 +0000 (15:09 +0800)]
net/bonding: fix RSS key length
Currently the hash_key_size information has not been set. So, apps can
not get the key size from dev_info(), this make some problem.
e.g, in testpmd, the hash_key_size will be checked before configure
or get the hash key:
testpmd> show port 4 rss-hash
dev_info did not provide a valid hash key size
testpmd> show port 4 rss-hash key
dev_info did not provide a valid hash key size
testpmd> port config 4 rss-hash-key ipv4 (hash key)
dev_info did not provide a valid hash key size
In this patch, the meaning of rss_key_len has been modified. It only
indicated the length of the configured hash key before. Therefore,
its value depends on the user's configuration. This seems unreasonable.
And now, it indicates the minimum hash key length required by the
bonded device. Its value will be the shortest hash key among all slave
drivers.
Fixes:
734ce47f71e0 ("bonding: support RSS dynamic configuration")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Chengchang Tang [Wed, 22 Sep 2021 07:09:12 +0000 (15:09 +0800)]
net/bonding: fix dedicated queue mode in vector burst
If the vector burst mode is selected, the dedicated queue mode will not
take effect on some PMDs because these PMDs may have some limitations
in vector burst mode. For example, the limit on burst size. Currently,
both hns3 and intel I40E require four alignments when receiving packets
in vector mode. As a result, they can't accept packets if burst size
below four. However, in dedicated queue mode, the burst size of periodic
packets processing is one.
This patch fixes the above problem by modifying the burst size to 32.
This approach also makes the packet processing of the dedicated queue
mode more reasonable. Currently, if multiple LACP protocol packets are
received in the hardware queue in a cycle, only one LACP packet will be
processed in this cycle, and the left packets will be processed in the
following cycle. After the modification, all the LACP packets will be
processed at one time, which seems more reasonable and closer to the
behavior of the bonding driver when the dedicated queue is not turned on.
Fixes:
112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Alvin Zhang [Thu, 23 Sep 2021 08:01:29 +0000 (16:01 +0800)]
app/testpmd: fix txonly forwarding
When random number of Tx segments is enabled, because the actual
number of segments may be only one, the first segment of the Tx
packets must accommodate a complete being sending Eth/IP/UDP packet.
Besides, if multiple flow is enabled, the forwarding will update
the IP and UDP header, these headers shouldn't cross segments.
This also requires the first Tx segment can accommodate a complete
Eth/IP/UDP packet.
In addition, if time stamp is enabled, the forwarding needs more
Tx segment space for time stamp information.
This patch adds checks in beginning of forward engine to make sure
all above conditions are met.
Bugzilla ID: 797
Fixes:
79bec05b32b7 ("app/testpmd: add ability to split outgoing packets")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Alvin Zhang [Thu, 23 Sep 2021 08:01:28 +0000 (16:01 +0800)]
app/testpmd: update forward engine beginning
For each forward engine, there may be some special conditions
must be met before the forwarding runs.
Adding checks for these conditions in configuring is not suitable,
because one condition may rely on multiple configurations, and the
conditions required by each forward engine is not general.
The best solution is each forward engine has a callback to check
whether these conditions are met, and then testpmd can call the
callback to determine whether the forwarding can be started.
There was a void callback 'port_fwd_begin' in forward engine,
it did some initialization for forwarding, this patch updates its
return value then we can add some checks in it to confirm whether
the forwarding can be started. In addition, this patch calls the
callback before the forwarding stats is reset and then launches the
forwarding engine.
Bugzilla ID: 797
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Ciara Loftus [Fri, 8 Oct 2021 07:50:20 +0000 (07:50 +0000)]
net/af_xdp: disable secondary process support
Since the AF_XDP PMD does not work for secondary processes as reported
in Bugzilla 805, check for the process type at the beginning of probe
and return ENOTSUP if the process type is secondary.
It is planned that secondary processes will be supported by the PMD in
full in a future release by using rte_mp_msg to pass the state to the
secondary process that it requires in order to work.
Bugzilla ID: 805
Fixes:
f1debd77efaf ("net/af_xdp: introduce AF_XDP PMD")
Cc: stable@dpdk.org
Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Konstantin Ananyev [Mon, 18 Oct 2021 13:40:52 +0000 (14:40 +0100)]
test/bpf: fix undefined behavior with clang
test_shift1_check() function fails with clang build.
The reason for that is that clang uses 64-bit shift instruction for
what expected to be 32-bit operation.
To be more specific, this C code:
r2 = (uint32_t)r2 >> r4;
With clang produces:
41a4eb: 48 d3 ef shr %cl,%rdi
In that particular case it is an allowed choice, as from one side
left-operand value is known to fit into 32 bits, from other side
according to 'C' standard:
"...if the value of the right operand is negative or is greater than
or equal to the width of the promoted left operand, the behavior is
undefined."
The problem is that on x86 behavior for 64-bit and 32-bit shift
operation might differ.
The fix avoids undefined behavior by making sure
that right operand will not exceed width of the promoted left operand.
Bugzilla ID: 811
Fixes:
9f8f9d91a701 ("test/bpf: introduce functional test")
Cc: stable@dpdk.org
Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Akhil Goyal [Tue, 12 Oct 2021 10:07:19 +0000 (15:37 +0530)]
app/crypto-perf: support lookaside IPsec
Added support for lookaside IPsec protocol offload.
Supported cases:
-AEAD
-Cipher+auth
Command used for testing:
./dpdk-test-crypto-perf -c 0xf -- --devtype crypto_octeontx2 --ptest
throughput --optype ipsec --cipher-algo aes-cbc --pool-sz 16384
--cipher-op encrypt --cipher-key-sz 16 --cipher-iv-sz 16 --auth-algo
sha1-hmac --auth-op generate --digest-sz 16 --total-ops
10000000
--burst-sz 32 --buffer-sz 64,128,256,512,1024,1280,2048
./dpdk-test-crypto-perf -c 0xf -- --devtype crypto_octeontx2 --ptest
throughput --optype ipsec --aead-algo aes-gcm --pool-sz 16384
--aead-op encrypt --aead-key-sz 32 --aead-iv-sz 12 --aead-aad-sz 16
--digest-sz 16 --total-ops
10000000 --burst-sz 32
--buffer-sz 64,128,256,512,1024,1280,2048
Signed-off-by: Akhil Goyal <gakhil@marvell.com>
Signed-off-by: Archana Muniganti <marchana@marvell.com>
Akhil Goyal [Mon, 18 Oct 2021 05:22:47 +0000 (10:52 +0530)]
security: add reserved bit fields
In struct rte_security_ipsec_sa_options, for every new option
added, there is an ABI breakage, to avoid, a reserved_opts
bitfield is added to for the remaining bits available in the
structure.
Now for every new sa option, these reserved_opts can be reduced
and new option can be added.
Signed-off-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
Akhil Goyal [Mon, 18 Oct 2021 05:22:46 +0000 (10:52 +0530)]
security: hide internal API
rte_security_dynfield_register() is an internal
API to be used by the driver, hence moving it to internal.
Signed-off-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
Nipun Gupta [Sun, 17 Oct 2021 06:53:31 +0000 (12:23 +0530)]
app/bbdev: handle endianness of test data
With data input, output and harq also supported in big
endian format, this patch updates the testbbdev application
to handle the endianness conversion as directed by the
the driver being used.
The test vectors assumes the data in the little endian order, and
thus if the driver supports big endian data processing, conversion
from little endian to big is handled by the testbbdev application.
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Hemant Agrawal [Sun, 17 Oct 2021 06:53:30 +0000 (12:23 +0530)]
app/bbdev: enable la12xx
Enabled NXP la12xx bbdev driver in test bbdev app
for unit testing.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Hemant Agrawal [Sun, 17 Oct 2021 06:53:29 +0000 (12:23 +0530)]
baseband/la12xx: support enqueue and dequeue
Add support for enqueue and dequeue the LDPC enc/dec
from the modem device.
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Hemant Agrawal [Sun, 17 Oct 2021 06:53:28 +0000 (12:23 +0530)]
baseband/la12xx: add queue and modem config
This patch add support for connecting with modem
and creating the ipc channel as queues with modem
for the exchange of data.
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Hemant Agrawal [Sun, 17 Oct 2021 06:53:27 +0000 (12:23 +0530)]
baseband/la12xx: support multiple modems
This patch add support for multiple modems by assigning
a modem id as dev args in vdev creation.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Hemant Agrawal [Sun, 17 Oct 2021 06:53:26 +0000 (12:23 +0530)]
baseband/la12xx: add devargs option for max queues
This patch adds dev args to take max queues as input
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Nipun Gupta [Sun, 17 Oct 2021 06:53:25 +0000 (12:23 +0530)]
baseband/la12xx: introduce NXP LA12xx driver
This patch introduce the baseband device drivers for NXP's
LA1200 series software defined baseband modem.
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Nicolas Chautru [Sun, 17 Oct 2021 06:53:24 +0000 (12:23 +0530)]
bbdev: add device info for data endianness
Added device information to capture explicitly the assumption
of the input/output data byte endianness being processed.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Hemant Agrawal [Wed, 13 Oct 2021 19:00:32 +0000 (00:30 +0530)]
test/crypto: add raw API support in 5G algos
This patch add support for RAW API testing with ZUC
and SNOW test cases.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Hemant Agrawal [Wed, 13 Oct 2021 19:00:31 +0000 (00:30 +0530)]
test/crypto: add raw API test for dpaax
This patch add support for raw API tests for
dpaa_sec and dpaa2_sec platforms.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:30 +0000 (00:30 +0530)]
crypto/dpaa_sec: support AEAD and proto with raw API
This add support for AEAD and proto offload with raw APIs
for dpaa_sec driver.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:29 +0000 (00:30 +0530)]
crypto/dpaa_sec: support authonly and chain with raw API
This patch improves the raw vector support in dpaa_sec driver
for authonly and chain usecase.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:28 +0000 (00:30 +0530)]
crypto/dpaa_sec: support raw datapath API
This patch add raw vector API framework for dpaa_sec driver.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:27 +0000 (00:30 +0530)]
crypto/dpaa2_sec: enhance error checks with raw buffer API
This patch improves error conditions and support of
Wireless algos with raw buffers.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:26 +0000 (00:30 +0530)]
crypto/dpaa2_sec: support OOP with raw buffer API
add support for out of order processing with raw vector APIs.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:25 +0000 (00:30 +0530)]
crypto/dpaa2_sec: support AEAD with raw buffer API
add raw vector API support for AEAD algos.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:24 +0000 (00:30 +0530)]
crypto/dpaa2_sec: support authenc with raw buffer API
This patch supports AUTHENC with raw buufer APIs
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:23 +0000 (00:30 +0530)]
crypto/dpaa2_sec: support auth only with raw buffer API
Auth only with raw buffer APIs has been supported in this patch.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:22 +0000 (00:30 +0530)]
crypto/dpaa2_sec: support raw datapath API
This path add framework for raw API support.
The initial patch only test cipher only part.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:21 +0000 (00:30 +0530)]
cryptodev: fix multi-segment raw vector processing
If no next segment available the “for” loop will fail and it still
returns i+1 i.e. 2, which is wrong as it has filled only 1 buffer.
Fixes:
7adf992fb9bf ("cryptodev: introduce CPU crypto API")
Cc: stable@dpdk.org
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Hemant Agrawal [Wed, 13 Oct 2021 19:00:20 +0000 (00:30 +0530)]
cryptodev: add field for out-of-place in raw vector
The structure rte_crypto_sym_vec is updated to
add dest_sgl to support out of place processing.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Gagandeep Singh [Wed, 13 Oct 2021 19:00:19 +0000 (00:30 +0530)]
cryptodev: add total raw buffer length
The current crypto raw data vectors is extended to support
rte_security usecases, where we need total data length to know
how much additional memory space is available in buffer other
than data length so that driver/HW can write expanded size
data after encryption.
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Hemant Agrawal [Wed, 13 Oct 2021 19:00:18 +0000 (00:30 +0530)]
cryptodev: rename field in vector struct
This patch renames the sgl to src_sgl in struct rte_crypto_sym_vec
to help differentiating between source and destination sgl.
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:29 +0000 (17:03 +0100)]
doc: remove unneeded security structs extension notice
The new fields regarding TSO support were not implemented following
feedback, it was decided to implement TSO support by using existing
mbuf fields.
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:28 +0000 (17:03 +0100)]
doc: remove unneeded IPsec new field notice
The deprecation notice regarding extending rte_ipsec_sa_prm with a
new field hdr_l3_len is no longer applicable.
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:27 +0000 (17:03 +0100)]
ipsec: support setting initial ESN value
Update IPsec library to support initial ESN value.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:26 +0000 (17:03 +0100)]
ipsec: support SA telemetry
Add telemetry support for ipsec SAs.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:25 +0000 (17:03 +0100)]
mbuf: add IPsec ESP tunnel type
Add ESP tunnel type to the tunnel types list that can be specified
for TSO or checksum on the inner part of tunnel packets.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:24 +0000 (17:03 +0100)]
ipsec: support NAT-T
Add support for the IPsec NAT-Traversal use case for Tunnel mode
packets.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:23 +0000 (17:03 +0100)]
security: add UDP parameters for IPsec NAT-T
Add support for specifying UDP port params for UDP encapsulation option.
RFC3948 section-2.1 does not enforce using specific the UDP ports for
UDP-Encapsulated ESP Header
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:22 +0000 (17:03 +0100)]
ipsec: support more AEAD algorithms
Added support for AES_CCM, CHACHA20_POLY1305 and AES_GMAC.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Radu Nicolau [Thu, 14 Oct 2021 16:03:21 +0000 (17:03 +0100)]
security: add ESN field to IPsec xform
Update ipsec_xform definition to include ESN field.
This allows the application to control the ESN starting value.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Anoob Joseph <anoobj@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Matan Azrad [Mon, 4 Oct 2021 06:36:38 +0000 (09:36 +0300)]
cryptodev: extend data-unit length field
As described in [1] and as announced in [2], The field ``dataunit_len``
of the ``struct rte_crypto_cipher_xform`` moved to the end of the
structure and extended to ``uint32_t``.
In this way, sizes bigger than 64K bytes can be supported for data-unit
lengths.
[1] commit
d014dddb2d69 ("cryptodev: support multiple cipher
data-units")
[2] commit
9a5c09211b3a ("doc: announce extension of crypto data-unit
length")
Signed-off-by: Matan Azrad <matan@nvidia.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Przemyslaw Zegan [Tue, 12 Oct 2021 12:56:11 +0000 (12:56 +0000)]
app/crypto-perf: fix AAD template copy overrun
This patch fixes a possible buffer overrun problem in crypto perf test.
Previously when user configured AAD size is over 12 bytes the copy
of template AAD will cause a buffer overrun.
The problem is fixed by only copy up to 12 bytes of AAD template.
Fixes:
8a5b494a7f99 ("app/test-crypto-perf: add AEAD parameters")
Cc: stable@dpdk.org
Signed-off-by: Przemyslaw Zegan <przemyslawx.zegan@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Nithin Dabilpuram [Wed, 6 Oct 2021 07:20:16 +0000 (12:50 +0530)]
examples/ipsec-secgw: accept inline packet in single SA
In inline protocol inbound SA's, plain IPv4 and IPv6 packets are
delivered to application unlike inline crypto or lookaside.
Hence fix the application to not drop them when working in
single SA mode.
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Ankur Dwivedi [Thu, 30 Sep 2021 13:20:43 +0000 (18:50 +0530)]
crypto/cnxk: add max queue pairs limit option
Adds max queue pairs limit devargs for crypto cnxk driver. This
can be used to set a limit on the number of maximum queue pairs
supported by the device. The default value is 63.
Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
Reviewed-by: Anoob Joseph <anoobj@marvell.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
David Marchand [Mon, 18 Oct 2021 08:26:35 +0000 (10:26 +0200)]
mempool: accept user flags only
As reported by Dmitry, RTE_MEMPOOL_F_POOL_CREATED is a flag only
manipulated internally.
This flag is not supposed to be requested from an application and would
probably result in an incorrect behavior if an application did pass it.
At least one other internal flag has been added recently and more may be
introduced later.
Rework the check and export a mask of valid user flags for use in the
unit test.
Fixes:
b240af8b10f9 ("mempool: enforce valid flags at creation")
Reported-by: Dmitry Kozlyuk <dkozlyuk@nvidia.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>