1 /*
2  * Copyright (c) 2016-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 #ifndef _WMI_UNIFIED_APF_TLV_H_
20 #define _WMI_UNIFIED_APF_TLV_H_
21 
22 #ifdef FEATURE_WLAN_APF
23 
24 #include "wmi_unified.h"
25 #include "wmi_unified_api.h"
26 #include "wmi_unified_param.h"
27 
28 /**
29  * wmi_send_set_active_apf_mode_cmd_tlv() - configure active APF mode in FW
30  * @wmi_handle: the WMI handle
31  * @vdev_id: the Id of the vdev to apply the configuration to
32  * @ucast_mode: the active APF mode to configure for unicast packets
33  * @mcast_bcast_mode: the active APF mode to configure for multicast/broadcast
34  * packets
35  *
36  * Return: QDF status
37  */
38 QDF_STATUS
39 wmi_send_set_active_apf_mode_cmd_tlv(wmi_unified_t wmi_handle,
40 				     uint8_t vdev_id,
41 				     enum wmi_host_active_apf_mode ucast_mode,
42 				     enum wmi_host_active_apf_mode
43 							      mcast_bcast_mode);
44 
45 /**
46  * wmi_send_apf_enable_cmd_tlv() - send cmd to enable/disable APF interpreter
47  * @wmi_handle: the WMI handle
48  * @vdev_id: VDEV on which APF interpreter is to be enabled/disabled
49  * @enable: true: enable, false: disable
50  *
51  * Return: QDF status
52  */
53 QDF_STATUS
54 wmi_send_apf_enable_cmd_tlv(wmi_unified_t wmi_handle, uint32_t vdev_id,
55 			    bool enable);
56 
57 /**
58  * wmi_send_apf_write_work_memory_cmd_tlv() - send cmd to write into the APF
59  * work
60  * memory
61  * @wmi_handle: the WMI handle
62  * @apf_write_params: parameters and buffer pointer for the write
63  *
64  * Return: QDF status
65  */
66 QDF_STATUS
67 wmi_send_apf_write_work_memory_cmd_tlv(wmi_unified_t wmi_handle,
68 				       struct wmi_apf_write_memory_params
69 							     *apf_write_params);
70 
71 /**
72  * wmi_send_apf_read_work_memory_cmd_tlv() - send cmd to read part of APF
73  * work memory
74  * @wmi_handle: the WMI handle
75  * @apf_read_params: contains relative address and length to read from
76  *
77  * Return: QDF status
78  */
79 QDF_STATUS
80 wmi_send_apf_read_work_memory_cmd_tlv(wmi_unified_t wmi_handle,
81 				      struct wmi_apf_read_memory_params
82 							      *apf_read_params);
83 
84 /**
85  * wmi_extract_apf_read_memory_resp_event_tlv() - extract read memory response
86  * event into the given structure pointer
87  * @wmi_handle: the WMI handle
88  * @evt_buf: Pointer to the event buffer
89  * @resp: pointer to memory to extract event parameters into
90  *
91  * Return: QDF status
92  */
93 QDF_STATUS
94 wmi_extract_apf_read_memory_resp_event_tlv(wmi_unified_t wmi_handle,
95 				void *evt_buf,
96 				struct wmi_apf_read_memory_resp_event_params
97 									 *resp);
98 #endif /* FEATURE_WLAN_APF */
99 
100 #endif /* _WMI_UNIFIED_APF_TLV_H_ */
101