Line data Source code
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 0 : rpc_dpdk_cryptodev_scan_accel_module(struct spdk_jsonrpc_request *request, 14 : const struct spdk_json_val *params) 15 : { 16 0 : if (params != NULL) { 17 0 : spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 18 : "No parameters expected"); 19 0 : return; 20 : } 21 : 22 0 : accel_dpdk_cryptodev_enable(); 23 0 : spdk_jsonrpc_send_bool_response(request, true); 24 0 : } 25 0 : 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 0 : rpc_dpdk_cryptodev_set_driver(struct spdk_jsonrpc_request *request, 38 : const struct spdk_json_val *params) 39 : { 40 0 : struct rpc_set_driver req = {}; 41 0 : int rc; 42 : 43 0 : if (spdk_json_decode_object(params, rpc_set_driver_decoders, 44 : SPDK_COUNTOF(rpc_set_driver_decoders), &req)) { 45 0 : spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_PARSE_ERROR, 46 : "spdk_json_decode_object failed"); 47 0 : return; 48 : } 49 : 50 0 : rc = accel_dpdk_cryptodev_set_driver(req.driver_name); 51 0 : free(req.driver_name); 52 0 : if (rc) { 53 0 : spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 54 : "incorrect driver name"); 55 0 : } else { 56 0 : spdk_jsonrpc_send_bool_response(request, true); 57 : } 58 0 : } 59 0 : SPDK_RPC_REGISTER("dpdk_cryptodev_set_driver", rpc_dpdk_cryptodev_set_driver, SPDK_RPC_STARTUP) 60 : 61 : static void 62 0 : rpc_dpdk_cryptodev_get_driver(struct spdk_jsonrpc_request *request, 63 : const struct spdk_json_val *params) 64 : { 65 0 : struct spdk_json_write_ctx *w; 66 0 : const char *driver_name; 67 : 68 0 : if (params) { 69 0 : spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, 70 : "No parameters expected"); 71 0 : return; 72 : } 73 : 74 0 : driver_name = accel_dpdk_cryptodev_get_driver(); 75 0 : assert(driver_name); 76 : 77 0 : w = spdk_jsonrpc_begin_result(request); 78 0 : spdk_json_write_string(w, driver_name); 79 0 : spdk_jsonrpc_end_result(request, w); 80 0 : } 81 0 : SPDK_RPC_REGISTER("dpdk_cryptodev_get_driver", rpc_dpdk_cryptodev_get_driver, 82 : SPDK_RPC_STARTUP | SPDK_RPC_RUNTIME)