dpdk.git
3 years agonet/ice/base: clean duplicate in finding GTPU dummy packet
Yuying Zhang [Mon, 26 Apr 2021 07:17:49 +0000 (07:17 +0000)]
net/ice/base: clean duplicate in finding GTPU dummy packet

Four GTPU tunnel types are used twice to find GTPU dummy packets
(ipv4_gtpu_ipv4/ipv6, ipv6_gtpu_ipv4/ipv6). Clean redundant code.

Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/e1000: fix flow error message object
Min Hu (Connor) [Tue, 27 Apr 2021 08:51:21 +0000 (16:51 +0800)]
net/e1000: fix flow error message object

This patch fixes parameter misuse when set rte flow action error.

Fixes: c0688ef1eded ("net/igb: parse flow API n-tuple filter")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
3 years agonet/i40e: support power management on VF
Anatoly Burakov [Mon, 26 Apr 2021 13:49:12 +0000 (13:49 +0000)]
net/i40e: support power management on VF

When .get_monitor_addr API was introduced, it was implemented in the
i40e driver, but only for the physical function; the virtual function
portion of the driver does not support that API.

Add the missing function pointer to VF device structure.

The i40e driver is not meant to use the VF portion any more, as
currently i40e VF devices are supposed to be managed by iavf drier, but
add this just in case it needs backporting later.

Fixes: a683abf90a22 ("net/i40e: implement power management API")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Hunt <david.hunt@intel.com>
3 years agonet/ixgbe: support power management on VF
Anatoly Burakov [Mon, 26 Apr 2021 13:49:11 +0000 (13:49 +0000)]
net/ixgbe: support power management on VF

When .get_monitor_addr API was introduced, it was implemented in the
ixgbe driver, but only for the physical function; the virtual function
portion of the driver does not support that API.

Add the missing function pointer to VF device structure.

Fixes: 3982b7967bb7 ("net/ixgbe: implement power management API")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Hunt <david.hunt@intel.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
3 years agonet/iavf: fix Tx L4 checksum
Wenzhuo Lu [Tue, 27 Apr 2021 02:24:28 +0000 (10:24 +0800)]
net/iavf: fix Tx L4 checksum

Leverage the behavior of the scalar path, preparing
packets is necessary for vector paths which support checksum
offload.

Fixes: 059f18ae2aec ("net/iavf: add offload path for Tx AVX512")

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
3 years agonet/ice/base: fix inner L4 offset for GTPU dummy packet
Yuying Zhang [Mon, 26 Apr 2021 06:02:08 +0000 (06:02 +0000)]
net/ice/base: fix inner L4 offset for GTPU dummy packet

Fix inner L4 offset of ipv6_gtpu_ipv6_tcp/udp dummy packet.

Fixes: bd4d9a89dbc1 ("net/ice/base: add GTP filtering via advanced switch filter")
Cc: stable@dpdk.org
Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agocommon/iavf: use macro to define offload/capability
Qi Zhang [Sat, 24 Apr 2021 06:03:37 +0000 (14:03 +0800)]
common/iavf: use macro to define offload/capability

Currently raw hex values are used to define specific bits for each
offload/capability in virtchnl.h. The can and has led to duplicate
defined bits. Fix this by using the BIT() macro so it's
immediately obvious which bits are used/available.

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agocommon/iavf: refine comment in virtual channel
Qi Zhang [Sat, 24 Apr 2021 06:03:36 +0000 (14:03 +0800)]
common/iavf: refine comment in virtual channel

General clean up for comment in virtchnl.

Signed-off-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: Joshua Hay <joshua.a.hay@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agocommon/iavf: add enumeration for Rx descriptor ID
Qi Zhang [Sat, 24 Apr 2021 06:03:35 +0000 (14:03 +0800)]
common/iavf: add enumeration for Rx descriptor ID

Support for allowing VFs to negotiate the descriptor format was added
previously.

This support requires that the VF specify which descriptor format to use
when requesting Rx queues. The VF is supposed to request the set of
supported formats via the new VIRTCHNL_OP_GET_SUPPORTED_RXDIDS, and then
set one of the supported formats in the rxdid field of the
virtchnl_rxq_info structure.

The virtchnl.h header does not provide an enumeration of the format
values. The existing implementations in the PF directly use the values
from the DDP package.

Make the formats explicit by defining an enumeration of the RXDIDs.
Provide an enumeration for the values as well as the bit positions as
returned by the supported_rxdids data from the
VIRTCHNL_OP_GET_SUPPORTED_RXDIDS.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agocommon/iavf: fix duplicated offload bit
Qi Zhang [Sat, 24 Apr 2021 06:03:34 +0000 (14:03 +0800)]
common/iavf: fix duplicated offload bit

The value of offload VIRTCHNL_VF_OFFLOAD_CRC bit already existed as
VIRTCHNL_VF_CAP_ADV_LINK_SPEED. Fix this now by changing the value of
VIRTCHNL_VF_OFFLOAD_CRC to a currently unused value.

Also, move the define for VIRTCHNL_VF_CAP_ADV_LINK_SPEED in the correct
place to line up with the other bit values and add a comment for its
purpose. Hopefully this will prevent from defining duplicate bits moving
forward.

