xref: /spdk/python/spdk/rpc/accel.py (revision 760cb0232b8a15d4632a102b81a4473adff9d3d2)
1588dfe31SMichal Berger#  SPDX-License-Identifier: BSD-3-Clause
2588dfe31SMichal Berger#  Copyright (C) 2022 Intel Corporation.
3588dfe31SMichal Berger#  All rights reserved.
4976f8b09Spaul luse#
5588dfe31SMichal Berger
6712e8cb7SBen Walkerfrom spdk.rpc.helpers import deprecated_alias
7712e8cb7SBen Walker
8712e8cb7SBen Walker
9c6ecddccSpaul lusedef accel_get_opc_assignments(client):
10712e8cb7SBen Walker    """Get list of opcode name to module assignments.
11c6ecddccSpaul luse    """
12c6ecddccSpaul luse    return client.call('accel_get_opc_assignments')
1344cbea40Spaul luse
1444cbea40Spaul luse
15712e8cb7SBen Walker@deprecated_alias('accel_get_engine_info')
16712e8cb7SBen Walkerdef accel_get_module_info(client):
17712e8cb7SBen Walker    """Get list of valid module names and their operations.
1844cbea40Spaul luse    """
19712e8cb7SBen Walker    return client.call('accel_get_module_info')
20efa33b85Spaul luse
21efa33b85Spaul luse
22712e8cb7SBen Walkerdef accel_assign_opc(client, opname, module):
23712e8cb7SBen Walker    """Manually assign an operation to a module.
24efa33b85Spaul luse
25efa33b85Spaul luse    Args:
26efa33b85Spaul luse        opname: name of operation
27712e8cb7SBen Walker        module: name of module
28efa33b85Spaul luse    """
29efa33b85Spaul luse    params = {
30efa33b85Spaul luse        'opname': opname,
31712e8cb7SBen Walker        'module': module,
32efa33b85Spaul luse    }
33efa33b85Spaul luse
34efa33b85Spaul luse    return client.call('accel_assign_opc', params)
352608d129SAlexey Marchuk
362608d129SAlexey Marchuk
373b8b12cdSJacek Kalwasdef accel_crypto_key_create(client, cipher, key, key2, tweak_mode, name):
382608d129SAlexey Marchuk    """Create Data Encryption Key Identifier.
392608d129SAlexey Marchuk
402608d129SAlexey Marchuk    Args:
412608d129SAlexey Marchuk        cipher: cipher
422608d129SAlexey Marchuk        key: key
432608d129SAlexey Marchuk        key2: key2
443b8b12cdSJacek Kalwas        tweak_mode: tweak mode
452608d129SAlexey Marchuk        name: key name
462608d129SAlexey Marchuk    """
472608d129SAlexey Marchuk    params = {
482608d129SAlexey Marchuk        'cipher': cipher,
492608d129SAlexey Marchuk        'key': key,
502608d129SAlexey Marchuk        'name': name,
512608d129SAlexey Marchuk    }
522608d129SAlexey Marchuk    if key2 is not None:
532608d129SAlexey Marchuk        params['key2'] = key2
543b8b12cdSJacek Kalwas    if tweak_mode is not None:
553b8b12cdSJacek Kalwas        params['tweak_mode'] = tweak_mode
562608d129SAlexey Marchuk
572608d129SAlexey Marchuk    return client.call('accel_crypto_key_create', params)
582608d129SAlexey Marchuk
592608d129SAlexey Marchuk
60c30dfbc2SKonrad Sztyberdef accel_crypto_key_destroy(client, key_name):
6113f97e67SAlexey Marchuk    """Destroy Data Encryption Key.
6213f97e67SAlexey Marchuk
6313f97e67SAlexey Marchuk    Args:
64c30dfbc2SKonrad Sztyber        key_name: key name
6513f97e67SAlexey Marchuk    """
6613f97e67SAlexey Marchuk    params = {
67c30dfbc2SKonrad Sztyber        'key_name': key_name
6813f97e67SAlexey Marchuk    }
6913f97e67SAlexey Marchuk
7013f97e67SAlexey Marchuk    return client.call('accel_crypto_key_destroy', params)
7113f97e67SAlexey Marchuk
7213f97e67SAlexey Marchuk
732608d129SAlexey Marchukdef accel_crypto_keys_get(client, key_name):
742608d129SAlexey Marchuk    """Get a list of the crypto keys.
752608d129SAlexey Marchuk
762608d129SAlexey Marchuk    Args:
772608d129SAlexey Marchuk        key_name: Get information about a specific key
782608d129SAlexey Marchuk    """
792608d129SAlexey Marchuk    params = {}
802608d129SAlexey Marchuk
812608d129SAlexey Marchuk    if key_name is not None:
822608d129SAlexey Marchuk        params['key_name'] = key_name
832608d129SAlexey Marchuk
842608d129SAlexey Marchuk    return client.call('accel_crypto_keys_get', params)
85b2454dfbSKonrad Sztyber
86b2454dfbSKonrad Sztyber
87b2454dfbSKonrad Sztyberdef accel_set_driver(client, name):
88b2454dfbSKonrad Sztyber    """Select accel platform driver to execute operation chains.
89b2454dfbSKonrad Sztyber
90b2454dfbSKonrad Sztyber    Args:
91b2454dfbSKonrad Sztyber        name: name of the driver
92b2454dfbSKonrad Sztyber    """
93b2454dfbSKonrad Sztyber    return client.call('accel_set_driver', {'name': name})
94688f7fb8SKonrad Sztyber
95688f7fb8SKonrad Sztyber
9631bfcb45SKonrad Sztyberdef accel_set_options(client, small_cache_size, large_cache_size,
9731bfcb45SKonrad Sztyber                      task_count, sequence_count, buf_count):
98688f7fb8SKonrad Sztyber    """Set accel framework's options."""
99688f7fb8SKonrad Sztyber    params = {}
100688f7fb8SKonrad Sztyber
101688f7fb8SKonrad Sztyber    if small_cache_size is not None:
102688f7fb8SKonrad Sztyber        params['small_cache_size'] = small_cache_size
103688f7fb8SKonrad Sztyber    if large_cache_size is not None:
104688f7fb8SKonrad Sztyber        params['large_cache_size'] = large_cache_size
10531bfcb45SKonrad Sztyber    if task_count is not None:
10631bfcb45SKonrad Sztyber        params['task_count'] = task_count
10731bfcb45SKonrad Sztyber    if sequence_count is not None:
10831bfcb45SKonrad Sztyber        params['sequence_count'] = sequence_count
10931bfcb45SKonrad Sztyber    if buf_count is not None:
11031bfcb45SKonrad Sztyber        params['buf_count'] = buf_count
111688f7fb8SKonrad Sztyber
112688f7fb8SKonrad Sztyber    return client.call('accel_set_options', params)
113f2459a2fSKonrad Sztyber
114f2459a2fSKonrad Sztyber
115f2459a2fSKonrad Sztyberdef accel_get_stats(client):
116f2459a2fSKonrad Sztyber    """Get accel framework's statistics"""
117f2459a2fSKonrad Sztyber
118f2459a2fSKonrad Sztyber    return client.call('accel_get_stats')
1198625cc18SKonrad Sztyber
1208625cc18SKonrad Sztyber
121*760cb023SKonrad Sztyberdef accel_error_inject_error(client, opcode, type, count=None, interval=None, errcode=None):
1228625cc18SKonrad Sztyber    """Inject an error to processing accel operation"""
1238625cc18SKonrad Sztyber    params = {}
1248625cc18SKonrad Sztyber    if count is not None:
1258625cc18SKonrad Sztyber        params['count'] = count
126*760cb023SKonrad Sztyber    if interval is not None:
127*760cb023SKonrad Sztyber        params['interval'] = interval
128bb019612SKonrad Sztyber    if errcode is not None:
129bb019612SKonrad Sztyber        params['errcode'] = errcode
1308625cc18SKonrad Sztyber
1318625cc18SKonrad Sztyber    return client.call('accel_error_inject_error',
1328625cc18SKonrad Sztyber                       {'opcode': opcode, 'type': type, **params})
133