blob: c1ac4a24d9b81239284756baa38e8ce67bfa8abc [file] [log] [blame]
Nachiket Kukade98f562a2017-12-15 12:18:07 +05301/*
2 * Copyright (c) 2018 The Linux Foundation. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18/**
19 * DOC: Target interface file for disa component to
20 * Implement api's which shall be used by disa component
21 * in target if internally.
22 */
23
24#include "target_if_disa.h"
25#include "wlan_disa_tgt_api.h"
26#include "wlan_disa_public_struct.h"
27
28int
29target_if_encrypt_decrypt_event_handler(ol_scn_t scn_handle, uint8_t *data,
30 uint32_t data_len)
31{
Nachiket Kukade6500b612017-12-20 17:34:46 +053032 struct disa_encrypt_decrypt_resp_params resp;
33 struct wlan_objmgr_psoc *psoc;
34
35 if (data == NULL) {
36 target_if_err("%s: invalid pointer", __func__);
37 return -EINVAL;
38 }
39
40 psoc = target_if_get_psoc_from_scn_hdl(scn_handle);
41 if (!psoc) {
42 target_if_err("psoc ptr is NULL");
43 return -EINVAL;
44 }
45
46 if (wmi_extract_encrypt_decrypt_resp_params(
Sourav Mohapatracf632572018-04-02 11:01:35 +053047 get_wmi_unified_hdl_from_psoc(psoc),
Nachiket Kukade6500b612017-12-20 17:34:46 +053048 data, &resp) != QDF_STATUS_SUCCESS) {
49 target_if_err("Extraction of encrypt decrypt resp params failed");
50 return -EINVAL;
51 }
52
53 tgt_disa_encrypt_decrypt_resp(psoc, &resp);
54
Nachiket Kukade98f562a2017-12-15 12:18:07 +053055 return 0;
56}
57
58QDF_STATUS
59target_if_disa_register_ev_handlers(struct wlan_objmgr_psoc *psoc)
60{
Nachiket Kukade6500b612017-12-20 17:34:46 +053061 QDF_STATUS status;
62
Sourav Mohapatracf632572018-04-02 11:01:35 +053063 status = wmi_unified_register_event(get_wmi_unified_hdl_from_psoc(psoc),
Nachiket Kukade6500b612017-12-20 17:34:46 +053064 wmi_vdev_encrypt_decrypt_data_rsp_event_id,
65 target_if_encrypt_decrypt_event_handler);
66 if (status) {
67 target_if_err("Failed to register Scan match event cb");
68 return QDF_STATUS_E_FAILURE;
69 }
70
71 return status;
Nachiket Kukade98f562a2017-12-15 12:18:07 +053072}
73
74QDF_STATUS
75target_if_disa_unregister_ev_handlers(struct wlan_objmgr_psoc *psoc)
76{
Nachiket Kukade6500b612017-12-20 17:34:46 +053077 QDF_STATUS status;
78
Sourav Mohapatracf632572018-04-02 11:01:35 +053079 status = wmi_unified_unregister_event(
80 get_wmi_unified_hdl_from_psoc(psoc),
Nachiket Kukade6500b612017-12-20 17:34:46 +053081 wmi_vdev_encrypt_decrypt_data_rsp_event_id);
82 if (status) {
83 target_if_err("Failed to unregister Scan match event cb");
84 return QDF_STATUS_E_FAILURE;
85 }
86
87 return status;
Nachiket Kukade98f562a2017-12-15 12:18:07 +053088}
89
90QDF_STATUS
91target_if_disa_encrypt_decrypt_req(struct wlan_objmgr_psoc *psoc,
92 struct disa_encrypt_decrypt_req_params *req)
93{
Sourav Mohapatracf632572018-04-02 11:01:35 +053094 return wmi_unified_encrypt_decrypt_send_cmd(
95 get_wmi_unified_hdl_from_psoc(psoc), req);
Nachiket Kukade98f562a2017-12-15 12:18:07 +053096}
97
98
99void target_if_disa_register_tx_ops(struct wlan_disa_tx_ops *disa_tx_ops)
100{
Nachiket Kukade6500b612017-12-20 17:34:46 +0530101 if (!disa_tx_ops) {
102 target_if_err("disa_tx_ops is null");
103 return;
104 }
105
106 disa_tx_ops->disa_encrypt_decrypt_req =
107 target_if_disa_encrypt_decrypt_req;
108 disa_tx_ops->disa_register_ev_handlers =
109 target_if_disa_register_ev_handlers;
110 disa_tx_ops->disa_unregister_ev_handlers =
111 target_if_disa_unregister_ev_handlers;
Nachiket Kukade98f562a2017-12-15 12:18:07 +0530112}