Fixes: e244eeafcecb ("net/iavf/base: update virtual channel")
Cc: stable@dpdk.org
Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agonet/ice: refactor input set fields for switch filter
Yuying Zhang [Mon, 26 Apr 2021 05:38:14 +0000 (05:38 +0000)]
net/ice: refactor input set fields for switch filter

Input set has been divided into inner and outer part to distinguish
different fields. However, the parse method of switch filter doesn't
match this update. Refactor switch filter to distinguish inner and outer
input set in the same way as other filters.

Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/ice: clean redundant macro definition of filters
Yuying Zhang [Mon, 26 Apr 2021 05:38:13 +0000 (05:38 +0000)]
net/ice: clean redundant macro definition of filters

The input set has been divided into two parts to distinguish
inner and outer field. ICE_INSET_TUN_* is the same as non tunnel
macro definition. Clean redundant ICE_INSET_TUN_* codes.

Signed-off-by: Yuying Zhang <yuying.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/iavf: fix VF to PF command failure handling
Alvin Zhang [Sun, 25 Apr 2021 07:39:34 +0000 (15:39 +0800)]
net/iavf: fix VF to PF command failure handling

When the command sent by VF to PF fails, iavf may need to run
different code paths according to the specific reason of the
failure (not supported or other reasons).

This patch adds support of identifying PF return error type.

Fixes: 22b123a36d07 ("net/avf: initialize PMD")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agonet/iavf: fix RSS initialization
Xuan Ding [Sun, 25 Apr 2021 08:05:50 +0000 (08:05 +0000)]
net/iavf: fix RSS initialization

When the default RSS is disabled during initialization, the RSS should
be turned on when creating RSS rule.

This patch adds support to configure RSS key and lookup table even
when the default RSS is disabled.

Fixes: c678299594a8 ("net/iavf: fix default RSS configuration")
Cc: stable@dpdk.org
Signed-off-by: Xuan Ding <xuan.ding@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/ice: fix fast mbuf freeing
Alvin Zhang [Sun, 25 Apr 2021 05:18:51 +0000 (13:18 +0800)]
net/ice: fix fast mbuf freeing

MBUF_FAST_FREE should be supported as per queue offload for ice.

Fixes: 6eac0b7fde95 ("net/ice: support advance Rx/Tx")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/iavf: fix RSS configuration on i40e VF
Alvin Zhang [Sun, 25 Apr 2021 05:08:47 +0000 (13:08 +0800)]
net/iavf: fix RSS configuration on i40e VF

The iavf does not support configuring RSS type on i40e VF,
because the i40e kernel driver does not support
VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF capability.

This patch adds support of RSS type configuration for i40e VF by
sending VIRTCHNL_OP_SET_RSS_HENA message to the PF after checking
that the PF does not support VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF
capability.

Fixes: c678299594a8 ("net/iavf: fix default RSS configuration")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
3 years agocommon/iavf: add header types for PPP and L2TPv2
Ting Xu [Fri, 23 Apr 2021 08:06:37 +0000 (16:06 +0800)]
common/iavf: add header types for PPP and L2TPv2

Added two virtchnl protocol header types for L2TPv2 and PPP to support
the RSS hash for PPPoL2TPv2oUDP.

Signed-off-by: Ting Xu <ting.xu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: remove redundant VSI check in Tx queue setup
Chengwen Feng [Wed, 21 Apr 2021 02:33:14 +0000 (10:33 +0800)]
net/i40e: remove redundant VSI check in Tx queue setup

The VSI pointer is always valid, so there is no need to judge its
validity.

Fixes: b6583ee40265 ("i40e: full VMDQ pools support")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agonet/i40e: fix negative VEB index
Chengwen Feng [Wed, 21 Apr 2021 02:33:13 +0000 (10:33 +0800)]
net/i40e: fix negative VEB index

This patch adds check for negative VEB index when parsing VEB list.

Fixes: 79f2248219c0 ("net/i40e: add floating VEB option")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
3 years agocommon/sfc_efx/base: fix dereferencing null pointer
Hongbo Zheng [Sun, 25 Apr 2021 12:58:16 +0000 (20:58 +0800)]
common/sfc_efx/base: fix dereferencing null pointer

In function efx_pci_xilinx_cap_tbl_find, pointer entry_offsetp is used
before null pointer check, which may cause access to null pointer.

This patch fix this problem.

Fixes: ba9568b8b4b7 ("common/sfc_efx/base: add Xilinx capabilities table lookup")
Cc: stable@dpdk.org
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/hns3: fix handling link update
Chengwen Feng [Tue, 27 Apr 2021 12:17:39 +0000 (20:17 +0800)]
net/hns3: fix handling link update

The link fails code should be parsed using the structure
hns3_mbx_vf_to_pf_cmd, else it will parse fail.

Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agonet/bonding: fix socket ID check
Chengchang Tang [Tue, 27 Apr 2021 11:39:41 +0000 (19:39 +0800)]
net/bonding: fix socket ID check

The socket ID entered by user is cast to an unsigned integer. However,
the value may be an illegal negative value, which may cause some
problems. In this case, an error should be returned.

In addition, the socket ID may be an invalid positive number, which is
also processed in this patch.

