Skip to content

Commit d11afc2

Browse files
ozshlomoSaeed Mahameed
authored andcommitted
net/mlx5e: Propagate the filter's net device to mlx5e structures
Propagate the filter's net_device parameter to the tc flower parsed attributes structure so that it can later be used in tunnel decap offloading sequences. Pre-step for replacing egdev logic with the indirect block notification mechanism. Signed-off-by: Oz Shlomo <[email protected]> Reviewed-by: Eli Britstein <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 71d82d2 commit d11afc2

File tree

1 file changed

+19
-7
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+19
-7
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ struct mlx5e_tc_flow {
9696

9797
struct mlx5e_tc_flow_parse_attr {
9898
struct ip_tunnel_info tun_info;
99+
struct net_device *filter_dev;
99100
struct mlx5_flow_spec spec;
100101
int num_mod_hdr_actions;
101102
void *mod_hdr_actions;
@@ -3054,10 +3055,6 @@ mlx5e_alloc_flow(struct mlx5e_priv *priv, int attr_size,
30543055
flow->flags = flow_flags;
30553056
flow->priv = priv;
30563057

3057-
err = parse_cls_flower(priv, flow, &parse_attr->spec, f);
3058-
if (err)
3059-
goto err_free;
3060-
30613058
*__flow = flow;
30623059
*__parse_attr = parse_attr;
30633060

@@ -3073,6 +3070,7 @@ static int
30733070
mlx5e_add_fdb_flow(struct mlx5e_priv *priv,
30743071
struct tc_cls_flower_offload *f,
30753072
u16 flow_flags,
3073+
struct net_device *filter_dev,
30763074
struct mlx5e_tc_flow **__flow)
30773075
{
30783076
struct netlink_ext_ack *extack = f->common.extack;
@@ -3086,6 +3084,11 @@ mlx5e_add_fdb_flow(struct mlx5e_priv *priv,
30863084
&parse_attr, &flow);
30873085
if (err)
30883086
goto out;
3087+
parse_attr->filter_dev = filter_dev;
3088+
flow->esw_attr->parse_attr = parse_attr;
3089+
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec, f);
3090+
if (err)
3091+
goto err_free;
30893092

30903093
flow->esw_attr->chain = f->common.chain_index;
30913094
flow->esw_attr->prio = TC_H_MAJ(f->common.prio) >> 16;
@@ -3116,6 +3119,7 @@ static int
31163119
mlx5e_add_nic_flow(struct mlx5e_priv *priv,
31173120
struct tc_cls_flower_offload *f,
31183121
u16 flow_flags,
3122+
struct net_device *filter_dev,
31193123
struct mlx5e_tc_flow **__flow)
31203124
{
31213125
struct netlink_ext_ack *extack = f->common.extack;
@@ -3134,6 +3138,11 @@ mlx5e_add_nic_flow(struct mlx5e_priv *priv,
31343138
if (err)
31353139
goto out;
31363140

3141+
parse_attr->filter_dev = filter_dev;
3142+
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec, f);
3143+
if (err)
3144+
goto err_free;
3145+
31373146
err = parse_tc_nic_actions(priv, f->exts, parse_attr, flow, extack);
31383147
if (err)
31393148
goto err_free;
@@ -3159,6 +3168,7 @@ static int
31593168
mlx5e_tc_add_flow(struct mlx5e_priv *priv,
31603169
struct tc_cls_flower_offload *f,
31613170
int flags,
3171+
struct net_device *filter_dev,
31623172
struct mlx5e_tc_flow **flow)
31633173
{
31643174
struct mlx5_eswitch *esw = priv->mdev->priv.eswitch;
@@ -3171,9 +3181,11 @@ mlx5e_tc_add_flow(struct mlx5e_priv *priv,
31713181
return -EOPNOTSUPP;
31723182

31733183
if (esw && esw->mode == SRIOV_OFFLOADS)
3174-
err = mlx5e_add_fdb_flow(priv, f, flow_flags, flow);
3184+
err = mlx5e_add_fdb_flow(priv, f, flow_flags,
3185+
filter_dev, flow);
31753186
else
3176-
err = mlx5e_add_nic_flow(priv, f, flow_flags, flow);
3187+
err = mlx5e_add_nic_flow(priv, f, flow_flags,
3188+
filter_dev, flow);
31773189

31783190
return err;
31793191
}
@@ -3196,7 +3208,7 @@ int mlx5e_configure_flower(struct net_device *dev, struct mlx5e_priv *priv,
31963208
goto out;
31973209
}
31983210

3199-
err = mlx5e_tc_add_flow(priv, f, flags, &flow);
3211+
err = mlx5e_tc_add_flow(priv, f, flags, dev, &flow);
32003212
if (err)
32013213
goto out;
32023214

0 commit comments

Comments
 (0)