0xff, 16);
        }
 
-       flow_act->ipsec_obj_id = ipsec_obj_id;
+       flow_act->crypto.type = MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_IPSEC;
+       flow_act->crypto.obj_id = ipsec_obj_id;
        flow_act->flags |= FLOW_ACT_NO_APPEND;
 }
 
        }
 
        flow_act.action = MLX5_FLOW_CONTEXT_ACTION_FWD_DEST |
-                         MLX5_FLOW_CONTEXT_ACTION_IPSEC_DECRYPT |
+                         MLX5_FLOW_CONTEXT_ACTION_CRYPTO_DECRYPT |
                          MLX5_FLOW_CONTEXT_ACTION_MOD_HDR;
        dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
        flow_act.modify_hdr = modify_hdr;
                 MLX5_ETH_WQE_FT_META_IPSEC);
 
        flow_act.action = MLX5_FLOW_CONTEXT_ACTION_ALLOW |
-                         MLX5_FLOW_CONTEXT_ACTION_IPSEC_ENCRYPT;
+                         MLX5_FLOW_CONTEXT_ACTION_CRYPTO_ENCRYPT;
        rule = mlx5_add_flow_rules(priv->ipsec->tx_fs->ft, spec, &flow_act, NULL, 0);
        if (IS_ERR(rule)) {
                err = PTR_ERR(rule);
 
                MLX5_SET(flow_context, in_flow_context, modify_header_id,
                         fte->action.modify_hdr->id);
 
-       MLX5_SET(flow_context, in_flow_context, ipsec_obj_id, fte->action.ipsec_obj_id);
+       MLX5_SET(flow_context, in_flow_context, encrypt_decrypt_type,
+                fte->action.crypto.type);
+       MLX5_SET(flow_context, in_flow_context, encrypt_decrypt_obj_id,
+                fte->action.crypto.obj_id);
 
        vlan = MLX5_ADDR_OF(flow_context, in_flow_context, push_vlan);
 
 
        u32 action;
        struct mlx5_modify_hdr  *modify_hdr;
        struct mlx5_pkt_reformat *pkt_reformat;
-       union {
-               u32 ipsec_obj_id;
-       };
+       struct mlx5_flow_act_crypto_params {
+               u8 type;
+               u32 obj_id;
+       } crypto;
        u32 flags;
        struct mlx5_fs_vlan vlan[MLX5_FS_VLAN_DEPTH];
        struct ib_counters *counters;
 
        MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH = 0x100,
        MLX5_FLOW_CONTEXT_ACTION_VLAN_POP_2  = 0x400,
        MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2 = 0x800,
-       MLX5_FLOW_CONTEXT_ACTION_IPSEC_DECRYPT = 0x1000,
-       MLX5_FLOW_CONTEXT_ACTION_IPSEC_ENCRYPT = 0x2000,
+       MLX5_FLOW_CONTEXT_ACTION_CRYPTO_DECRYPT = 0x1000,
+       MLX5_FLOW_CONTEXT_ACTION_CRYPTO_ENCRYPT = 0x2000,
        MLX5_FLOW_CONTEXT_ACTION_EXECUTE_ASO = 0x4000,
 };
 
        MLX5_FLOW_CONTEXT_FLOW_SOURCE_LOCAL_VPORT       = 0x2,
 };
 
+enum {
+       MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_IPSEC   = 0x0,
+};
+
 struct mlx5_ifc_vlan_bits {
        u8         ethtype[0x10];
        u8         prio[0x3];
        u8         extended_destination[0x1];
        u8         reserved_at_81[0x1];
        u8         flow_source[0x2];
-       u8         reserved_at_84[0x4];
+       u8         encrypt_decrypt_type[0x4];
        u8         destination_list_size[0x18];
 
        u8         reserved_at_a0[0x8];
 
        struct mlx5_ifc_vlan_bits push_vlan_2;
 
-       u8         ipsec_obj_id[0x20];
+       u8         encrypt_decrypt_obj_id[0x20];
        u8         reserved_at_140[0xc0];
 
        struct mlx5_ifc_fte_match_param_bits match_value;