Fixes: 2efb58cbab6e ("bond: new link bonding library")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agodoc: fix formatting in testpmd guide
Ajit Khaparde [Fri, 23 Apr 2021 16:29:44 +0000 (17:29 +0100)]
doc: fix formatting in testpmd guide

Fix formatting in testpmd user guide for hairpin operation.

Fixes: 01817b10d27c ("app/testpmd: change hairpin queues setup")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
Reviewed-by: Bing Zhao <bingz@nvidia.com>
3 years agoapp/testpmd: fix segment number check
Viacheslav Ovsiienko [Fri, 23 Apr 2021 16:09:52 +0000 (17:09 +0100)]
app/testpmd: fix segment number check

The --txpkts command line parameter was silently ignored due to
application was unable to check the Tx queue ring sizes for non
configured ports.

The "set txpkts <len0[,len1]*>" was also rejected if there
was some stopped or /unconfigured port.

This provides the following:

  - If fails to get ring size from the port, this can be because port is
    not initialized yet, ignore the check and just be sure segment size
    won't cause an out of bound access. The port descriptor check will
    be done during Tx setup.

  - The capability to send single packet is supposed to be very basic
    and always supported, the setting segment number to 1 is always
    allowed, no check performed

  - At the moment of Tx queue setup the descriptor number is checked
    against configured segment number

Bugzilla ID: 584
Fixes: 8dae835d88b7 ("app/testpmd: remove restriction on Tx segments set")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
3 years agonet/hns3: disable MAC status report interrupt
Hongbo Zheng [Fri, 23 Apr 2021 09:56:34 +0000 (17:56 +0800)]
net/hns3: disable MAC status report interrupt

Disable the MAC status report interrupt which hns3 driver not concern
currently.

Fixes: 5f8845f4ba8f ("net/hns3: process MAC interrupt")
Cc: stable@dpdk.org
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agodoc: add runtime option examples to hns3 guide
Min Hu (Connor) [Fri, 23 Apr 2021 09:27:39 +0000 (17:27 +0800)]
doc: add runtime option examples to hns3 guide

This patch added examples for runtime config options, to help user
how to use this.

Fixes: a124f9e9591b ("net/hns3: add runtime config to select IO burst function")
Fixes: 70791213242e ("net/hns3: support masking device capability")

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agonet/hns3: fix typos on comments
Min Hu (Connor) [Fri, 23 Apr 2021 09:27:38 +0000 (17:27 +0800)]
net/hns3: fix typos on comments

This patch fixed wrong word in comments.

Fixes: f53a793bb7c2 ("net/hns3: add more hardware error types")
Fixes: d51867db65c1 ("net/hns3: add initialization")
Fixes: 411d23b9eafb ("net/hns3: support VLAN")
Fixes: 5f8845f4ba8f ("net/hns3: process MAC interrupt")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agonet/tap: fix interrupt vector array size
Chengchang Tang [Thu, 22 Apr 2021 11:27:14 +0000 (19:27 +0800)]
net/tap: fix interrupt vector array size

The size of the current interrupt vector array is fixed to an integer.

This patch will create an interrupt vector array based on the number
of rxqs.

Fixes: 4870a8cdd968 ("net/tap: support Rx interrupt")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agoapp/testpmd: fix max queue number for Tx offloads
Chengchang Tang [Thu, 22 Apr 2021 07:03:31 +0000 (15:03 +0800)]
app/testpmd: fix max queue number for Tx offloads

When txq offload is configured, max rxq is used as the max queue. This
patch fixes it.

Fixes: 74453ac9ef67 ("app/testpmd: fix queue offload configuration")
Cc: stable@dpdk.org
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>
3 years agotest/kni: check init result
Min Hu (Connor) [Thu, 22 Apr 2021 03:56:29 +0000 (11:56 +0800)]
test/kni: check init result

Return value 'rte_kni_init' of a function is not checked. If
it fails, error handling (logging and return) should be done.

This patch fixed it.

Fixes: 0c6bc8ef70ba ("kni: memzone pool for alloc and release")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agotest/kni: fix a comment
Min Hu (Connor) [Thu, 22 Apr 2021 03:56:27 +0000 (11:56 +0800)]
test/kni: fix a comment

This patch changed 'subsytem' to 'subsystem'.

Fixes: 0c6bc8ef70ba ("kni: memzone pool for alloc and release")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/bonding: fix leak on remove
Chengwen Feng [Thu, 22 Apr 2021 02:05:02 +0000 (10:05 +0800)]
net/bonding: fix leak on remove

If the bond device was created by vdev mode, the kvlist was not free
when the bond device removed.

Fixes: 8d30fe7fa737 ("bonding: support port hotplug")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/hns3: remove unused mailbox macro and struct
Chengwen Feng [Thu, 22 Apr 2021 01:55:52 +0000 (09:55 +0800)]
net/hns3: remove unused mailbox macro and struct

In hns3_mbx.h, some macro and structure were defined in previous
versions but never used.

Fixes: 463e748964f5 ("net/hns3: support mailbox")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agonet/hns3: fix processing link status message on PF
Chengwen Feng [Thu, 22 Apr 2021 01:55:50 +0000 (09:55 +0800)]
net/hns3: fix processing link status message on PF

