#
3e455a97 |
| 18-Jul-2021 |
Lior Margalit <lmargalit@nvidia.com> |
net/mlx5: fix RSS expansion for GTP
The flow did not expand correctly when it included a GTP item.
Added GTP node to the expansion graph as possible next node after IPv4/IPv6 UDP node.
Fixes: 592f
net/mlx5: fix RSS expansion for GTP
The flow did not expand correctly when it included a GTP item.
Added GTP node to the expansion graph as possible next node after IPv4/IPv6 UDP node.
Fixes: 592f05b29a25 ("net/mlx5: add RSS flow action") Cc: stable@dpdk.org
Signed-off-by: Lior Margalit <lmargalit@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
6d5735c1 |
| 20-Jul-2021 |
Alexander Kozyrev <akozyrev@nvidia.com> |
net/mlx5: fix meta register conversion for extensive mode
Register C is used in the extensive metadata mode number 1 and its width can vary from 0 to 32 bits depending on the kernel usage of it.
Th
net/mlx5: fix meta register conversion for extensive mode
Register C is used in the extensive metadata mode number 1 and its width can vary from 0 to 32 bits depending on the kernel usage of it.
There are several issues associated with this mode (dv_xmeta_en=1): 1. The metadata setting assumes that the width is always 16 bits, which is the most common case in this mode. Use the proper mask. 2. The same is true for the modify_field Flow API. 16-bits width is hardcoded for dv_xmeta_en=1. Switch to the register C mask width. 3. Metadata is stored in the most significant bits in CQE in this mode because the registers copy code was not updated during the metadata conversion to the big-endian format. Update this code to avoid shifting the metadata in the datapath.
Fixes: b57e414b48 ("net/mlx5: convert meta register to big-endian") Cc: stable@dpdk.org
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
4b7bf3ff |
| 21-Jul-2021 |
Bing Zhao <bingz@nvidia.com> |
net/mlx5: support yellow in meter policy validation
In the previous implementation, the policy for yellow color was not supported. The action validation for yellow was skipped.
Since the yellow col
net/mlx5: support yellow in meter policy validation
In the previous implementation, the policy for yellow color was not supported. The action validation for yellow was skipped.
Since the yellow color policy needs to be supported, the validation should also be done for the yellow color. In the meanwhile, due to the fact that color policies of one meter should be used for the same flow(s), the domains supported of both colors should be the same. If both of the colors have RSS as the termination actions, except the queues, all other parameters of RSS should be the same.
Signed-off-by: Bing Zhao <bingz@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
b38a1227 |
| 21-Jul-2021 |
Bing Zhao <bingz@nvidia.com> |
net/mlx5: split meter color policy handling
If the fate action is either RSS or Queue of a meter policy, the action will only be created in the flow splitting stage. With queue as the fate action, o
net/mlx5: split meter color policy handling
If the fate action is either RSS or Queue of a meter policy, the action will only be created in the flow splitting stage. With queue as the fate action, only one sub-policy is needed. And RSS will have more than one sub-policies if there is an expansion.
Since the RSS parameters are the same for both green and yellow colors except the queues, the expansion result will be unique. Even if only one color has the RSS action, the checking and possible expansion will be done then. For each sub-policy, the action rules need to be created separately on its own policy table.
Signed-off-by: Bing Zhao <bingz@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
0ed93c13 |
| 07-Jul-2021 |
Xiaoyu Min <jackmin@nvidia.com> |
net/mlx5: fix missing RSS expansion of IPv6 frag
IPV6_FRAG_EXT item is missed for RSS expansion which causes wrongly expanded flows: flow create 0 ingress pattern eth / ipv6 / udp dst is 250 / vxlan
net/mlx5: fix missing RSS expansion of IPv6 frag
IPV6_FRAG_EXT item is missed for RSS expansion which causes wrongly expanded flows: flow create 0 ingress pattern eth / ipv6 / udp dst is 250 / vxlan-gpe / ipv6 / ipv6_frag_ext / end actions rss level 2 types ip end / end
Different from other items, IPV6_FRAG_EXT hasn't next field because HW only support to do hash of UDP/TCP for non-fragment.
This MLX5_EXPANSION_IPV6_FRAG_EXT node in RSS expansion graph only helps RSS expansion function to locate right node in graph from which start to expand.
Fixes: 0e5a0d8f7556 ("net/mlx5: support match on IPv6 fragment extension") Cc: stable@dpdk.org
Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
1c4f7044 |
| 07-Jul-2021 |
Xiaoyu Min <jackmin@nvidia.com> |
net/mlx5: fix missing RSS expandable items
Some RSS expandable items are missing which leads to the expanded rte flow rules with wrong patterns.
Fix by adding missed items.
Fixes: d91093b9a2af ("n
net/mlx5: fix missing RSS expandable items
Some RSS expandable items are missing which leads to the expanded rte flow rules with wrong patterns.
Fix by adding missed items.
Fixes: d91093b9a2af ("net/mlx5: fix RSS pattern expansion") Cc: stable@dpdk.org
Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
f7c3f3c2 |
| 13-Jul-2021 |
Suanming Mou <suanmingm@nvidia.com> |
net/mlx5: adjust hash bucket size
With the new per core optimization to the list, the hash bucket size can be tuned to a more accurate number.
This commit adjusts the hash bucket size.
Signed-off-
net/mlx5: adjust hash bucket size
With the new per core optimization to the list, the hash bucket size can be tuned to a more accurate number.
This commit adjusts the hash bucket size.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
961b6774 |
| 13-Jul-2021 |
Matan Azrad <matan@nvidia.com> |
common/mlx5: add per-lcore cache to hash list utility
Using the mlx5 list utility object in the hlist buckets.
This patch moves the list utility object to the common utility, creates all the clone
common/mlx5: add per-lcore cache to hash list utility
Using the mlx5 list utility object in the hlist buckets.
This patch moves the list utility object to the common utility, creates all the clone operations for all the hlist instances in the driver.
Also adjust all the utility callbacks to be generic for both list and hlist.
Signed-off-by: Matan Azrad <matan@nvidia.com> Acked-by: Suanming Mou <suanmingm@nvidia.com>
show more ...
|
#
b4edeaf3 |
| 13-Jul-2021 |
Suanming Mou <suanmingm@nvidia.com> |
net/mlx5: replace flow list with indexed pool
The flow list is used to save the create flows and to be used only when port closes all the flows need to be flushed.
This commit takes advantage of th
net/mlx5: replace flow list with indexed pool
The flow list is used to save the create flows and to be used only when port closes all the flows need to be flushed.
This commit takes advantage of the index pool foreach operation to flush all the allocated flows.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
630a587b |
| 13-Jul-2021 |
Rongwei Liu <rongweil@nvidia.com> |
net/mlx5: support matching on VXLAN reserved field
This adds matching on the reserved field of VXLAN header (the last 8-bits). The capability from rdma-core is detected by creating a dummy matcher u
net/mlx5: support matching on VXLAN reserved field
This adds matching on the reserved field of VXLAN header (the last 8-bits). The capability from rdma-core is detected by creating a dummy matcher using misc5 when the device is probed.
For non-zero groups and FDB domain, the capability is detected from rdma-core, meanwhile for NIC domain group zero it's relying on the HCA_CAP from FW.
Signed-off-by: Rongwei Liu <rongweil@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> Acked-by: Raslan Darawsheh <rasland@nvidia.com>
show more ...
|
#
8e5c9fea |
| 06-Jul-2021 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: support meter hierarchy drop count
When using meter hierarchy with multiple meters, every meter may have drop counter, so a packet being set red color by one meter should be counted to tha
net/mlx5: support meter hierarchy drop count
When using meter hierarchy with multiple meters, every meter may have drop counter, so a packet being set red color by one meter should be counted to that specific meter only.
To support this, add tag action in the color rule so packet going to next new meter can have its meter id, so as to be counted to the correct drop counter in drop table.
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
50cc92dd |
| 06-Jul-2021 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: support meter action in meter policy
This makes the meter policy support meter action. So multiple meters can be chained as a meter hierarchy.
Only termination meter is allowed as the las
net/mlx5: support meter action in meter policy
This makes the meter policy support meter action. So multiple meters can be chained as a meter hierarchy.
Only termination meter is allowed as the last meter in a hierarchy, and there're two cases: 1. The last meter has non-RSS policy, can directly create sub-policy and color rules during each meter's policy creation. 2. The last meter has RSS policy, don't create sub-policy/rules when creating meter policy. Only when a RTE flow is using the meter hierarchy, will iterate all meters of the hierarchy and create needed sub- policies and color rules for them.
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
a26cc30f |
| 02-Jul-2021 |
Xiaoyu Min <jackmin@nvidia.com> |
net/mlx5: limit inner RSS expansion for MPLS
If user wants to do MPLS inner RSS and only provides pattern till MPLS without inner items [1], RSS expansion will expand flows into 13 sub-flows[2] whic
net/mlx5: limit inner RSS expansion for MPLS
If user wants to do MPLS inner RSS and only provides pattern till MPLS without inner items [1], RSS expansion will expand flows into 13 sub-flows[2] which is too many and it impacts flow insert rate, stack usage becomes large as well.
This expansion into 13 sub-flows seems not worthy of and it can be significantly reduced (i.e, 7 sub-flows [3]) by user providing at least one inner L2/L3 item [4].
[1]: pattern eth / ipv4 / udp / mpls / end actions rss type tcp udp ip end level 2 / end
[2]: eth / ipv4 / udp / mpls eth / ipv4 / udp / mpls / ipv4 eth / ipv4 / udp / mpls / ipv4 / udp eth / ipv4 / udp / mpls / ipv4 / tcp eth / ipv4 / udp / mpls / ipv6 eth / ipv4 / udp / mpls / ipv6 / udp eth / ipv4 / udp / mpls / ipv6 / tcp eth / ipv4 / udp / mpls / eth / ipv4 eth / ipv4 / udp / mpls / eth / ipv4 / udp eth / ipv4 / udp / mpls / eth / ipv4 / tcp eth / ipv4 / udp / mpls / eth / ipv6 eth / ipv4 / udp / mpls / eth / ipv6 / udp eth / ipv4 / udp / mpls / eth / ipv6 / tcp
[3]: eth / ipv4 / udp / mpls / eth eth / ipv4 / udp / mpls / eth / ipv4 / udp eth / ipv4 / udp / mpls / eth / ipv4 / tcp eth / ipv4 / udp / mpls / eth / ipv6 eth / ipv4 / udp / mpls / eth / ipv6 / udp eth / ipv4 / udp / mpls / eth / ipv6 / tcp
[4]: pattern eth / ipv4 / udp / mpls / eth / end actions rss type tcp udp ip level 2 / end
Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
84f4764c |
| 02-Jul-2021 |
Xiaoyu Min <jackmin@nvidia.com> |
net/mlx5: fix MPLS RSS expansion
MPLSoUDP and MPLSoGRE are supported by PMD from rte flow point of view.
RSS expansion doesn't support above but, instead, supports normal MPLS over L2, which actual
net/mlx5: fix MPLS RSS expansion
MPLSoUDP and MPLSoGRE are supported by PMD from rte flow point of view.
RSS expansion doesn't support above but, instead, supports normal MPLS over L2, which actually will be rejected by PMD.
This patch removes RSS expansion support of the MPLS over L2 and adds support of MPLSoUDP and MPLSoGRE.
In addition to above, support for eth over MPLS expansion is added too.
Fixes: a4a5cd21d20a ("net/mlx5: add flow MPLS item") Cc: stable@dpdk.org
Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
14ad99d7 |
| 02-Jul-2021 |
Xiaoyu Min <jackmin@nvidia.com> |
net/mlx5: remove unsupported flow item MPLS over IP
HW doesn't support match MPLS over IP traffic.
Remove related code.
Fixes: d1abe664ddde ("net/mlx5: add MPLS to Direct Verbs flow engine") Cc: s
net/mlx5: remove unsupported flow item MPLS over IP
HW doesn't support match MPLS over IP traffic.
Remove related code.
Fixes: d1abe664ddde ("net/mlx5: add MPLS to Direct Verbs flow engine") Cc: stable@dpdk.org
Signed-off-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
be548b9c |
| 30-Jun-2021 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix pattern expansion in RSS flow rules
Flow rule pattern may be implicitly expanded by the PMD if the rule has RSS flow action. The expansion adds network headers to the original pattern.
net/mlx5: fix pattern expansion in RSS flow rules
Flow rule pattern may be implicitly expanded by the PMD if the rule has RSS flow action. The expansion adds network headers to the original pattern. The new pattern lists all network levels that participate in the rule RSS action.
The patch validates that buffer for expanded pattern has enough bytes for new flow items.
Fixes: c7870bfe09dc ("ethdev: move RSS expansion code to mlx5 driver") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
5db9318f |
| 31-May-2021 |
Haifei Luo <haifeil@nvidia.com> |
net/mlx5: add more details to flow dump
Currently the flow dump provides few information about actions - just the pointers. Add implementations to display details for counter, modify_hdr and encap_d
net/mlx5: add more details to flow dump
Currently the flow dump provides few information about actions - just the pointers. Add implementations to display details for counter, modify_hdr and encap_decap actions.
For counter, the regular flow operation query is engaged and the counter content information is provided, including hits and bytes values.For modify_hdr, encap_and decap actions, the information stored in the ipool objects is dumped.
There are the formats of information presented in the dump: Counter: rec_type,id,hits,bytes Modify_hdr: rec_type,id,actions_number,actions Encap_decap: rec_type,id,buf
Signed-off-by: Haifei Luo <haifeil@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
3c481324 |
| 02-Jul-2021 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix meter flow direction check
When preparing prefix flow using ASO meter, if it's tx flow, need to make meter action the first one.
Currently the check of flow direction in switch domain
net/mlx5: fix meter flow direction check
When preparing prefix flow using ASO meter, if it's tx flow, need to make meter action the first one.
Currently the check of flow direction in switch domain is incorrect that it checks the flow dev port only.
This adds the fix for the check that if there's port_id match item in flow, use that port_id as src port to determine flow direction.
Fixes: c99b4f8bc2f1 ("net/mlx5: support ASO meter action") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
b3880af2 |
| 29-Jun-2021 |
Jiawei Wang <jiaweiw@nvidia.com> |
net/mlx5: fix representor ID check for sampling
The representor definition was introduced in the latest code. For non-representor port, like PF port, use the 0xffff instead of -1.
This patch update
net/mlx5: fix representor ID check for sampling
The representor definition was introduced in the latest code. For non-representor port, like PF port, use the 0xffff instead of -1.
This patch updates the representor id checking during splitting sample flow.
Fixes: cb95feefdd03 ("net/mlx5: support sub-function representor") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Xueming Li <xuemingl@nvidia.com>
show more ...
|
#
9f4a1923 |
| 23-Jun-2021 |
Li Zhang <lizh@nvidia.com> |
net/mlx5: fix meter policy with RSS action
When creating the meter sub-policy RSS rule, the RSS descriptor was used before its update. It also need update tunnel bit in RSS descriptor after flow tra
net/mlx5: fix meter policy with RSS action
When creating the meter sub-policy RSS rule, the RSS descriptor was used before its update. It also need update tunnel bit in RSS descriptor after flow translate.
Use it only when it is updated.
Fixes: ec962bad14e ("net/mlx5: fix metering cleanup on stop") Cc: stable@dpdk.org
Signed-off-by: Li Zhang <lizh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
fa06906a |
| 16-Jun-2021 |
Lior Margalit <lmargalit@nvidia.com> |
net/mlx5: fix IPIP multi-tunnel validation
A flow rule must not include multiple tunnel layers. An attempt to create such a rule, for example: testpmd> flow create .../ vxlan / eth / ipv4 proto is 4
net/mlx5: fix IPIP multi-tunnel validation
A flow rule must not include multiple tunnel layers. An attempt to create such a rule, for example: testpmd> flow create .../ vxlan / eth / ipv4 proto is 4 / end <actions> results in an unclear error.
In the current implementation there is a check for multiple IPIP tunnels, but not for combination of IPIP and a different kind of tunnel, such as VXLAN. The fix is to enhance the above check to use MLX5_FLOW_LAYER_TUNNEL that consists of all the tunnel masks. The error message will be "multiple tunnel not supported".
Fixes: 5e33bebdd8d3 ("net/mlx5: support IP-in-IP tunnel") Cc: stable@dpdk.org
Signed-off-by: Lior Margalit <lmargalit@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
d91093b9 |
| 27-May-2021 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix RSS pattern expansion
Flow rule pattern may be implicitly expanded by the PMD if the rule has RSS flow action. The expansion adds network headers to the original pattern. The new patte
net/mlx5: fix RSS pattern expansion
Flow rule pattern may be implicitly expanded by the PMD if the rule has RSS flow action. The expansion adds network headers to the original pattern. The new pattern lists all network levels that participate in the rule RSS action.
The patch fixes expanded pattern for cases when original pattern included meta items like MARK, TAG, META.
Fixes: c7870bfe09dc ("ethdev: move RSS expansion code to mlx5 driver") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
ec962bad |
| 13-May-2021 |
Li Zhang <lizh@nvidia.com> |
net/mlx5: fix metering cleanup on stop
A meter may handle Rx queue reference in his sub-policies. In stop operation, all the Rx queues are released.
Wrongly, the meter reference was not released be
net/mlx5: fix metering cleanup on stop
A meter may handle Rx queue reference in his sub-policies. In stop operation, all the Rx queues are released.
Wrongly, the meter reference was not released before destroying the Rx queues what cause an error in stop.
Release the Rx queues meter references in stop operation.
Fixes: fc6ce56bba05 ("net/mlx5: prepare sub-policy for flow with meter")
Signed-off-by: Li Zhang <lizh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
c751be10 |
| 12-May-2021 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix metering with flow ID 0
When getting meter flow_id bits, there's an issue that not handling correctly if flow_id is 0.
This fix this issue that when flow_id is 0, treat it as 1 bit.
net/mlx5: fix metering with flow ID 0
When getting meter flow_id bits, there's an issue that not handling correctly if flow_id is 0.
This fix this issue that when flow_id is 0, treat it as 1 bit.
Fixes: 83306d6c465a ("net/mlx5: fix meter statistics") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
c3e6adf0 |
| 12-May-2021 |
Jiawei Wang <jiaweiw@nvidia.com> |
net/mlx5: fix RSS flow item expansion for NVGRE
Currently RSS expansion only supports GRE and GRE KEY. This patch adds RSS expansion for NVGRE item so PMD can expand flow item correctly.
Fixes: ea8
net/mlx5: fix RSS flow item expansion for NVGRE
Currently RSS expansion only supports GRE and GRE KEY. This patch adds RSS expansion for NVGRE item so PMD can expand flow item correctly.
Fixes: ea81c1b816f7 ("net/mlx5: fix NVGRE matching") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Xiaoyu Min <jackmin@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|