1712e8cb7SBen Walker /* SPDX-License-Identifier: BSD-3-Clause 2*a6dbe372Spaul luse * Copyright (C) 2022 Intel Corporation. 3712e8cb7SBen Walker * All rights reserved. 4712e8cb7SBen Walker */ 5712e8cb7SBen Walker 6712e8cb7SBen Walker #include "accel_dsa.h" 7712e8cb7SBen Walker 8712e8cb7SBen Walker #include "spdk/rpc.h" 9712e8cb7SBen Walker #include "spdk/util.h" 10712e8cb7SBen Walker #include "spdk/event.h" 11712e8cb7SBen Walker #include "spdk/stdinc.h" 12712e8cb7SBen Walker #include "spdk/env.h" 13712e8cb7SBen Walker 14712e8cb7SBen Walker struct rpc_dsa_scan_accel_module { 15712e8cb7SBen Walker bool config_kernel_mode; 16712e8cb7SBen Walker }; 17712e8cb7SBen Walker 18712e8cb7SBen Walker static const struct spdk_json_object_decoder rpc_dsa_scan_accel_module_decoder[] = { 19712e8cb7SBen Walker {"config_kernel_mode", offsetof(struct rpc_dsa_scan_accel_module, config_kernel_mode), spdk_json_decode_bool, true}, 20712e8cb7SBen Walker }; 21712e8cb7SBen Walker 22712e8cb7SBen Walker static void 23712e8cb7SBen Walker rpc_dsa_scan_accel_module(struct spdk_jsonrpc_request *request, 24712e8cb7SBen Walker const struct spdk_json_val *params) 25712e8cb7SBen Walker { 26712e8cb7SBen Walker struct rpc_dsa_scan_accel_module req = {}; 27712e8cb7SBen Walker 28712e8cb7SBen Walker if (params != NULL) { 29712e8cb7SBen Walker if (spdk_json_decode_object(params, rpc_dsa_scan_accel_module_decoder, 30712e8cb7SBen Walker SPDK_COUNTOF(rpc_dsa_scan_accel_module_decoder), 31712e8cb7SBen Walker &req)) { 32712e8cb7SBen Walker SPDK_ERRLOG("spdk_json_decode_object() failed\n"); 33712e8cb7SBen Walker spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 34712e8cb7SBen Walker "Invalid parameters"); 35712e8cb7SBen Walker return; 36712e8cb7SBen Walker } 37712e8cb7SBen Walker } 38712e8cb7SBen Walker 39712e8cb7SBen Walker if (req.config_kernel_mode) { 40712e8cb7SBen Walker SPDK_NOTICELOG("Enabling DSA kernel-mode\n"); 41712e8cb7SBen Walker } else { 42712e8cb7SBen Walker SPDK_NOTICELOG("Enabling DSA user-mode\n"); 43712e8cb7SBen Walker } 44712e8cb7SBen Walker 45712e8cb7SBen Walker accel_dsa_enable_probe(req.config_kernel_mode); 46712e8cb7SBen Walker spdk_jsonrpc_send_bool_response(request, true); 47712e8cb7SBen Walker } 48712e8cb7SBen Walker SPDK_RPC_REGISTER("dsa_scan_accel_module", rpc_dsa_scan_accel_module, SPDK_RPC_STARTUP) 49712e8cb7SBen Walker SPDK_RPC_REGISTER_ALIAS_DEPRECATED(dsa_scan_accel_module, dsa_scan_accel_engine) 50