The opcode of the link status notification message reported by the
firmware is zero, it will be filtered out because driver treats it as
already processed message. As a result, the PF can't update the link
status in a timely manner.

Because only VF can set opcode to zero when processing mailbox message,
we add a judgment to make sure the PF messages will not be filtered out.

Fixes: dbbbad23e380 ("net/hns3: fix VF handling LSC event in secondary process")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agonet/hns3: fix mailbox error message
Chengwen Feng [Thu, 22 Apr 2021 01:55:49 +0000 (09:55 +0800)]
net/hns3: fix mailbox error message

The hns3_dev_handle_mbx_msg() could be called under both PF and VF,
but the error messages show VF.

Fixes: 109e4dd1bd7a ("net/hns3: get link state change through mailbox")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
3 years agodrivers/net: fix FW version query
Ferruh Yigit [Wed, 21 Apr 2021 16:20:57 +0000 (17:20 +0100)]
drivers/net: fix FW version query

Fixes a few different things:
* Remove 'fw_version' NULL checks, it is allowed if the 'fw_size' is
  zero, 'fw_version' being NULL but 'fw_size' not zero condition checked
  in ethdev layer
* Be sure required buffer size is returned if provided one is not big
  enough, instead of returning success (0)
* Document in doxygen comment the '-EINVAL' is a valid return type
* Take into account that 'snprintf' can return negative value
* Cast length to 'size_t' to compare it with 'fw_size'

Fixes: bb42aa9ffe4e ("net/atlantic: configure device start/stop")
Fixes: ff70acdf4299 ("net/axgbe: support reading FW version")
Fixes: e2652b0a20a0 ("net/bnxt: support get FW version")
Fixes: cf0fab1d2ca5 ("net/dpaa: support firmware version get API")
Fixes: 748eccb97cdc ("net/dpaa2: add support for firmware version get")
Fixes: b883c0644a24 ("net/e1000: add firmware version get")
Fixes: 293430677e9c ("net/enic: add handler to return firmware version")
Fixes: 1f5ca0b460cd ("net/hns3: support some device operations")
Fixes: bd5b86732bc7 ("net/hns3: modify format for firmware version")
Fixes: ed0dfdd0e976 ("net/i40e: add firmware version get")
Fixes: e31cb9a36298 ("net/ice: support FW version getting")
Fixes: 4f09bc55ac3d ("net/igc: implement device base operations")
Fixes: eec10fb0ce6b ("net/ionic: support FW version")
Fixes: 8b0b56574269 ("net/ixgbe: add firmware version get")
Fixes: 4d9f5b8adc02 ("net/octeontx2: add FW version get operation")
Fixes: f97b56f9f12e ("net/qede: support FW version query")
Fixes: 83fef46a22b2 ("net/sfc: add callback to retrieve FW version")
Fixes: bc84ac0fadef ("net/txgbe: support getting FW version")
Fixes: 21913471202f ("ethdev: add firmware version get")
Cc: stable@dpdk.org
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Rasesh Mody <rmody@marvell.com>
Acked-by: Jiawen Wu <jiawenwu@trustnetic.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
3 years agonet/txgbe: fix flow error message object
Chengwen Feng [Wed, 21 Apr 2021 06:31:13 +0000 (14:31 +0800)]
net/txgbe: fix flow error message object

This patch fixes parameter misusage when set rte flow action error.

Fixes: b7eeecb17556 ("net/txgbe: parse n-tuple filter")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/txgbe: fix memset type
Hongbo Zheng [Wed, 21 Apr 2021 03:36:09 +0000 (11:36 +0800)]
net/txgbe: fix memset type

Fix memset type error in function txgbe_parse_rss_filter
while clear rss_conf buffer.

Fixes: 7a6d87fb8398 ("net/txgbe: parse RSS filter")
Cc: stable@dpdk.org
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agonet/kni: check init result
Chengwen Feng [Wed, 21 Apr 2021 02:14:18 +0000 (10:14 +0800)]
net/kni: check init result

This patch adds checking for rte_kni_init() result.

Fixes: 75e2bc54c018 ("net/kni: add KNI PMD")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
3 years agodoc: fix multiport syntax in nfp guide
Chaoyong He [Thu, 25 Feb 2021 11:46:22 +0000 (13:46 +0200)]
doc: fix multiport syntax in nfp guide

Fix up the suffix of the PCI ID to be consistent with the code.

Fixes: 979f2bae0714 ("doc: improve multiport PF in nfp guide")
Cc: stable@dpdk.org
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Signed-off-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
3 years agopower: save original ACPI governor always
Anatoly Burakov [Fri, 23 Apr 2021 11:01:56 +0000 (11:01 +0000)]
power: save original ACPI governor always

Currently, when we set the acpi governor to "userspace", we check if
it is already set to this value, and if it is, we skip setting it.

However, we never save this value anywhere, so that next time we come
back and request the governor to be set to its original value, the
original value is empty.

Fix it by saving the original pstate governor first. While we're at it,
replace `strlcpy` with `rte_strscpy`.

