1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (c) Intel Corporation. 3 * Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. 4 * All rights reserved. 5 */ 6 7 #include "accel_dpdk_cryptodev.h" 8 9 #include "spdk/rpc.h" 10 #include "spdk/util.h" 11 12 static void 13 rpc_dpdk_cryptodev_scan_accel_module(struct spdk_jsonrpc_request *request, 14 const struct spdk_json_val *params) 15 { 16 if (params != NULL) { 17 spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 18 "No parameters expected"); 19 return; 20 } 21 22 accel_dpdk_cryptodev_enable(); 23 spdk_jsonrpc_send_bool_response(request, true); 24 } 25 SPDK_RPC_REGISTER("dpdk_cryptodev_scan_accel_module", rpc_dpdk_cryptodev_scan_accel_module, 26 SPDK_RPC_STARTUP) 27 28 struct rpc_set_driver { 29 char *driver_name; 30 }; 31 32 static const struct spdk_json_object_decoder rpc_set_driver_decoders[] = { 33 {"driver_name", offsetof(struct rpc_set_driver, driver_name), spdk_json_decode_string}, 34 }; 35 36 static void 37 rpc_dpdk_cryptodev_set_driver(struct spdk_jsonrpc_request *request, 38 const struct spdk_json_val *params) 39 { 40 struct rpc_set_driver req = {}; 41 int rc; 42 43 if (spdk_json_decode_object(params, rpc_set_driver_decoders, 44 SPDK_COUNTOF(rpc_set_driver_decoders), &req)) { 45 spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_PARSE_ERROR, 46 "spdk_json_decode_object failed"); 47 return; 48 } 49 50 rc = accel_dpdk_cryptodev_set_driver(req.driver_name); 51 free(req.driver_name); 52 if (rc) { 53 spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 54 "incorrect driver name"); 55 } else { 56 spdk_jsonrpc_send_bool_response(request, true); 57 } 58 } 59 SPDK_RPC_REGISTER("dpdk_cryptodev_set_driver", rpc_dpdk_cryptodev_set_driver, SPDK_RPC_STARTUP) 60 61 static void 62 rpc_dpdk_cryptodev_get_driver(struct spdk_jsonrpc_request *request, 63 const struct spdk_json_val *params) 64 { 65 struct spdk_json_write_ctx *w; 66 const char *driver_name; 67 68 if (params) { 69 spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 70 "No parameters expected"); 71 return; 72 } 73 74 driver_name = accel_dpdk_cryptodev_get_driver(); 75 assert(driver_name); 76 77 w = spdk_jsonrpc_begin_result(request); 78 spdk_json_write_string(w, driver_name); 79 spdk_jsonrpc_end_result(request, w); 80 } 81 SPDK_RPC_REGISTER("dpdk_cryptodev_get_driver", rpc_dpdk_cryptodev_get_driver, 82 SPDK_RPC_STARTUP | SPDK_RPC_RUNTIME) 83