xref: /spdk/module/accel/dsa/accel_dsa_rpc.c (revision a6dbe3721eb3b5990707fc3e378c95e505dd8ab5)
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