Fixes: 445c6528b55f ("power: common interface for guest and host")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
3 years agobpf: fix JSLT validation
Hongbo Zheng [Thu, 22 Apr 2021 07:30:01 +0000 (15:30 +0800)]
bpf: fix JSLT validation

In function 'eval_jcc', judgment 'op == EBPF_JLT' occurs
twice, as a result, the corresponding second statement
cannot be accessed.

This patch fix this problem.

Fixes: 8021917293d0 ("bpf: add extra validation for input BPF program")
Cc: stable@dpdk.org
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
3 years agoacl: fix build with GCC 11
Konstantin Ananyev [Mon, 26 Apr 2021 13:35:19 +0000 (14:35 +0100)]
acl: fix build with GCC 11

gcc 11 with '-O2' complains about some variables being used without
being initialized:

In function â€˜start_flow_avx512x8’,
    inlined from â€˜search_trie_avx512x8.constprop’ at acl_run_avx512_common.h:317:
lib/librte_acl/acl_run_avx512_common.h:210:13: warning:
    â€˜pdata’ is used uninitialized [-Wuninitialized]
In function â€˜search_trie_avx512x8.constprop’:
lib/librte_acl/acl_run_avx512_common.h:314:32: note: â€˜pdata’ declared here
...

Indeed, these variables are not explicitly initialized,
but this is done intentionally.
We rely on constant mask value that we pass to start_flow*() functions
as a parameter to mask out uninitialized values.
Note that '-O3' doesn't produce this warning.
Anyway, to support clean build with gcc-11 this patch adds
explicit initialization for these variables.
I checked the output binary: with '-O3' both clang and gcc 10/11
generate no extra code for it.
Also performance test didn't reveal any regressions.

Bugzilla ID: 673
Fixes: b64c2295f7fc ("acl: add 256-bit AVX512 classify method")
Fixes: 45da22e42ec3 ("acl: add 512-bit AVX512 classify method")
Cc: stable@dpdk.org
Reported-by: Ali Alnubani <alialnu@nvidia.com>
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
3 years agoevent/cnxk: add option to control timer adapters
Shijith Thotton [Tue, 4 May 2021 00:27:25 +0000 (05:57 +0530)]
event/cnxk: add option to control timer adapters

Add devargs to control each event timer adapter i.e. TIM rings internal
parameters uniquely. The following dict format is expected
[ring-chnk_slots-disable_npa-stats_ena]. 0 represents default values.

Example:
--dev "0002:1e:00.0,tim_ring_ctl=[2-1023-1-0]"

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer adapter start and stop
Shijith Thotton [Tue, 4 May 2021 00:27:24 +0000 (05:57 +0530)]
event/cnxk: add timer adapter start and stop

Add event timer adapter start and stop functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer stats
Shijith Thotton [Tue, 4 May 2021 00:27:23 +0000 (05:57 +0530)]
event/cnxk: add timer stats

Add event timer adapter statistics get and reset functions.
Stats are disabled by default and can be enabled through devargs.

Example:
--dev "0002:1e:00.0,tim_stats_ena=1"

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer cancel
Pavan Nikhilesh [Tue, 4 May 2021 00:27:22 +0000 (05:57 +0530)]
event/cnxk: add timer cancel

Add function to cancel event timer that has been armed.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer arm timeout burst
Pavan Nikhilesh [Tue, 4 May 2021 00:27:21 +0000 (05:57 +0530)]
event/cnxk: add timer arm timeout burst

Add event timer arm timeout burst function.
All the timers requested to be armed have the same timeout.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer arm routine
Pavan Nikhilesh [Tue, 4 May 2021 00:27:20 +0000 (05:57 +0530)]
event/cnxk: add timer arm routine

Add event timer arm routine.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add TIM bucket operations
Pavan Nikhilesh [Tue, 4 May 2021 00:27:19 +0000 (05:57 +0530)]
event/cnxk: add TIM bucket operations

Add TIM bucket operations used for event timer arm and cancel.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add options for timer chunk size and rings
Shijith Thotton [Tue, 4 May 2021 00:27:18 +0000 (05:57 +0530)]
event/cnxk: add options for timer chunk size and rings

Add devargs to control default chunk size and max numbers of
timer rings to attach to a given RVU PF.

Example:
--dev "0002:1e:00.0,tim_chnk_slots=1024"
--dev "0002:1e:00.0,tim_rings_lmt=4"

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add timer adapter info query
Shijith Thotton [Tue, 4 May 2021 00:27:17 +0000 (05:57 +0530)]
event/cnxk: add timer adapter info query

Add TIM event timer adapter info get function.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: allow adapters to resize in-flights
Pavan Nikhilesh [Tue, 4 May 2021 00:27:16 +0000 (05:57 +0530)]
event/cnxk: allow adapters to resize in-flights

Add internal SSO functions to allow event adapters to resize SSO buffers
that are used to hold in-flight events in DRAM.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add option to disable NPA
Pavan Nikhilesh [Tue, 4 May 2021 00:27:15 +0000 (05:57 +0530)]
event/cnxk: add option to disable NPA

If the chunks are allocated from NPA then TIM can automatically free
them when traversing the list of chunks.
Add devargs to disable NPA and use software mempool to manage chunks.

