@@ -5646,22 +5646,43 @@ bool mlx5e_tc_update_skb_nic(struct mlx5_cqe64 *cqe, struct sk_buff *skb)
5646
5646
0 , NULL );
5647
5647
}
5648
5648
5649
+ static struct mapping_ctx *
5650
+ mlx5e_get_priv_obj_mapping (struct mlx5e_priv * priv )
5651
+ {
5652
+ struct mlx5e_tc_table * tc ;
5653
+ struct mlx5_eswitch * esw ;
5654
+ struct mapping_ctx * ctx ;
5655
+
5656
+ if (is_mdev_switchdev_mode (priv -> mdev )) {
5657
+ esw = priv -> mdev -> priv .eswitch ;
5658
+ ctx = esw -> offloads .reg_c0_obj_pool ;
5659
+ } else {
5660
+ tc = mlx5e_fs_get_tc (priv -> fs );
5661
+ ctx = tc -> mapping ;
5662
+ }
5663
+
5664
+ return ctx ;
5665
+ }
5666
+
5649
5667
int mlx5e_tc_action_miss_mapping_get (struct mlx5e_priv * priv , struct mlx5_flow_attr * attr ,
5650
5668
u64 act_miss_cookie , u32 * act_miss_mapping )
5651
5669
{
5652
- struct mlx5_eswitch * esw = priv -> mdev -> priv .eswitch ;
5653
5670
struct mlx5_mapped_obj mapped_obj = {};
5671
+ struct mlx5_eswitch * esw ;
5654
5672
struct mapping_ctx * ctx ;
5655
5673
int err ;
5656
5674
5657
- ctx = esw -> offloads .reg_c0_obj_pool ;
5658
-
5675
+ ctx = mlx5e_get_priv_obj_mapping (priv );
5659
5676
mapped_obj .type = MLX5_MAPPED_OBJ_ACT_MISS ;
5660
5677
mapped_obj .act_miss_cookie = act_miss_cookie ;
5661
5678
err = mapping_add (ctx , & mapped_obj , act_miss_mapping );
5662
5679
if (err )
5663
5680
return err ;
5664
5681
5682
+ if (!is_mdev_switchdev_mode (priv -> mdev ))
5683
+ return 0 ;
5684
+
5685
+ esw = priv -> mdev -> priv .eswitch ;
5665
5686
attr -> act_id_restore_rule = esw_add_restore_rule (esw , * act_miss_mapping );
5666
5687
if (IS_ERR (attr -> act_id_restore_rule ))
5667
5688
goto err_rule ;
@@ -5676,10 +5697,9 @@ int mlx5e_tc_action_miss_mapping_get(struct mlx5e_priv *priv, struct mlx5_flow_a
5676
5697
void mlx5e_tc_action_miss_mapping_put (struct mlx5e_priv * priv , struct mlx5_flow_attr * attr ,
5677
5698
u32 act_miss_mapping )
5678
5699
{
5679
- struct mlx5_eswitch * esw = priv -> mdev -> priv .eswitch ;
5680
- struct mapping_ctx * ctx ;
5700
+ struct mapping_ctx * ctx = mlx5e_get_priv_obj_mapping (priv );
5681
5701
5682
- ctx = esw -> offloads . reg_c0_obj_pool ;
5683
- mlx5_del_flow_rules (attr -> act_id_restore_rule );
5702
+ if ( is_mdev_switchdev_mode ( priv -> mdev ))
5703
+ mlx5_del_flow_rules (attr -> act_id_restore_rule );
5684
5704
mapping_remove (ctx , act_miss_mapping );
5685
5705
}
0 commit comments