Dmitry Kozlyuk [Mon, 25 Jan 2021 22:12:49 +0000 (01:12 +0300)]
buildtools: fix archive extraction for Python 3.5
Python 3.5 subprocess.run() has no capture_output parameter.
Use subprocess.PIPE available in all versions.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Dmitry Kozlyuk [Mon, 25 Jan 2021 22:12:48 +0000 (01:12 +0300)]
buildtools: fix pmdinfogen with pyelftools < 0.24
pyelftools had some breaking changes [1] and API enhancements [2]
between 0.23 (used in Ubuntu 16.04) and 0.24. Ensure compatibility with
both legacy and modern versions.
[1]: https://github.com/eliben/pyelftools/pull/76
[2]: https://github.com/eliben/pyelftools/pull/56
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Dmitry Kozlyuk [Fri, 8 Jan 2021 02:47:23 +0000 (05:47 +0300)]
build: enable pmdinfogen for Windows
Remove platform restriction when building drivers.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Tested-by: Jie Zhou <jizh@microsoft.com>
Dmitry Kozlyuk [Fri, 8 Jan 2021 02:47:22 +0000 (05:47 +0300)]
buildtools: support object file extraction for Windows
clang archiver tool is llvm-ar on Windows and ar on other platforms.
MinGW always uses ar. Replace shell script (Unix-only) that calls ar
with a Python script (OS-independent) that calls an appropriate archiver
tool selected at configuration time. Move the logic not to generate
empty sources into pmdinfogen.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Dmitry Kozlyuk [Fri, 8 Jan 2021 02:47:21 +0000 (05:47 +0300)]
buildtools: allow multiple input files in pmdinfogen
Process any number of input object files and write a unified output.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Dmitry Kozlyuk [Fri, 8 Jan 2021 02:47:20 +0000 (05:47 +0300)]
buildtools: support COFF in pmdinfogen
Common Object File Format (COFF) is used on Windows in place of ELF.
Add COFF parser to pmdinfogen. Also add an argument to specify input
file format, which is selected at configure time based on the target.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Dmitry Kozlyuk [Sun, 24 Jan 2021 20:51:57 +0000 (23:51 +0300)]
buildtools: remove C implementation of pmdinfogen
Delete the files no longer used in build process.
Add myself as maintainer of new implementation.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Dmitry Kozlyuk [Sun, 24 Jan 2021 20:51:56 +0000 (23:51 +0300)]
buildtools: use Python pmdinfogen
Use the same interpreter to run pmdinfogen as for other build scripts.
Adjust wrapper script accordingly and also don't suppress stderr from ar
and pmdinfogen. Add configure-time check for elftools Python module for
Unix hosts.
Add pyelftools to CI configuration and build requirements for Linux and
FreeBSD. Windows targets are not currently using pmdinfogen.
Suppress ABI warnings about generated PMD information strings.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Jie Zhou <jizh@microsoft.com>
Dmitry Kozlyuk [Sun, 24 Jan 2021 20:51:55 +0000 (23:51 +0300)]
buildtools: add Python pmdinfogen
Using a high-level, interpreted language simplifies maintenance and
build process. Furthermore, ELF handling is delegated to pyelftools
package. Original logic is kept, the copyright recognizes that.
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Jie Zhou <jizh@microsoft.com>
David Marchand [Fri, 22 Jan 2021 09:30:37 +0000 (10:30 +0100)]
examples/pipeline: fix VXLAN script permission
This python script provides a shebang that only makes sense if the
script has the executable bit set.
Fixes:
fde7a772701a ("examples/pipeline: add VXLAN encapsulation example")
Cc: stable@dpdk.org
Reported-by: Timothy Redaelli <tredaelli@redhat.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Thomas Monjalon [Wed, 20 Jan 2021 21:57:47 +0000 (22:57 +0100)]
doc: simplify OS support in features matrix
The networking drivers features matrix had rows to show
OS and kernel modules support:
- BSD nic_uio
- Linux UIO
- Linux VFIO
- Other kdrv
- Windows
The kernel modules details are removed to keep only OS support:
- FreeBSD
- Linux
- Windows
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:47 +0000 (11:10 +0000)]
app: fix build with extra include paths
The "includes" variable in the app/meson.build file was ignored when
building the executable, meaning that apps couldn't pass additional
include paths directly back. Fix this to align with drivers and libs.
Fixes:
fa036e70d794 ("app: generalize meson build")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:46 +0000 (11:10 +0000)]
node: fix missing header include
The rte_compat header file is needed for the '__rte_experimental' macro.
Fixes:
f00708c2aa53 ("node: add IPv4 rewrite and lookup control")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:45 +0000 (11:10 +0000)]
metrics: fix variable declaration in header
The global variable "tel_met_data" was declared in a header file, rather
than in a C file, leading to duplicate definitions if more than one C
file included the header.
Fixes:
c5b7197f662e ("telemetry: move some functions to metrics library")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:44 +0000 (11:10 +0000)]
pipeline: fix missing header includes
The stdio.h header needs to be included to get the definition of the
FILE type.
Fixes:
b32c0a2c5e4c ("pipeline: add SWX table update high level API")
Fixes:
3ca60ceed79a ("pipeline: add SWX pipeline specification file")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:43 +0000 (11:10 +0000)]
table: fix missing header include
The rte_lru_x86.h header, included from the main rte_lru.h header, uses
the RTE_CC_IS_GNU macro from rte_common.h but fails to include that
header file.
Fixes:
0c9a5735a947 ("eal: fix compiler detection in public headers")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:42 +0000 (11:10 +0000)]
fib: fix missing header includes
Add stdint.h to get definitions of standard integer types
Fixes:
39e927248416 ("fib: add FIB library")
Fixes:
40d41a8a7b34 ("fib: support IPv6")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:41 +0000 (11:10 +0000)]
ipsec: fix missing header include
The rte_ipsec_sad.h header used the standard uintXX_t types, but did not
include stdint.h header for them.
Fixes:
401633d9c112 ("ipsec: add inbound SAD API")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:40 +0000 (11:10 +0000)]
vhost: fix missing header includes
The vhost header files were missing definitions from headers to allow
them to be compiled up individually.
Fixes:
d7280c9fffcb ("vhost: support selective datapath")
Fixes:
a49f758d1170 ("vhost: split vDPA header file")
Fixes:
939066d96563 ("vhost/crypto: add public function implementation")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:39 +0000 (11:10 +0000)]
rib: fix missing header includes
The standard integer types, and the size_t types are missing their
required header includes in the rib header file.
Fixes:
5a5793a5ffa2 ("rib: add RIB library")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:38 +0000 (11:10 +0000)]
bitrate: fix missing header include
The rte_compat.h header file must be included to get the definition of
__rte_experimental.
Fixes:
f030bff72f81 ("bitrate: add free function")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:37 +0000 (11:10 +0000)]
mbuf: fix missing header include
The rte_mbuf_dyn.h header file uses a number of types and macros without
including the required header files to get the definitions of those
macros/types. Similarly, the rte_mbuf_core.h file was missing an
include for rte_byteorder.h header.
Fixes:
4958ca3a443a ("mbuf: support dynamic fields and flags")
Fixes:
3eb860b08eb7 ("mbuf: move definitions into a separate file")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:36 +0000 (11:10 +0000)]
net: fix missing header include
The Geneve protocol header file is missing the rte_byteorder.h header.
Fixes:
ea0e711b8ae0 ("app/testpmd: add GENEVE parsing")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ophir Munk <ophirmu@nvidia.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:35 +0000 (11:10 +0000)]
ethdev: fix missing header include
The define for RTE_ETH_FLOW_MAX is defined in rte_ethdev.h, so that
header should be included in rte_eth_ctrl.h to allow it to be compiled
independently.
Fixes:
7fa96d696f2c ("ethdev: unification of flow types")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:34 +0000 (11:10 +0000)]
telemetry: fix missing header include
The telemetry header file uses the rte_cpuset_t type, but does not
include any header providing that type. Include rte_os.h to provide the
necessary type.
Fixes:
febbebf7f255 ("telemetry: keep threads separate from data plane")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:33 +0000 (11:10 +0000)]
eal: fix reciprocal header include
The rte_reciprocal header file used standard __rte_always_inline from
rte_common.h but does not include that header file, leading to compiler
errors when the reciprocal header is included alone.
Fixes:
6d45659eacb8 ("eal: add u64-bit variant for reciprocal divide")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Bruce Richardson [Fri, 15 Jan 2021 11:10:33 +0000 (12:10 +0100)]
eal: fix thread header include
rte_thread.h was missing the compat header to get the __rte_experimental
macro definition.
Fixes:
b1fd151267e6 ("eal: add generic thread-local-storage functions")
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Thomas Monjalon [Wed, 20 Jan 2021 01:58:16 +0000 (02:58 +0100)]
version: 21.02-rc1
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Bruce Richardson [Mon, 11 Jan 2021 13:55:59 +0000 (13:55 +0000)]
build: provide suitable error for "both" libraries option
Rather than having the DPDK configuration error out when linking apps
and examples when "both" is select for "default_library" option, we can
detect that setting earlier in the build config and provide a suitable
error message to the user.
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Andrew Boyer <aboyer@pensando.io>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Bruce Richardson [Wed, 9 Dec 2020 17:14:20 +0000 (17:14 +0000)]
config: remove compatibility build defines
As announced in the deprecation note, remove all compatibility build
defines from previous make/meson versions and use only the standardized
ones - RTE_LIB_<name> for libraries, and RTE_<CLASS>_<NAME> for drivers.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Jeff Guo [Tue, 19 Jan 2021 08:07:31 +0000 (16:07 +0800)]
net/ice: fix flow rule checking
Add empty item into the pattern mapping list when checking the ptype is
supported or not, since we do support the NUll pattern for rte flow in
ice pmd.
Fixes:
68b6240ee9f0 ("net/ice: refactor packet type parsing")
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Beilei Xing [Tue, 19 Jan 2021 07:01:52 +0000 (15:01 +0800)]
doc: add known issue with RSS in ixgbe guide
Currently, IXGBE doesn't support RSS when double VLAN
is enabled due to FW limitation.
Signed-off-by: Beilei Xing <beilei.xing@intel.com>
Acked-by: Haiyue Wang <haiyue.wang@intel.com>
Alvin Zhang [Tue, 19 Jan 2021 05:25:51 +0000 (13:25 +0800)]
net/ixgbe: fix configuration of max frame size
For some types of NIC, jumbo frame is not supported in IOV mode,
so if a VF requests to configure the frame size to not bigger
than IXGBE_ETH_MAX_LEN, the kernel driver returns 0, but the DPDK
ixgbe PMD returns -1, this will cause the VF to fail to start
when the PF driven by DPDK ixgbe PMD.
This patch keeps ixgbe PMD's handling mode consistent with kernel
driver in above situation.
In addition, the value set by the command IXGBE_VF_SET_LPE
represents the max frame size, not the mtu.
Fixes:
1b9ea09c067b ("ixgbe: support X550")
Fixes:
95a27b3ba5f5 ("net/ixgbe: enable jumbo frame for VF")
Cc: stable@dpdk.org
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
Haiyue Wang [Mon, 18 Jan 2021 11:38:29 +0000 (19:38 +0800)]
net/ice: refactor DCF VLAN handling
Since DCF always configure the outer VLAN offloads for the target AVF,
so rename the related variables to align with this design.
Also, the DCF needs to trace the AVF reset status to re-apply the VLAN
offload setting, refactor the reset event handling to support this.
Change the VF representor API 'ethdev' parameter to 'vf_rep_eth_dev' to
avoid introducing confusion with VF representor eth_dev ops name.
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Alvin Zhang [Fri, 15 Jan 2021 08:34:11 +0000 (16:34 +0800)]
net/i40e: fix out of scope variable
Using "key", which points to an out-of-scope variable "rss_key_default".
Coverity issue: 365293
Fixes:
ef4c16fd9148 ("net/i40e: refactor RSS flow")
Signed-off-by: Alvin Zhang <alvinx.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
Xuan Ding [Mon, 18 Jan 2021 08:28:26 +0000 (08:28 +0000)]
net/iavf: workaround RSS cleanup failure handling
Allow to ignore error returned from virtual channel command
VIRTCHNL_OP_SET_RSS_HENA with hena = 0 due to some legacy
kernel driver does not support this. Add warning message when
this happen.
Signed-off-by: Xuan Ding <xuan.ding@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Junfeng Guo [Mon, 18 Jan 2021 14:07:41 +0000 (14:07 +0000)]
net/ice: enable QinQ filter for switch
Enable the double VLAN support for switch QinQ filtering.
Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Jiawei Wang [Thu, 14 Jan 2021 07:24:47 +0000 (09:24 +0200)]
net/mlx5: handle RSS action in sample
PMD validates the rss action in the sample sub-actions list,
then translates into rdma-core action and it will be used for sample
path destination.
If the RSS action is in both sample sub-actions list and original flow,
the rss level and rss type in the sample sub-actions list should be
consistent with the original flow list, since the expanding items
for RSS should be the same for both actions.
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Jiawei Wang [Thu, 14 Jan 2021 07:24:46 +0000 (09:24 +0200)]
net/mlx5: fix unnecessary checking for RSS action
RSS action is valid only in NIC-RX domain, this fix bypass
the function that getting RSS action from the flow action list
under no NIC-RX domain.
Fixes:
e745f900072e ("net/mlx5: optimize flow RSS struct")
Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Jiawei Wang [Thu, 14 Jan 2021 07:24:45 +0000 (09:24 +0200)]
app/testpmd: support RSS in sample action
Support rss action in the sample sub-actions list.
The examples for the sample flow use case and result as below:
set sample_actions 0 mark id 0x12 / rss queues 0 1 2 3 end / end
flow create 0 ingress group 1 pattern eth / end actions
sample ratio 1 index 0 / jump group 2 / end
This flow will result in all the matched ingress packets will be
jumped to next table, and the each packet will be marked with 0x12
and duplicated to rss queues of the control application.
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Ivan Malov [Sun, 17 Jan 2021 22:21:11 +0000 (01:21 +0300)]
common/sfc_efx/base: apply mask to value on match field set
An application may submit all-zeros masks for a given field
to be used in two given specifications and, in the meantime,
use different unmasked values. Later on, when compared, the
two specifications will prove unequal, and, if the rules in
question are outer, the client driver will have to allocate
a separate rule for the second specification. Provided that
all other match criteria are the same, the HW will deem the
two outer rules being duplicates, which is in fact the case.
Apply masks to values in efx_mae_match_spec_field_set() API
to fix the issue and avoid duplicate outer rule allocations.
Fixes:
370ed675a952 ("common/sfc_efx/base: support setting PPORT in match spec")
Cc: stable@dpdk.org
Reported-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Alexander Kozyrev [Mon, 18 Jan 2021 21:40:26 +0000 (21:40 +0000)]
app/testpmd: support modify field flow action
Add support for the RTE_FLOW_ACTION_MODIFY_FIELD to the testpmd.
Implement CLI to create the modify_field action and supply all the
needed parameters to modify an arbitrary packet field (as well as
mark, tag or metadata) with data from another field or immediate
value.
Example of the flow is the following:
flow create 0 egress group 1 pattern eth / ipv4 / udp / end
actions modify_field op set dst_type tag dst_level 2 dst_offset 8
src_type gtp_teid src_level 0 src_offset 0 width 16 / end
This flow copies 16 bits from the second Tag in the Tags array
into the outermost GTP TEID packet header field. 8 bits of the
Tag are skipped as indicated by the dst_offset action parameter.
op, dst_type, src_type and width are the mandatory parameters to
specify. Levels and offset are 0 by default if they are not
overridden by a user. The operation can be set, add or sub.
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Alexander Kozyrev [Mon, 18 Jan 2021 21:40:25 +0000 (21:40 +0000)]
ethdev: introduce generic modify flow action
Implement the generic modify flow API to allow manipulations on
an arbitrary header field (as well as mark, metadata or tag) using
data from another field or a user-specified value.
This generic modify mechanism removes the necessity to implement
a separate RTE Flow action every time we need to modify a new packet
field in the future.
Supported operation are:
- set: copy data from source to destination.
- add: integer addition, stores the result in destination.
- sub: integer subtraction, stores the result in destination.
The field ID is used to specify the desired source/destination packet
field in order to simplify the API for various encapsulation models.
Specifying the packet field ID with the needed encapsulation level
is able to quickly get a packet field for any inner packet header.
Alternatively, the special ID (ITEM_START) can be used to point to
the very beginning of a packet. This ID in conjunction with the
offset parameter provides great flexibility to copy/modify any part of
a packet as needed.
The number of bits to use from a source as well as the offset can be
be specified to allow a partial copy or dividing a big packet field
into multiple small fields (e.g. copying 128 bits of IPv6 to 4 tags).
An immediate value (or a pointer to it) can be specified instead of the
level and the offset for the special FIELD_VALUE ID (or FIELD_POINTER).
Can be used as a source only.
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Lijun Ou [Thu, 14 Jan 2021 13:33:37 +0000 (21:33 +0800)]
net/hns3: remove unused assignment for RSS key
The default RSS key does not need to be configured repeatedly
when call hns3_dev_configure function with the NULL RSS key
because the default RSS key has been configured when the PMD
driver run hns3_do_start function with starting device.
Besides, it will not overwrite the initialized key if
rte_eth_dev_configure API will be called directly and RSS key is NULL
after init PMD driver.
Therefore, the assignment for RSS key in hns3_dev_configure
function is unnecessary.
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Chengchang Tang [Thu, 14 Jan 2021 13:33:36 +0000 (21:33 +0800)]
net/hns3: fix dump register out of range
Currently, when dump the queue interrupt registers, the number of
registers that should be dumped is calculated from num_msi. But the
value of num_msi includes the number of misc interrupts. So, for some
hardware version, like kupeng930, it will lead to an illegal access.
This patch replace num_msi with intr_tqps_num which indicate the
number of interrupts used by the tqps.
Fixes:
936eda25e8da ("net/hns3: support dump register")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Chengchang Tang [Thu, 14 Jan 2021 13:33:35 +0000 (21:33 +0800)]
net/hns3: fix data overwriting during register dump
The data pointer has not moved after BAR register dumped. This causes
the later register to overwrite the previous data.
This patch fix the overwriting by move the pointer after every dump
function. And the missing separator between 32-bit register and the
64-bit register is also added to avoid a parsing error.
Fixes:
936eda25e8da ("net/hns3: support dump register")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Chengchang Tang [Thu, 14 Jan 2021 13:33:34 +0000 (21:33 +0800)]
net/hns3: fix register length when dumping registers
Currently, the reg length return by HNS3 is the total length of all the
registers. But for upper layer user, the total register length is the
length multiplied by width. This can lead to a waste of memory and print
some invalid information.
This patch corrects the length and width of the register.
Fixes:
936eda25e8da ("net/hns3: support dump register")
Cc: stable@dpdk.org
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Hongbo Zheng [Thu, 14 Jan 2021 13:33:33 +0000 (21:33 +0800)]
net/hns3: use new opcode for clearing hardware resource
The original command opcode '0x700A' may cause firmware error,
so '0x700A' is deserted, now use '0x700B' to replace it.
Fixes:
223d9eceaeee ("net/hns3: clear residual hardware configurations on init")
Cc: stable@dpdk.org
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Chengwen Feng [Thu, 14 Jan 2021 13:33:32 +0000 (21:33 +0800)]
net/hns3: fix VF query link status in dev init
Current hns3vf queried link status in dev init stage, but the link
status should be maintained in dev start stage, this patch fix this.
Also, in the dev start stage, we use quick query instead of delayed
query to make sure update the link status soon.
Fixes:
a5475d61fa34 ("net/hns3: support VF")
Fixes:
958edf6627d5 ("net/hns3: fix VF link status")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Chengwen Feng [Thu, 14 Jan 2021 13:33:31 +0000 (21:33 +0800)]
net/hns3: support traffic management
This patch support RTE TM ops function for PF, which could
used to:
1. config port's peak rate.
2. config TC's peak rate.
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Lijun Ou [Thu, 14 Jan 2021 13:33:30 +0000 (21:33 +0800)]
net/hns3: use C11 atomics builtins for resetting
Use C11 atomic builtins with explicit ordering instead of
rte_atomic ops with the resetting member of hns3_reset_data
structure.
Signed-off-by: Lijun Ou <oulijun@huawei.com>
Andrew Boyer [Mon, 11 Jan 2021 19:02:09 +0000 (11:02 -0800)]
net/ionic: fix link speed and autonegotiation
Don't assume autoneg in link_update().
Always call ionic_dev_cmd_port_autoneg() in start().
This allows the client to specify the link settings.
Fixes:
598f6726390f ("net/ionic: add basic port operations")
Cc: stable@dpdk.org
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Andrew Boyer [Mon, 11 Jan 2021 19:02:08 +0000 (11:02 -0800)]
net/ionic: clear up confusion around FC autoneg
IONIC does not support Flow-Control autonegotiation.
Always wait for completion after each dev cmd.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Andrew Boyer [Mon, 11 Jan 2021 19:02:07 +0000 (11:02 -0800)]
net/ionic: do not add station MAC filter on init
The address is not needed in the firmware.
This reduces the startup time a bit.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Signed-off-by: Neel Patel <neel@pensando.io>
Andrew Boyer [Mon, 11 Jan 2021 19:02:06 +0000 (11:02 -0800)]
net/ionic: set port admin state to up in port init
This reduces the startup time a bit.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Signed-off-by: Neel Patel <neel@pensando.io>
Andrew Boyer [Mon, 11 Jan 2021 19:02:05 +0000 (11:02 -0800)]
net/ionic: combine queue init and enable commands
Adding F_ENA to the q_init command has the same effect as q_enable.
This reduces the startup time a bit.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
Signed-off-by: Neel Patel <neel@pensando.io>
Andrew Boyer [Mon, 11 Jan 2021 19:02:04 +0000 (11:02 -0800)]
net/ionic: revise configuration flag handling
Configuration flags come to the driver in dev_configure(). From there,
the driver calls ionic_lif_configure() to update the lif->feature
bitfield, and then programs the port.
Features like VLAN_RX_FILTER and RX_HASH cannot be disabled in the
device, so do nothing in response to requests to disable them. (The
device config would ideally show them enabled by default, but some
DTS tests fail if RSS_HASH is set but RSS is not.)
Move features from the per-queue to per-port lists. IONIC does not
really support per-queue configuration: the stack disallows disabling
a queue feature if it is enabled on the port, while the device
disallows enabling a queue feature if it is disabled on the port.
Thus all configuration is per-port.
Move the guts of ionic_vlan_offload_set() into a new function,
ionic_lif_configure_vlan_offload(), so it can be called by
ionic_lif_configure().
Move the check for DEV_RX_OFFLOAD_SCATTER from rx_queue_setup() up
into ionic_lif_configure().
Warn if rx_drop_en is not set.
Signed-off-by: Andrew Boyer <aboyer@pensando.io>
George Prekas [Thu, 7 Jan 2021 20:42:28 +0000 (14:42 -0600)]
app/testpmd: fix IP checksum calculation
Strict-aliasing rules are violated by cast to uint16_t* in flowgen.c and
the calculated IP checksum is wrong. Use attribute __may_alias__ to fix
the problem.
Fixes:
e9e23a617eb8 ("app/testpmd: add flowgen forwarding engine")
Cc: stable@dpdk.org
Signed-off-by: George Prekas <prekageo@amazon.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Hyong Youb Kim [Thu, 7 Jan 2021 14:01:54 +0000 (06:01 -0800)]
net/enic: use 64B completion queue entries if available
Latest VIC adapters support 64B CQ (completion queue) entries as well
as 16B entries available on all VIC models. 64B entries can greatly
reduce cache contention (CPU stall cycles) between DMA writes (Rx
packet descriptors) and polling CPU. The effect is very noticeable on
Intel platforms with DDIO. As most UCS servers are based on Intel
platforms, enable and use 64B CQ entries by default, if
available. Also, add devarg 'cq64' so the user can explicitly disable
64B CQ.
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
Bruce Richardson [Thu, 14 Jan 2021 12:17:33 +0000 (12:17 +0000)]
ethdev: avoid blocking telemetry for link status
When querying the link status via telemetry interface, we don't want the
client to have to wait for multiple seconds for a reply. Therefore use
"rte_eth_link_get_nowait()" rather than "rte_eth_link_get()" in the
telemetry callback.
Fixes:
c190daedb9b1 ("ethdev: add telemetry callbacks")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
David Marchand [Fri, 15 Jan 2021 13:40:21 +0000 (14:40 +0100)]
net/fm10k: remove vector config
This config item is not exposed anymore now that we removed make
support.
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
David Marchand [Fri, 15 Jan 2021 13:40:20 +0000 (14:40 +0100)]
net/i40e: remove vector config
This config item is not exposed anymore now that we removed make
support.
Note: all architectures provide vectorised functions.
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
David Marchand [Fri, 15 Jan 2021 13:40:19 +0000 (14:40 +0100)]
net/hinic: restore vectorised code
Following make support removal, the vectorised code is not built
anymore, fix the build flag check.
Fixes:
3cc6ecfdfe85 ("build: remove makefiles")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:22 +0000 (12:21 +0200)]
net/mlx5: add GENEVE TLV option flow translation
The GENEVE TLV option matching flows must be created
using a translation function.
This function checks whether we already created a Devx
object for the matching and either creates the objects
or updates the reference counter.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:21 +0000 (12:21 +0200)]
net/mlx5: add GENEVE TLV option flow validation
This patch adds validation routine for the GENEVE
header TLV option.
The GENEVE TLV option match must include all fields
with full masks due to NIC does not support masking
on option class, type and length.
The option data length must be non zero and provided
data pattern should be zero neither due to hardware
limitations.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:20 +0000 (12:21 +0200)]
net/mlx5: create GENEVE TLV option management
Currently firmware supports the only TLV object per device
to match on the GENEVE header option.
This patch adds the simple TLV object management to the mlx5 PMD.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:19 +0000 (12:21 +0200)]
common/mlx5: create GENEVE TLV option object with DevX
TLV object is a special firmware maintained entity used
to support match on GENEVE header extension option.
The TLV object is created with DevX API and accepts
the option class, type and lehgth fields.
The class type and length fields are set using MLX5_SET
and the Devx object is created using mlx5 glue function.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:18 +0000 (12:21 +0200)]
common/mlx5: check GENEVE TLV support in HCA attributes
This is preparation step to support match on GENEVE TLV option.
In this Patch we add the HCA attributes that will allow
supporting GENEVE TLV option matching.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Viacheslav Ovsiienko [Sun, 17 Jan 2021 10:21:17 +0000 (12:21 +0200)]
app/testpmd: support GENEVE header option length
The patch adds the GENEVE rte flow option length support to
command line interpreter. The flow command with GENEVE
option items looks like:
flow create 0 ingress pattern eth / ipv4 / udp / geneve vni
is 100 optlen is 2 / end actions drop / end
The option length should be specified in 32-bit words, this
value specifies the all options length in the GENEVE header.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Viacheslav Ovsiienko [Sun, 17 Jan 2021 10:21:16 +0000 (12:21 +0200)]
app/testpmd: support GENEVE option item
The patch adds the GENEVE option rte flow item support to
command line interpreter. The flow command with GENEVE
option items looks like:
flow create 0 ingress pattern eth / ipv4 / udp / geneve vni is 100 /
geneve-opt class is 99 length is 1 type is 0 data is 0x669988 /
end actions drop / end
The option length should be specified in 32-bit words, this
value specifies the length of the data pattern/mask arrays (should be
multiplied by sizeof(uint32_t) to be expressed in bytes. If match
on the length itself is not needed the mask should be set to zero, in
this case length is used to specify the pattern/mask array lengths only.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Shiri Kuzin [Sun, 17 Jan 2021 10:21:15 +0000 (12:21 +0200)]
ethdev: introduce GENEVE header TLV option item
The Geneve tunneling protocol is designed to allow the
user to specify some data context on the packet.
The GENEVE TLV (Type-Length-Variable) Option
is the mean intended to present the user data.
In order to support GENEVE TLV Option the new rte_flow
item "rte_flow_item_geneve_opt" is added.
The new item contains the values and masks for the
following fields:
-option class
-option type
-length
-data
New item will be added to testpmd to support match and
raw encap/decap actions.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:28 +0000 (07:04 +0000)]
net/liquidio: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
9f1c00266d82 ("net/liquidio: add API to set MTU")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:27 +0000 (07:04 +0000)]
net/nfp: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU',
that perhaps impacts the cases of the jumbo frame related.
Fixes:
d4a27a3b092a ("nfp: add basic features")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:26 +0000 (07:04 +0000)]
net/hinic: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
254bd849b132 ("net/hinic: set jumbo frame offload flag")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:25 +0000 (07:04 +0000)]
net/enetc: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
5d5589b0c858 ("net/enetc: support MTU update and jumbo frames")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:24 +0000 (07:04 +0000)]
net/axgbe: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
b58d8781fa1f ("net/axgbe: support setting MTU")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:23 +0000 (07:04 +0000)]
net/cxgbe: fix jumbo frame flag condition
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
4b2eff452d2e ("cxgbe: enable jumbo frames")
Fixes:
0ec33be4c857 ("cxgbe: allow to change mtu")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:22 +0000 (07:04 +0000)]
net/ixgbe: fix jumbo frame flag condition
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition.
If the Ether overhead is larger than 18 when it supports VLAN tag,
that will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will normalize the boundary condition with 'RTE_ETHER_MTU'
and overhead even though current overhead is 18.
Fixes:
59d0ecdbf0e1 ("ethdev: MTU accessors")
Fixes:
95a27b3ba5f5 ("net/ixgbe: enable jumbo frame for VF")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:21 +0000 (07:04 +0000)]
net/thunderx: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
65d9804edc05 ("net/thunderx: support MTU configuration")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:20 +0000 (07:04 +0000)]
net/sfc: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports VLAN tag.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU',
that perhaps impacts the cases of the jumbo frame related.
Fixes:
ff6a1197c3b1 ("net/sfc: convert to new Rx offload API")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:19 +0000 (07:04 +0000)]
net/qede: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
200645ac7909 ("net/qede: set MTU")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:18 +0000 (07:04 +0000)]
net/octeontx2: fix jumbo frame flag condition for MTU
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
0e2efd02db58 ("net/octeontx2: add MTU set operation")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
Steve Yang [Mon, 18 Jan 2021 07:04:17 +0000 (07:04 +0000)]
net/octeontx: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
3151e6a687a3 ("net/octeontx: support MTU")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Harman Kalra <hkalra@marvell.com>
Steve Yang [Mon, 18 Jan 2021 07:04:16 +0000 (07:04 +0000)]
net/ipn3ke: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
70d6b7f550f4 ("net/ipn3ke: add representor")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Rosen Xu <rosen.xu@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:15 +0000 (07:04 +0000)]
net/ice: fix jumbo frame flag condition
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
84dc7a95a2d3 ("net/ice: enable flow director engine")
Fixes:
1b009275e2c8 ("net/ice: add Rx queue init in DCF")
Fixes:
ae2bdd0219cb ("net/ice: support MTU setting")
Fixes:
50370662b727 ("net/ice: support device and queue ops")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:14 +0000 (07:04 +0000)]
net/iavf: fix jumbo frame flag condition
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
3fd7a3719c66 ("net/avf: enable ops for MTU setting")
Fixes:
69dd4c3d0898 ("net/avf: enable queue and device")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:13 +0000 (07:04 +0000)]
net/i40e: fix jumbo frame flag condition
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
c1715402df8f ("i40evf: fix jumbo frame support")
Fixes:
43e5488c0ac6 ("net/i40e: support MTU configuration")
Fixes:
a778a1fa2e4e ("i40e: set up and initialize flow director")
Fixes:
c3ac7c5b0b8a ("net/i40e: convert to new Rx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:12 +0000 (07:04 +0000)]
net/hns3: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports dual VLAN tags.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'HSN3_DEFAULT_FRAME_LEN',
that perhaps impacts the cases of the jumbo frame related.
Fixes:
1f5ca0b460cd ("net/hns3: support some device operations")
Fixes:
a5475d61fa34 ("net/hns3: support VF")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Lijun Ou <oulijun@huawei.com>
Steve Yang [Mon, 18 Jan 2021 07:04:11 +0000 (07:04 +0000)]
net/e1000: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports VLAN tag.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
ef990fb56e55 ("net/e1000: convert to new Rx offloads API")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Jeff Guo <jia.guo@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:10 +0000 (07:04 +0000)]
net/dpaa2: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports VLAN tag.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
e16408499412 ("net/dpaa2: configure jumbo frames")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Steve Yang [Mon, 18 Jan 2021 07:04:09 +0000 (07:04 +0000)]
net/dpaa: fix jumbo frame flag condition for MTU set
The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
but the Ether overhead is larger than 18 when it supports VLAN tag.
That will cause the jumbo flag rx offload is wrong when MTU size is
'RTE_ETHER_MTU'.
This fix will change the boundary condition with 'RTE_ETHER_MTU' and
overhead, that perhaps impacts the cases of the jumbo frame related.
Fixes:
25f854197abc ("net/dpaa: support jumbo frames")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Steve Yang [Mon, 18 Jan 2021 07:04:08 +0000 (07:04 +0000)]
app/testpmd: fix max Rx packet length for VLAN packets
When the max rx packet length is smaller than the sum of mtu size and
ether overhead size, it should be enlarged, otherwise the VLAN packets
will be dropped.
Removed the rx_offloads assignment for jumbo frame during command line
parsing, and set the correct jumbo frame flag if MTU size is larger than
the default value 'RTE_ETHER_MTU' within 'init_config()'.
Fixes:
384161e00627 ("app/testpmd: adjust on the fly VLAN configuration")
Fixes:
35b2d13fd6fd ("net: add rte prefix to ether defines")
Fixes:
ce17eddefc20 ("ethdev: introduce Rx queue offloads API")
Fixes:
150c9ac2df13 ("app/testpmd: update Rx offload after setting MTU")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Steve Yang [Mon, 18 Jan 2021 07:04:07 +0000 (07:04 +0000)]
ethdev: fix max Rx packet length check
Ethdev is using default Ethernet overhead to decide if provided
'max_rx_pkt_len' value is bigger than max (non jumbo) MTU value,
and limits it to MAX if it is.
Since the application/driver used Ethernet overhead is different than
the ethdev one, check result is wrong.
If the driver is using Ethernet overhead bigger than the default one,
the provided 'max_rx_pkt_len' is trimmed down, and in the driver when
correct Ethernet overhead is used to convert back, the resulting MTU is
less than the intended one, causing some packets to be dropped.
Like,
app -> max_rx_pkt_len = 1500/*mtu*/ + 22/*overhead*/ = 1522
ethdev -> 1522 > 1518/*MAX*/; max_rx_pkt_len = 1518
driver -> MTU = 1518 - 22 = 1496
Packets with size 1497-1500 are dropped although intention is to be able
to send/receive them.
The fix is to make ethdev use the correct Ethernet overhead for port,
instead of default one.
Fixes:
59d0ecdbf0e1 ("ethdev: MTU accessors")
Cc: stable@dpdk.org
Signed-off-by: Steve Yang <stevex.yang@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Jiawen Wu [Fri, 15 Jan 2021 11:03:10 +0000 (19:03 +0800)]
doc: update for txgbe
Add txgbe PMD new features in release notes,
update user guide in txgbe.rst for flow API and traffic manager.
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Haiyue Wang [Fri, 15 Jan 2021 06:57:08 +0000 (14:57 +0800)]
net/iavf: adjust CRC statistics calculation
The AVF can support to enable / disable CRC strip, so it needs to adjust
the statistics calculation for ibytes according to offload setting.
Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Jeff Guo [Wed, 13 Jan 2021 14:05:17 +0000 (22:05 +0800)]
net/iavf: add PTYPE mapping for eCPRI
Until the new eCPRI PTYPE be added into the RTE lib, just mapping eCPRI
to the PTYPE of RTE_PTYPE_L4_UDP in iavf pmd.
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Jeff Guo [Wed, 13 Jan 2021 14:05:16 +0000 (22:05 +0800)]
net/ice: add PTYPE mapping for eCPRI
Until the new eCPRI PTYPE be added into the RTE lib, just mapping eCPRI
to the PTYPE of RTE_PTYPE_L4_UDP in ice pmd.
Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Ivan Malov [Wed, 6 Jan 2021 10:06:01 +0000 (13:06 +0300)]
common/sfc_efx/base: enhance field ID check in field set API
A field ID passed to the API may point to a gap in the array
of field descriptors. Turn down such invocations as improper.
Fixes:
370ed675a952 ("common/sfc_efx/base: support setting PPORT in match spec")
Cc: stable@dpdk.org
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Ivan Malov [Wed, 6 Jan 2021 10:06:00 +0000 (13:06 +0300)]
common/sfc_efx/base: fix MAE match spec class comparison API
The helper exits once it encounters a field which hasn't its
capability status reported by the FW. Handle the corner case
when the two mask-value pairs match for the field, which, in
the absence of capability information, is sufficient to deem
the class unaffected by the field. Explain this in a comment.
Fixes:
bb71f7e0a35a ("common/sfc_efx/base: add match specs class comparison API")
Cc: stable@dpdk.org
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Ivan Malov [Wed, 6 Jan 2021 10:05:59 +0000 (13:05 +0300)]
common/sfc_efx/base: fix MAE match spec validation helper
A particular FW version is aware of some set of match fields.
Depending on FW configuration and match specification type, a
known field may not necessarily be allowed to have a non-zero
mask. FW communicates such restrictions via field capabilities
MCDI. Newer FW may be aware of more fields. For such fields,
older FW simply does not report any capabilities.
A situation may occur when libefx is aware of a match field
which the FW is unaware of (eg., older FW), that is, FW does
not report capability status for this field. In this case,
libefx must consider such field as unsupported and demand
all-zeros mask for it when validating match specifications.
Currently, the helper in question simply exits and reports
that the specification is valid when it encounters a field
with no capability status available. This is clearly wrong.
Introduce the missing check to fix the problem.
Fixes:
34285fd0891d ("common/sfc_efx/base: add match spec validate API")
Cc: stable@dpdk.org
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>