Example:
--dev "0002:0e:00.0,tim_disable_npa=1"

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: create and free timer adapter
Shijith Thotton [Tue, 4 May 2021 00:27:14 +0000 (05:57 +0530)]
event/cnxk: create and free timer adapter

When the application calls timer adapter create the following is used:
- Allocate a TIM LF based on number of LF's provisioned.
- Verify the config parameters supplied.
- Allocate memory required for
* Buckets based on min and max timeout supplied.
* Allocate the chunk pool based on the number of timers.

On Free:
- Free the allocated bucket and chunk memory.
- Free the TIM lf allocated.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add timer adapter capabilities
Shijith Thotton [Tue, 4 May 2021 00:27:13 +0000 (05:57 +0530)]
event/cnxk: add timer adapter capabilities

Add function to retrieve event timer adapter capabilities.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: support timer
Shijith Thotton [Tue, 4 May 2021 00:27:12 +0000 (05:57 +0530)]
event/cnxk: support timer

Add event timer adapter a.k.a TIM initialization on SSO probe.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add event port and queue xstats
Pavan Nikhilesh [Tue, 4 May 2021 00:27:11 +0000 (05:57 +0530)]
event/cnxk: add event port and queue xstats

Add support for retrieving statistics from SSO HWS and HWGRP.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add SSO selftest and dump
Pavan Nikhilesh [Tue, 4 May 2021 00:27:10 +0000 (05:57 +0530)]
event/cnxk: add SSO selftest and dump

Add selftest to verify sanity of SSO and also add function to
dump internal state of SSO.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add device stop and close
Shijith Thotton [Tue, 4 May 2021 00:27:09 +0000 (05:57 +0530)]
event/cnxk: add device stop and close

Add event device stop and close callback functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add device start
Shijith Thotton [Tue, 4 May 2021 00:27:08 +0000 (05:57 +0530)]
event/cnxk: add device start

Add eventdev start function along with few cleanup API's to maintain
sanity.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add SSO GWS dequeue fast path
Pavan Nikhilesh [Tue, 4 May 2021 00:27:07 +0000 (05:57 +0530)]
event/cnxk: add SSO GWS dequeue fast path

Add SSO GWS event dequeue fastpath functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add SSO GWS enqueue fast path
Pavan Nikhilesh [Tue, 4 May 2021 00:27:06 +0000 (05:57 +0530)]
event/cnxk: add SSO GWS enqueue fast path

Add SSO GWS fastpath event device enqueue functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add SSO HW device operations
Pavan Nikhilesh [Tue, 4 May 2021 00:27:05 +0000 (05:57 +0530)]
event/cnxk: add SSO HW device operations

Add SSO HW device operations used for enqueue/dequeue.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add option to configure getwork mode
Pavan Nikhilesh [Tue, 4 May 2021 00:27:04 +0000 (05:57 +0530)]
event/cnxk: add option to configure getwork mode

Add devargs to configure the platform specific getwork mode.

CN9K getwork mode by default is set to use dual workslot mode.
Add option to force single workslot mode.
Example:
--dev "0002:0e:00.0,single_ws=1"

CN10K supports multiple getwork prefetch modes, by default the
prefetch mode is set to none.
Add option to select getwork prefetch mode
Example:
--dev "0002:1e:00.0,gw_mode=1"

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add event port link and unlink
Shijith Thotton [Tue, 4 May 2021 00:27:03 +0000 (05:57 +0530)]
event/cnxk: add event port link and unlink

Add platform specific event port, queue link and unlink APIs.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add port config
Shijith Thotton [Tue, 4 May 2021 00:27:02 +0000 (05:57 +0530)]
event/cnxk: add port config

Add SSO HWS a.k.a event port setup and release functions.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add option to control SSO HWGRP QoS
Shijith Thotton [Tue, 4 May 2021 00:27:01 +0000 (05:57 +0530)]
event/cnxk: add option to control SSO HWGRP QoS

SSO HWGRPs i.e. queue uses DRAM & SRAM buffers to hold in-flight
events. By default the buffers are assigned to the SSO HWGRPs to
satisfy minimum HW requirements. SSO is free to assign the remaining
buffers to HWGRPs based on a preconfigured threshold.
We can control the QoS of SSO HWGRP by modifying the above mentioned
thresholds. HWGRPs that have higher importance can be assigned higher
thresholds than the rest.

Example:
        --dev "0002:0e:00.0,qos=[1-50-50-50]" // [Qx-XAQ-TAQ-IAQ]

Qx  -> Event queue Aka SSO GGRP.
XAQ -> DRAM In-flights.
TAQ & IAQ -> SRAM In-flights.

The values need to be expressed in terms of percentages, 0 represents
default.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add option for in-flight buffer count
Shijith Thotton [Tue, 4 May 2021 00:27:00 +0000 (05:57 +0530)]
event/cnxk: add option for in-flight buffer count

The number of events for a *open system* event device is specified
as -1 as per the eventdev specification.
Since, SSO inflight events are only limited by DRAM size, the
xae_cnt devargs parameter is introduced to provide upper limit for
in-flight events.

