Message ID | 20210729160405.161982-3-bingz@nvidia.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Raslan Darawsheh |
Headers | show |
Series | net/mlx5: fix the green color policy RSS queues overwritten | expand |
Context | Check | Description |
---|---|---|
ci/iol-mellanox-Performance | success | Performance Testing PASS |
ci/iol-testing | success | Testing PASS |
ci/iol-abi-testing | success | Testing PASS |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-intel-Functional | success | Functional Testing PASS |
ci/intel-Testing | success | Testing PASS |
ci/Intel-compilation | success | Compilation OK |
ci/github-robot | success | github build: passed |
ci/checkpatch | success | coding style OK |
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
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index f7f16883cd..0689e6d45d 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -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. */