net/mlx5: fix the green color policy RSS queues overwritten
Checks
Commit Message
Both green policy and yellow policy could support RSS actions
simultaneous, the Rx queues configuration may be different between
them while the other fields should be the same.
When the only green color policy was supported in the past, the
queues copied and saved in the temporary workspace were used. Since
the yellow support was added, the queues stored in the thread
workspace would be overwritten by the yellow color policy. The flow
rule created using a meter with such a policy would have the same
RSS distribution for both green and yellow packets.
By using the meter action containers RSS information instead of the
workspace RSS, this overwritten can be prevented.
Fixes: b38a12272b3a ("net/mlx5: split meter color policy handling")
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
drivers/net/mlx5/mlx5_flow.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
Hi,
> -----Original Message-----
> From: Bing Zhao <bingz@nvidia.com>
> Sent: Thursday, July 29, 2021 7:04 PM
> To: Slava Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad
> <matan@nvidia.com>
> Cc: dev@dpdk.org; Ori Kam <orika@nvidia.com>; Raslan Darawsheh
> <rasland@nvidia.com>; NBU-Contact-Thomas Monjalon
> <thomas@monjalon.net>
> Subject: [PATCH] net/mlx5: fix the green color policy RSS queues overwritten
>
> Both green policy and yellow policy could support RSS actions simultaneous,
> the Rx queues configuration may be different between them while the other
> fields should be the same.
>
> When the only green color policy was supported in the past, the queues
> copied and saved in the temporary workspace were used. Since the yellow
> support was added, the queues stored in the thread workspace would be
> overwritten by the yellow color policy. The flow rule created using a meter
> with such a policy would have the same RSS distribution for both green and
> yellow packets.
>
> By using the meter action containers RSS information instead of the
> workspace RSS, this overwritten can be prevented.
>
> Fixes: b38a12272b3a ("net/mlx5: split meter color policy handling")
>
> Signed-off-by: Bing Zhao <bingz@nvidia.com>
> Acked-by: Matan Azrad <matan@nvidia.com>
> ---
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
@@ -4710,7 +4710,7 @@ get_meter_sub_policy(struct rte_eth_dev *dev,
uint8_t fate = final_policy->act_cnt[i].fate_action;
if (fate == MLX5_FLOW_FATE_SHARED_RSS) {
- const void *rss_act =
+ const struct rte_flow_action_rss *rss_act =
final_policy->act_cnt[i].rss->conf;
struct rte_flow_action rss_actions[2] = {
[0] = {
@@ -4746,6 +4746,9 @@ get_meter_sub_policy(struct rte_eth_dev *dev,
rss_desc_v[i].tunnel =
!!(dev_flow.handle->layers &
MLX5_FLOW_LAYER_TUNNEL);
+ /* Use the RSS queues in the containers. */
+ rss_desc_v[i].queue =
+ (uint16_t *)(uintptr_t)rss_act->queue;
rss_desc[i] = &rss_desc_v[i];
} else if (fate == MLX5_FLOW_FATE_QUEUE) {
/* This is queue action. */