Example:
        --dev "0002:0e:00.0,xae_cnt=8192"

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: allocate event in-flight buffers
Pavan Nikhilesh [Tue, 4 May 2021 00:26:59 +0000 (05:56 +0530)]
event/cnxk: allocate event in-flight buffers

Allocate buffers in DRAM that hold inflight events.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add event queue config
Shijith Thotton [Tue, 4 May 2021 00:26:58 +0000 (05:56 +0530)]
event/cnxk: add event queue config

Add setup and release functions for event queues i.e.
SSO HWGRPs.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add platform specific device config
Shijith Thotton [Tue, 4 May 2021 00:26:57 +0000 (05:56 +0530)]
event/cnxk: add platform specific device config

Add platform specific event device configuration that attaches the
requested number of SSO HWS(event ports) and HWGRP(event queues) LFs
to the RVU PF/VF.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add common configuration validation
Pavan Nikhilesh [Tue, 4 May 2021 00:26:56 +0000 (05:56 +0530)]
event/cnxk: add common configuration validation

Add configuration validation, port and queue configuration
functions.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add platform specific device probe
Pavan Nikhilesh [Tue, 4 May 2021 00:26:55 +0000 (05:56 +0530)]
event/cnxk: add platform specific device probe

Add platform specific event device probe and remove, also add
event device info get function.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
3 years agoevent/cnxk: add device capabilities
Shijith Thotton [Tue, 4 May 2021 00:26:54 +0000 (05:56 +0530)]
event/cnxk: add device capabilities

Add the info_get function to return details on the queues, flow,
prioritization capabilities, etc. which this device has.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/cnxk: add build infra and device setup
Pavan Nikhilesh [Tue, 4 May 2021 00:26:53 +0000 (05:56 +0530)]
event/cnxk: add build infra and device setup

Add meson build infra structure along with the event device
SSO initialization and teardown functions.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
3 years agocommon/cnxk: update inline asm prefix
Pavan Nikhilesh [Tue, 4 May 2021 00:26:52 +0000 (05:56 +0530)]
common/cnxk: update inline asm prefix

Update inline asm prefix to prevent overriding cpu type, instead express
the additional extensions required.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agocommon/cnxk: rename deprecated PCI constant
Pavan Nikhilesh [Tue, 4 May 2021 00:26:51 +0000 (05:56 +0530)]
common/cnxk: rename deprecated PCI constant

The PCI_ANY_ID constant is deprecated and renamed as RTE_PCI_ANY_ID.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
3 years agoevent/dlb2: optimize dequeue operation
Timothy McDaniel [Sat, 1 May 2021 19:07:44 +0000 (14:07 -0500)]
event/dlb2: optimize dequeue operation

Convert code to use x86 vector instructions, thereby significantly
improving dequeue performance.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
3 years agodoc: update guide for DLB v2.5
Timothy McDaniel [Sat, 1 May 2021 19:04:01 +0000 (14:04 -0500)]
doc: update guide for DLB v2.5

Update the dlb documentation for v2.5. Notable differences include
the new cobined credit scheme. Also cleaned up a couple of sections,
and removed a duplicate section.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: update config defines as runtime options
Timothy McDaniel [Sat, 1 May 2021 19:04:00 +0000 (14:04 -0500)]
event/dlb2: update config defines as runtime options

The new devarg names and their default values
are listed below. The defaults have not changed, and
none of these parameters are accessed in the fast path.

poll_interval=1000
sw_credit_quantai=32
default_depth_thresh=256

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: update xstats for v2.5
Timothy McDaniel [Sat, 1 May 2021 19:03:59 +0000 (14:03 -0500)]
event/dlb2: update xstats for v2.5

Add DLB v2.5 specific information to xstats, such as metrics for the new
credit scheme.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: use new combined register map
Timothy McDaniel [Sat, 1 May 2021 19:03:58 +0000 (14:03 -0500)]
event/dlb2: use new combined register map

All references to the old register map have been removed,
so it is safe to rename the new combined file that supports
both DLB v2.0 and DLB v2.5. Also fixed all places where this
file is included.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: use new implementation of HW types header
Timothy McDaniel [Sat, 1 May 2021 19:03:57 +0000 (14:03 -0500)]
event/dlb2: use new implementation of HW types header

As support for DLB v2.5 was added, modifications were made to
dlb_hw_types_new.h, but the old file needed to be preserved during
the port in order to meet the requirement that individual patches in
a series each compile successfully. Since the DLB v2.5 support is
completely integrated, it is now safe to remove the old (original)
file, as well as the DLB2_USE_NEW_HEADERS define that was used to
control which version of the file was to be included in certain
source files.
It is now safe to rename the new file, and use it unconditionally
in all DLB source files.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: use new implementation of resource file
Timothy McDaniel [Sat, 1 May 2021 19:03:56 +0000 (14:03 -0500)]
event/dlb2: use new implementation of resource file

The file dlb_resource_new.c now contains all of the low level
functions required to support both DLB v2.0 and DLB v2.5, and
the original file (dlb_resource.c) was removed in the previous
commit, so rename dlb_resource_new.c to dlb_resource.c, and
update the meson build file so that the new file is built.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: use new implementation of resource header
Timothy McDaniel [Sat, 1 May 2021 19:03:55 +0000 (14:03 -0500)]
event/dlb2: use new implementation of resource header

