#
7f6e276b |
| 19-Oct-2022 |
Michael Savisko <michaelsav@nvidia.com> |
net/mlx5: support flow action send to kernel
Introduce mlx5_get_send_to_kernel_priority() function which returns value of priority which must be used to jump back to table 0 in order to send traffic
net/mlx5: support flow action send to kernel
Introduce mlx5_get_send_to_kernel_priority() function which returns value of priority which must be used to jump back to table 0 in order to send traffic to kernel. This function returns lowest priority.
Add flow_dv_translate_action_send_to_kernel() function which will allocate rdma-core send_to_kernel action object. Called from flow_dv_translate().
Fail translation of RTE_FLOW_ACTION_TYPE_SEND_TO_KERNEL action in HW steering.
Signed-off-by: Michael Savisko <michaelsav@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
4df7f801 |
| 13-Oct-2022 |
Dong Zhou <dongzhou@nvidia.com> |
net/mlx5: fix thread workspace memory leak
The thread workspace push/pop should be paired. In the "flow_list_create" routine, if error happened the workspace pop was missed. This patch shares the wo
net/mlx5: fix thread workspace memory leak
The thread workspace push/pop should be paired. In the "flow_list_create" routine, if error happened the workspace pop was missed. This patch shares the workspace pop for all return paths.
Fixes: 0064bf431899 ("net/mlx5: fix nested flow creation") Cc: stable@dpdk.org
Signed-off-by: Dong Zhou <dongzhou@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
530dc580 |
| 17-Sep-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix meter ID tag for meter hierarchy
Currently, when flow usese meter hierarchy, a tag action is always applied to set the first meter's meter id, so as to update the first meter's drop co
net/mlx5: fix meter ID tag for meter hierarchy
Currently, when flow usese meter hierarchy, a tag action is always applied to set the first meter's meter id, so as to update the first meter's drop count. But it's not considered if first meter doesn't have drop count.
This patch fixes it, that in hierarchy, if the first meter doesn't have drop count, no need to add the meter id tag action. No change for non-hierarchy meter.
Fixes: e8146c63 ("net/mlx5: support represented port item in flow rules") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
ca7e6051 |
| 17-Sep-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: limit meter flow when matching all ports
If there's no param in represented_port item, it will be treated as matching all ports by default. But there's some limitation when using it with m
net/mlx5: limit meter flow when matching all ports
If there's no param in represented_port item, it will be treated as matching all ports by default. But there's some limitation when using it with meter hierarchy.
This patch adds the limitation that when matching all ports, the meter hierarchy should not contain any meter having drop count.
Fixes: e8146c63 ("net/mlx5: support represented port item in flow rules") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
33d506b9 |
| 17-Sep-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix meter hierarchy with represented port item
There is a new item type represented_port, and currently it will fail when using meter hierarchy in flow using represented_port match.
This
net/mlx5: fix meter hierarchy with represented port item
There is a new item type represented_port, and currently it will fail when using meter hierarchy in flow using represented_port match.
This patch fixes this fail by adding support for represented_port item in meter hierarchy flow split.
Fixes: e8146c63 ("net/mlx5: support represented port item in flow rules") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
92b3c68e |
| 19-Jun-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix metering on E-Switch Manager
When meter is used by E-Switch Manager port, there's an error that cannot get correct port ID.
This patch fixes this by using specific parsing process to
net/mlx5: fix metering on E-Switch Manager
When meter is used by E-Switch Manager port, there's an error that cannot get correct port ID.
This patch fixes this by using specific parsing process to get port ID for E-Switch Manager.
Fixes: 3c481324baf3 ("net/mlx5: fix meter flow direction check") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
57d6a458 |
| 17-Jun-2022 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix RSS expansion for patterns with ICMP item
MLX5 PMD RSS expansion implementation added L4 UDP or TCP headers after ICMP. For example: ETH / IPv4 / ICMP expanded into ETH / IPv4 / ICMP
net/mlx5: fix RSS expansion for patterns with ICMP item
MLX5 PMD RSS expansion implementation added L4 UDP or TCP headers after ICMP. For example: ETH / IPv4 / ICMP expanded into ETH / IPv4 / ICMP / {UDP | TCP} ETH / IPv6 / ICMPv6 expanded into ETH / IPv6 / ICMPv6 / {UDP | TCP}
The patch updates PMD expansion scheme to handle ICMP and ICMPv6 types as non-expandable for RSS.
Fixes: c7870bfe09dc ("ethdev: move RSS expansion code to mlx5 driver") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
6431068d |
| 07-Jun-2022 |
Sean Zhang <xiazhang@nvidia.com> |
net/mlx5: support field modification in meter rules
This patch introduces MODIFY_FIELD action support in meter. User can create meter policy with MODIFY_FIELD action in green/yellow action.
For exa
net/mlx5: support field modification in meter rules
This patch introduces MODIFY_FIELD action support in meter. User can create meter policy with MODIFY_FIELD action in green/yellow action.
For example:
testpmd> add port meter policy 0 21 g_actions modify_field op set dst_type ipv4_ecn src_type value src_value 3 width 2 / ...
Signed-off-by: Sean Zhang <xiazhang@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
fb96caa5 |
| 02-Jun-2022 |
Raja Zidane <rzidane@nvidia.com> |
net/mlx5: support ESP item on Windows
ESP item is not supported on Windows, yet it is expanded from the expansion graph when trying to create default flow to RSS all packets.
Support ESP item match
net/mlx5: support ESP item on Windows
ESP item is not supported on Windows, yet it is expanded from the expansion graph when trying to create default flow to RSS all packets.
Support ESP item match (without ability to match on SPI field on Windows). Split ESP validation per OS.
Signed-off-by: Raja Zidane <rzidane@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
18ca4a4e |
| 12-May-2022 |
Raja Zidane <rzidane@nvidia.com> |
net/mlx5: support ESP SPI match and RSS hash
In packets with ESP header, the inner IP will be encrypted, and its fields cannot be used for RSS hashing. So, ESP packets can be hashed only by the oute
net/mlx5: support ESP SPI match and RSS hash
In packets with ESP header, the inner IP will be encrypted, and its fields cannot be used for RSS hashing. So, ESP packets can be hashed only by the outer IP layer. So, when using RSS on ESP packets, hashing may not be efficient, because the fields used by the hash functions are only the outer IPs, causing all traffic belonging to all tunnels between a given pair of GWs to land on one core. Adding the SPI hash field can extend the spreading of IPsec packets.
Signed-off-by: Raja Zidane <rzidane@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
1b0037b1 |
| 10-Apr-2022 |
Michael Baum <michaelba@nvidia.com> |
net/mlx5: fix setting flags to external Rx queue
The flow_drv_rxq_flags_set sets the Rx queue flags (Mark/Flag and Tunnel Ptypes) according to the device flow.
It tries to get the RxQ control struc
net/mlx5: fix setting flags to external Rx queue
The flow_drv_rxq_flags_set sets the Rx queue flags (Mark/Flag and Tunnel Ptypes) according to the device flow.
It tries to get the RxQ control structure to update its ptype. However, external RxQs don't have control structure to update and it may cause a crash.
This patch add check whether this Queue is external.
Fixes: 311b17e669ab ("net/mlx5: support queue/RSS actions for external Rx queue") Cc: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
4fa1452b |
| 06-Apr-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix counter in non-termination meter
In rte_flow, if a counter action is before a meter which has non-termination policy, the counter value only includes packets not being dropped.
This p
net/mlx5: fix counter in non-termination meter
In rte_flow, if a counter action is before a meter which has non-termination policy, the counter value only includes packets not being dropped.
This patch fixes this issue by differentiating the order of counter and non-termination meter: 1. counter + meter, counts all packets hitting this flow. 2. meter + counter, only counts packets not being dropped.
Fixes: 51ec04dc7bcf ("net/mlx5: connect meter policy to created flows") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
04c0d3f2 |
| 07-Mar-2022 |
Jiawei Wang <jiaweiw@nvidia.com> |
net/mlx5: fix port matching in sample flow rule
If there are an explicit port match and sample action in the same flow, mlx5 PMD pushes the explicit port match in the prefix subflow, and uses the ta
net/mlx5: fix port matching in sample flow rule
If there are an explicit port match and sample action in the same flow, mlx5 PMD pushes the explicit port match in the prefix subflow, and uses the tag item match in the suffix subflow.
The explicit port match was translated into source vport match so the sample suffix subflow lost this match after flow split.
This patch copies the explicit port match to the sample suffix subflow, and the latter gets the correct source vport value in the flow matcher.
Fixes: b4c0ddbfcc58 ("net/mlx5: split sample flow into two sub-flows") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
0f845cc7 |
| 10-Mar-2022 |
Jiawei Wang <jiaweiw@nvidia.com> |
net/mlx5: fix implicit tag insertion with sample action
A flow rule with sample action was split into two sub-flows, and the implicit tag action with unique id was added in the prefix sub-flow, the
net/mlx5: fix implicit tag insertion with sample action
A flow rule with sample action was split into two sub-flows, and the implicit tag action with unique id was added in the prefix sub-flow, the suffix sub-flow used the tag item to match with that unique id, and the implicit set tag action was inserted next to the sample action.
While there's either PUSH VLAN action or ENCAP action preceding the sample action, implicit set tag action was added after PUSH VLAN or ENCAP actions, causing flow creation failure due to rdma-core does not support this action order.
This patch ensures the implicit set tag action is inserted before either PUSH VLAN or encap action (if any) in the prefix sub-flow.
Fixes: 6a951567c159 ("net/mlx5: support E-Switch mirroring and jump in one flow") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
9a726360 |
| 09-Mar-2022 |
Jiawei Wang <jiaweiw@nvidia.com> |
net/mlx5: fix sample flow action on trusted device
A flow rule with sample action will be split into two sub flows, and a tag action was added implicitly in the sample prefix sub flow, the reserved
net/mlx5: fix sample flow action on trusted device
A flow rule with sample action will be split into two sub flows, and a tag action was added implicitly in the sample prefix sub flow, the reserved metadata regC index was used for this tag action.
The reserved metadata regC was shared with metering action, for ConnectX-5 trusted device (VF/SF), the reserved metadata regC was invalid since PF only supported the legacy metering.
This patch adds the checking for the tag index and back to use the application tag if a failure happened.
Fixes: a9b6ea45bed6 ("net/mlx5: fix tag ID conflict with sample action") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
71adf25d |
| 02-Mar-2022 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix flex item availability
Flex item availability is restricted to BlueField-2 and BlueField-3 PF ports.
The patch validates port type compliance before proceeding to flex item creation.
net/mlx5: fix flex item availability
Flex item availability is restricted to BlueField-2 and BlueField-3 PF ports.
The patch validates port type compliance before proceeding to flex item creation.
Fixes: db25cadc0887 ("net/mlx5: add flex item operations") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
9267617b |
| 02-Mar-2022 |
Shun Hao <shunh@nvidia.com> |
net/mlx5: fix meter policy creation assert
The meter policy creation doesn't belong to flow rule creation process, so thread workspace was not initialized and there will be assert error when using i
net/mlx5: fix meter policy creation assert
The meter policy creation doesn't belong to flow rule creation process, so thread workspace was not initialized and there will be assert error when using it.
This patch removes the incorrect using of thread workspace in meter policy creation, and adds a flag in policy instead. When creating flow rule, can use the flag to set the mark flag in thread workspace.
Fixes: 082becbf1f35 ("net/mlx5: fix mark enabling for Rx") Cc: stable@dpdk.org
Signed-off-by: Shun Hao <shunh@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
6ae5c238 |
| 01-Mar-2022 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix next protocol RSS expansion
RSS expansion scheme has 2 operational modes: default and specific. The default mode expands into all valid options for a given network layer. For example,
net/mlx5: fix next protocol RSS expansion
RSS expansion scheme has 2 operational modes: default and specific. The default mode expands into all valid options for a given network layer. For example, Ethernet expands by default into VLAN, IPv4 and IPv6, L3 expands into TCP and UDP, etc. The specific mode expands according to flow item next protocol configuration provided by the item spec and mask parameters. There are 3 outcomes for the specific expansion: 1. Back to default – that is the case when result of (spec & mask) allows all possibilities. For example: eth type mask 0 type spec 0 2. No results – in that case item configuration has no valid expansion. For example: eth type mask 0xffff type spec 101 3. Direct - In that case flow item mask and spec configuration return valid expansion option. Example: eth type mask 0x0fff type spec 0x0800.
Current PMD expands flow items with explicit spec and mask configuration into the Direct(3) or No results (2). Default expansions were handled as No results.
Fixes: f3f1f576f438 ("net/mlx5: fix RSS expansion with explicit next protocol") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
d16ec684 |
| 01-Mar-2022 |
Gregory Etelson <getelson@nvidia.com> |
net/mlx5: fix inet IPIP protocol type
Fix typo in INET IPIP protocol macro.
Fixes: f3f1f576f438 ("net/mlx5: fix RSS expansion with explicit next protocol") Cc: stable@dpdk.org
Signed-off-by: Grego
net/mlx5: fix inet IPIP protocol type
Fix typo in INET IPIP protocol macro.
Fixes: f3f1f576f438 ("net/mlx5: fix RSS expansion with explicit next protocol") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
311b17e6 |
| 24-Feb-2022 |
Michael Baum <michaelba@nvidia.com> |
net/mlx5: support queue/RSS actions for external Rx queue
Add support queue/RSS action for external Rx queue. In indirection table creation, the queue index will be taken from mapping array.
This f
net/mlx5: support queue/RSS actions for external Rx queue
Add support queue/RSS action for external Rx queue. In indirection table creation, the queue index will be taken from mapping array.
This feature supports neither LRO nor Hairpin.
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
c06f77ae |
| 24-Feb-2022 |
Michael Baum <michaelba@nvidia.com> |
net/mlx5: optimize queue type checks
The RxQ/TxQ control structure has a field named type. This type is enum with values for standard and hairpin. The use of this field is to check whether the queue
net/mlx5: optimize queue type checks
The RxQ/TxQ control structure has a field named type. This type is enum with values for standard and hairpin. The use of this field is to check whether the queue is of the hairpin type or standard.
This patch replaces it with a boolean variable that saves whether it is a hairpin.
Signed-off-by: Michael Baum <michaelba@nvidia.com> Acked-by: Matan Azrad <matan@nvidia.com>
show more ...
|
#
5c4d4917 |
| 25-Feb-2022 |
Sean Zhang <xiazhang@nvidia.com> |
net/mlx5: support matching GRE optional fields
This patch adds matching on the optional fields (checksum/key/sequence) of GRE header. The matching on checksum and sequence fields requests support fr
net/mlx5: support matching GRE optional fields
This patch adds matching on the optional fields (checksum/key/sequence) of GRE header. The matching on checksum and sequence fields requests support from rdma-core with the capability of misc5 and tunnel_header 0-3.
For patterns without checksum and sequence specified, keep using misc for matching as before, but for patterns with checksum or sequence, validate capability first and then use misc5 for the matching.
Signed-off-by: Sean Zhang <xiazhang@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
7ab3962d |
| 24-Feb-2022 |
Suanming Mou <suanmingm@nvidia.com> |
net/mlx5: add indirect HW steering action
HW steering can support indirect action as well. With indirect action, the flow can be created with more flexible shared RSS action selection. This will can
net/mlx5: add indirect HW steering action
HW steering can support indirect action as well. With indirect action, the flow can be created with more flexible shared RSS action selection. This will can save the action template with different RSS actions.
This commit adds the flow queue operation callback for: rte_flow_async_action_handle_create(); rte_flow_async_action_handle_destroy(); rte_flow_async_action_handle_update();
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
3a2f674b |
| 24-Feb-2022 |
Suanming Mou <suanmingm@nvidia.com> |
net/mlx5: add queue and RSS HW steering action
This commit adds the queue and RSS action. Similar to the jump action, dynamic ones will be added to the action construct list.
Due to the queue and R
net/mlx5: add queue and RSS HW steering action
This commit adds the queue and RSS action. Similar to the jump action, dynamic ones will be added to the action construct list.
Due to the queue and RSS action in template should not be destroyed during port restart, the actions are created with standalone indirect table as indirect action does. When port stops, detaches the indirect table from action, when port starts, attaches the indirect table back to the action.
One more change is made to accelerate the action creation. Currently the mlx5_hrxq_get() function returns the object index instead of object pointer. This introduced an extra converting the index to the object by calling mlx5_ipool_get() in most of the case. And that extra converting hurts multi-thread performance since mlx5_ipool_get() uses the global lock inside. As the hash Rx queue object itself also contains the index, returns the object directly will achieve better performance without the global lock.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
#
08dfff78 |
| 24-Feb-2022 |
Suanming Mou <suanmingm@nvidia.com> |
net/mlx5: add flow flush
In case port is being stopped, all created flows should be flushed. This commit adds the flow flush helper function.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acke
net/mlx5: add flow flush
In case port is being stopped, all created flows should be flushed. This commit adds the flow flush helper function.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|