@@ -5655,22 +5655,43 @@ bool mlx5e_tc_update_skb_nic(struct mlx5_cqe64 *cqe, struct sk_buff *skb)
5655
5655
0 , NULL );
5656
5656
}
5657
5657
5658
+ static struct mapping_ctx *
5659
+ mlx5e_get_priv_obj_mapping (struct mlx5e_priv * priv )
5660
+ {
5661
+ struct mlx5e_tc_table * tc ;
5662
+ struct mlx5_eswitch * esw ;
5663
+ struct mapping_ctx * ctx ;
5664
+
5665
+ if (is_mdev_switchdev_mode (priv -> mdev )) {
5666
+ esw = priv -> mdev -> priv .eswitch ;
5667
+ ctx = esw -> offloads .reg_c0_obj_pool ;
5668
+ } else {
5669
+ tc = mlx5e_fs_get_tc (priv -> fs );
5670
+ ctx = tc -> mapping ;
5671
+ }
5672
+
5673
+ return ctx ;
5674
+ }
5675
+
5658
5676
int mlx5e_tc_action_miss_mapping_get (struct mlx5e_priv * priv , struct mlx5_flow_attr * attr ,
5659
5677
u64 act_miss_cookie , u32 * act_miss_mapping )
5660
5678
{
5661
- struct mlx5_eswitch * esw = priv -> mdev -> priv .eswitch ;
5662
5679
struct mlx5_mapped_obj mapped_obj = {};
5680
+ struct mlx5_eswitch * esw ;
5663
5681
struct mapping_ctx * ctx ;
5664
5682
int err ;
5665
5683
5666
- ctx = esw -> offloads .reg_c0_obj_pool ;
5667
-
5684
+ ctx = mlx5e_get_priv_obj_mapping (priv );
5668
5685
mapped_obj .type = MLX5_MAPPED_OBJ_ACT_MISS ;
5669
5686
mapped_obj .act_miss_cookie = act_miss_cookie ;
5670
5687
err = mapping_add (ctx , & mapped_obj , act_miss_mapping );
5671
5688
if (err )
5672
5689
return err ;
5673
5690
5691
+ if (!is_mdev_switchdev_mode (priv -> mdev ))
5692
+ return 0 ;
5693
+
5694
+ esw = priv -> mdev -> priv .eswitch ;
5674
5695
attr -> act_id_restore_rule = esw_add_restore_rule (esw , * act_miss_mapping );
5675
5696
if (IS_ERR (attr -> act_id_restore_rule ))
5676
5697
goto err_rule ;
@@ -5685,10 +5706,9 @@ int mlx5e_tc_action_miss_mapping_get(struct mlx5e_priv *priv, struct mlx5_flow_a
5685
5706
void mlx5e_tc_action_miss_mapping_put (struct mlx5e_priv * priv , struct mlx5_flow_attr * attr ,
5686
5707
u32 act_miss_mapping )
5687
5708
{
5688
- struct mlx5_eswitch * esw = priv -> mdev -> priv .eswitch ;
5689
- struct mapping_ctx * ctx ;
5709
+ struct mapping_ctx * ctx = mlx5e_get_priv_obj_mapping (priv );
5690
5710
5691
- ctx = esw -> offloads . reg_c0_obj_pool ;
5692
- mlx5_del_flow_rules (attr -> act_id_restore_rule );
5711
+ if ( is_mdev_switchdev_mode ( priv -> mdev ))
5712
+ mlx5_del_flow_rules (attr -> act_id_restore_rule );
5693
5713
mapping_remove (ctx , act_miss_mapping );
5694
5714
}
0 commit comments