A temporary version of dlb_resource.h (dlb_resource_new.h) was used
by the previous commits in this patch series. Merge the two files
now that DLB v2.5 support has been fully added to dlb_resource.c.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 sequence number management
Timothy McDaniel [Sat, 1 May 2021 19:03:54 +0000 (14:03 -0500)]
event/dlb2: add v2.5 sequence number management

Update the low level HW functions that perform the sequence number
management functions. These include getting a groups number of
sequence numbers per queue, managing in-use slots, getting the
current occupancy, and setting sequence numbers for a group.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 sparse CQ mode
Timothy McDaniel [Sat, 1 May 2021 19:03:53 +0000 (14:03 -0500)]
event/dlb2: add v2.5 sparse CQ mode

Update the low level HW functions responsible for
configuring sparse CQ mode, where each cache line
contains just one QE instead of 4.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 finish map/unmap
Timothy McDaniel [Sat, 1 May 2021 19:03:52 +0000 (14:03 -0500)]
event/dlb2: add v2.5 finish map/unmap

Update the low level HW functions responsible for
finishing the queue map/unmap operation, which is an
asynchronous operation.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 queue depth functions
Timothy McDaniel [Sat, 1 May 2021 19:03:51 +0000 (14:03 -0500)]
event/dlb2: add v2.5 queue depth functions

Update the low level hardware functions responsible for
getting the queue depth. The command arguments are also
validated.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 credit scheme
Timothy McDaniel [Sat, 1 May 2021 19:03:50 +0000 (14:03 -0500)]
event/dlb2: add v2.5 credit scheme

DLB v2.5 uses a different credit scheme than was used in DLB v2.0 .
Specifically, there is a single credit pool for both load balanced
and directed traffic, instead of a separate pool for each as is
found with DLB v2.0.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 start domain
Timothy McDaniel [Sat, 1 May 2021 19:03:49 +0000 (14:03 -0500)]
event/dlb2: add v2.5 start domain

Update the low level HW functions responsible for
starting the scheduling domain. Once a domain is
started, its resources can no longer be configured,
except for QID remapping and port enable/disable.
The start domain arguments are validated, and an error
is returned if validation fails, or if the domain is
not configured or has already been started.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 queue unmap
Timothy McDaniel [Sat, 1 May 2021 19:03:48 +0000 (14:03 -0500)]
event/dlb2: add v2.5 queue unmap

Update the low level HW functions responsible for
removing the linkage between a queue and a load
balanced port. Runtime checks are performed on the
port and queue to make sure the state is appropriate
for the unmap operation, and the unmap arguments
are also validated.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 queue id map
Timothy McDaniel [Sat, 1 May 2021 19:03:47 +0000 (14:03 -0500)]
event/dlb2: add v2.5 queue id map

Update the low level HW functions responsible for
mapping queues to ports. These functions also validate
the map arguments and verify that the maximum number
of queues linked to a load balanced port does not
exceed the capabilities of the hardware.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 create dir queue
Timothy McDaniel [Sat, 1 May 2021 19:03:46 +0000 (14:03 -0500)]
event/dlb2: add v2.5 create dir queue

Update the low level HW functions responsible for
creating directed queues. These functions configure
the depth threshold, configure queue depth, and
validate the queue creation arguments.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 create dir port
Timothy McDaniel [Sat, 1 May 2021 19:03:45 +0000 (14:03 -0500)]
event/dlb2: add v2.5 create dir port

Update the low level HW functions responsible for
creating directed ports. These functions create the
producer port (PP), configure the consumer queue (CQ),
configure queue depth, and validate the port creation
arguments.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 create LDB port
Timothy McDaniel [Sat, 1 May 2021 19:03:44 +0000 (14:03 -0500)]
event/dlb2: add v2.5 create LDB port

Update the low level HW functions responsible for
creating load balanced ports. These functions create the
producer port (PP), configure the consumer queue (CQ), and
validate the port creation arguments.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 create LDB queue
Timothy McDaniel [Sat, 1 May 2021 19:03:43 +0000 (14:03 -0500)]
event/dlb2: add v2.5 create LDB queue

Updated low level hardware functions related to configuring
load balanced queues. These functions create the queues,
as well as attach related resources required by load
balanced queues, such as sequence numbers.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 domain reset
Timothy McDaniel [Sat, 1 May 2021 19:03:42 +0000 (14:03 -0500)]
event/dlb2: add v2.5 domain reset

Reset hardware registers, consumer queues, ports,
interrupts and software. Queues must also be drained
as part of the reset process.

The logic is very similar to what was done for v2.0,
but the new combined register map for v2.0 and v2.5
uses new register names and bit names.  Additionally,
new register access macros are used so that the code
can perform the correct action, based on the hardware
version, v2.0 or v2.5.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>
3 years agoevent/dlb2: add v2.5 create sched domain
Timothy McDaniel [Sat, 1 May 2021 19:03:41 +0000 (14:03 -0500)]
event/dlb2: add v2.5 create sched domain

Update domain creation logic to account for DLB v2.5
credit scheme, new register map, and new register access
macros.

Signed-off-by: Timothy McDaniel <timothy.mcdaniel@intel.com>