netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net v2] net/sched: cls_api: Fix flow action initialization
@ 2022-07-19 12:24 Oz Shlomo
  2022-07-20  9:19 ` Baowen Zheng
  2022-07-20 10:00 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Oz Shlomo @ 2022-07-19 12:24 UTC (permalink / raw)
  To: netdev; +Cc: Baowen Zheng, Simon Horman, David S. Miller, Oz Shlomo, Roi Dayan

The cited commit refactored the flow action initialization sequence to
use an interface method when translating tc action instances to flow
offload objects. The refactored version skips the initialization of the
generic flow action attributes for tc actions, such as pedit, that allocate
more than one offload entry. This can cause potential issues for drivers
mapping flow action ids.

Populate the generic flow action fields for all the flow action entries.

Fixes: c54e1d920f04 ("flow_offload: add ops to tc_action_ops for flow action setup")
Signed-off-by: Oz Shlomo <ozsh@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>

----
v1 -> v2:
 - coalese the generic flow action fields initialization to a single loop
---
 net/sched/cls_api.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index c7a240232b8d..790d6809be81 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -3534,7 +3534,7 @@ int tc_setup_action(struct flow_action *flow_action,
 		    struct tc_action *actions[],
 		    struct netlink_ext_ack *extack)
 {
-	int i, j, index, err = 0;
+	int i, j, k, index, err = 0;
 	struct tc_action *act;
 
 	BUILD_BUG_ON(TCA_ACT_HW_STATS_ANY != FLOW_ACTION_HW_STATS_ANY);
@@ -3554,14 +3554,18 @@ int tc_setup_action(struct flow_action *flow_action,
 		if (err)
 			goto err_out_locked;
 
-		entry->hw_stats = tc_act_hw_stats(act->hw_stats);
-		entry->hw_index = act->tcfa_index;
 		index = 0;
 		err = tc_setup_offload_act(act, entry, &index, extack);
-		if (!err)
-			j += index;
-		else
+		if (err)
 			goto err_out_locked;
+
+		for (k = 0; k < index ; k++) {
+			entry[k].hw_stats = tc_act_hw_stats(act->hw_stats);
+			entry[k].hw_index = act->tcfa_index;
+		}
+
+		j += index;
+
 		spin_unlock_bh(&act->tcfa_lock);
 	}
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [PATCH net v2] net/sched: cls_api: Fix flow action initialization
  2022-07-19 12:24 [PATCH net v2] net/sched: cls_api: Fix flow action initialization Oz Shlomo
@ 2022-07-20  9:19 ` Baowen Zheng
  2022-07-20 10:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Baowen Zheng @ 2022-07-20  9:19 UTC (permalink / raw)
  To: Oz Shlomo, netdev; +Cc: Simon Horman, David S. Miller, Roi Dayan

>Subject: [PATCH net v2] net/sched: cls_api: Fix flow action initialization
>
>The cited commit refactored the flow action initialization sequence to use an
>interface method when translating tc action instances to flow offload objects.
>The refactored version skips the initialization of the generic flow action
>attributes for tc actions, such as pedit, that allocate more than one offload
>entry. This can cause potential issues for drivers mapping flow action ids.
>
>Populate the generic flow action fields for all the flow action entries.
>
>Fixes: c54e1d920f04 ("flow_offload: add ops to tc_action_ops for flow action
>setup")
>Signed-off-by: Oz Shlomo <ozsh@nvidia.com>
>Reviewed-by: Roi Dayan <roid@nvidia.com>
>
>----
>v1 -> v2:
> - coalese the generic flow action fields initialization to a single loop
>---
> net/sched/cls_api.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
>diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index
>c7a240232b8d..790d6809be81 100644
>--- a/net/sched/cls_api.c
>+++ b/net/sched/cls_api.c
>@@ -3534,7 +3534,7 @@ int tc_setup_action(struct flow_action *flow_action,
> 		    struct tc_action *actions[],
> 		    struct netlink_ext_ack *extack)
> {
>-	int i, j, index, err = 0;
>+	int i, j, k, index, err = 0;
> 	struct tc_action *act;
>
> 	BUILD_BUG_ON(TCA_ACT_HW_STATS_ANY !=
>FLOW_ACTION_HW_STATS_ANY); @@ -3554,14 +3554,18 @@ int
>tc_setup_action(struct flow_action *flow_action,
> 		if (err)
> 			goto err_out_locked;
>
>-		entry->hw_stats = tc_act_hw_stats(act->hw_stats);
>-		entry->hw_index = act->tcfa_index;
> 		index = 0;
> 		err = tc_setup_offload_act(act, entry, &index, extack);
>-		if (!err)
>-			j += index;
>-		else
>+		if (err)
> 			goto err_out_locked;
>+
>+		for (k = 0; k < index ; k++) {
>+			entry[k].hw_stats = tc_act_hw_stats(act->hw_stats);
>+			entry[k].hw_index = act->tcfa_index;
>+		}
>+
>+		j += index;
>+
> 		spin_unlock_bh(&act->tcfa_lock);
> 	}
>
>--
>1.8.3.1
-----------------------------------------------------
Thanks, this change looks good to me now.

Reviewed-by: Baowen Zheng <baowen.zheng@corigine.com>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net v2] net/sched: cls_api: Fix flow action initialization
  2022-07-19 12:24 [PATCH net v2] net/sched: cls_api: Fix flow action initialization Oz Shlomo
  2022-07-20  9:19 ` Baowen Zheng
@ 2022-07-20 10:00 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-07-20 10:00 UTC (permalink / raw)
  To: Oz Shlomo; +Cc: netdev, baowen.zheng, simon.horman, davem, roid

Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Tue, 19 Jul 2022 15:24:09 +0300 you wrote:
> The cited commit refactored the flow action initialization sequence to
> use an interface method when translating tc action instances to flow
> offload objects. The refactored version skips the initialization of the
> generic flow action attributes for tc actions, such as pedit, that allocate
> more than one offload entry. This can cause potential issues for drivers
> mapping flow action ids.
> 
> [...]

Here is the summary with links:
  - [net,v2] net/sched: cls_api: Fix flow action initialization
    https://git.kernel.org/netdev/net/c/c0f47c2822aa

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-07-20 10:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-19 12:24 [PATCH net v2] net/sched: cls_api: Fix flow action initialization Oz Shlomo
2022-07-20  9:19 ` Baowen Zheng
2022-07-20 10:00 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).