xref: /wlan-driver/qca-wifi-host-cmn/wmi/inc/wmi_unified_action_oui_tlv.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name #ifndef _WMI_UNIFIED_ACTION_OUI_TLV_H_
20*5113495bSYour Name #define _WMI_UNIFIED_ACTION_OUI_TLV_H_
21*5113495bSYour Name 
22*5113495bSYour Name #ifdef WLAN_FEATURE_ACTION_OUI
23*5113495bSYour Name 
24*5113495bSYour Name #include "wmi.h"
25*5113495bSYour Name #include "wmi_unified.h"
26*5113495bSYour Name #include "wmi_unified_api.h"
27*5113495bSYour Name #include "wmi_unified_param.h"
28*5113495bSYour Name 
29*5113495bSYour Name /**
30*5113495bSYour Name  * wmi_get_action_oui_info_mask() - convert info mask to firmware specific
31*5113495bSYour Name  * @info_mask: host specific info mask
32*5113495bSYour Name  *
33*5113495bSYour Name  * Return: firmware specific information mask
34*5113495bSYour Name  */
35*5113495bSYour Name uint32_t wmi_get_action_oui_info_mask(uint32_t info_mask);
36*5113495bSYour Name 
37*5113495bSYour Name /**
38*5113495bSYour Name  * wmi_get_action_oui_id() - convert action id to firmware specific
39*5113495bSYour Name  * @action_id: host specific action id
40*5113495bSYour Name  * @id: output pointer to hold converted fw specific action id
41*5113495bSYour Name  *
42*5113495bSYour Name  * Return: true on conversion else failure
43*5113495bSYour Name  */
44*5113495bSYour Name bool wmi_get_action_oui_id(enum action_oui_id action_id,
45*5113495bSYour Name 			   wmi_vendor_oui_action_id *id);
46*5113495bSYour Name 
47*5113495bSYour Name 
48*5113495bSYour Name /**
49*5113495bSYour Name  * wmi_fill_oui_extensions() - populates wmi_vendor_oui_ext array
50*5113495bSYour Name  * @extension: pointer to user supplied action oui extensions
51*5113495bSYour Name  * @no_oui_extns: number of action oui extensions
52*5113495bSYour Name  * @cmd_ext: output pointer to TLV
53*5113495bSYour Name  *
54*5113495bSYour Name  * This function parses the user supplied input data and populates the
55*5113495bSYour Name  * array of variable structures TLV in WMI_PDEV_CONFIG_VENDOR_OUI_ACTION_CMDID
56*5113495bSYour Name  *
57*5113495bSYour Name  * Return: None
58*5113495bSYour Name  */
59*5113495bSYour Name void wmi_fill_oui_extensions(struct action_oui_extension *extension,
60*5113495bSYour Name 			     uint32_t no_oui_extns,
61*5113495bSYour Name 			     wmi_vendor_oui_ext *cmd_ext);
62*5113495bSYour Name 
63*5113495bSYour Name /**
64*5113495bSYour Name  * wmi_fill_oui_extensions_buffer() - populates data buffer in action oui cmd
65*5113495bSYour Name  * @extension: pointer to user supplied action oui extensions
66*5113495bSYour Name  * @cmd_ext: pointer to vendor_oui_ext TLV in action oui cmd
67*5113495bSYour Name  * @no_oui_extns: number of action oui extensions
68*5113495bSYour Name  * @rem_var_buf_len: remaining length of buffer to be populated
69*5113495bSYour Name  * @var_buf: output pointer to hold variable length data
70*5113495bSYour Name  *
71*5113495bSYour Name  * This function parses the user supplied input data and populates the variable
72*5113495bSYour Name  * buffer of type array byte TLV in WMI_PDEV_CONFIG_VENDOR_OUI_ACTION_CMDID
73*5113495bSYour Name  *
74*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS for successful fill else QDF_STATUS_E_INVAL
75*5113495bSYour Name  */
76*5113495bSYour Name QDF_STATUS
77*5113495bSYour Name wmi_fill_oui_extensions_buffer(struct action_oui_extension *extension,
78*5113495bSYour Name 			       wmi_vendor_oui_ext *cmd_ext,
79*5113495bSYour Name 			       uint32_t no_oui_extns, uint32_t rem_var_buf_len,
80*5113495bSYour Name 			       uint8_t *var_buf);
81*5113495bSYour Name 
82*5113495bSYour Name /**
83*5113495bSYour Name  * send_action_oui_cmd_tlv() - send action oui cmd to firmware
84*5113495bSYour Name  * @wmi_handle: wmi handler
85*5113495bSYour Name  * @req: pointer to action oui info
86*5113495bSYour Name  *
87*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS on successful transmission else
88*5113495bSYour Name  *         QDF_STATUS_E_INVAL or QDF_STATUS_E_NOMEM
89*5113495bSYour Name  */
90*5113495bSYour Name QDF_STATUS
91*5113495bSYour Name send_action_oui_cmd_tlv(wmi_unified_t wmi_handle,
92*5113495bSYour Name 			struct action_oui_request *req);
93*5113495bSYour Name 
94*5113495bSYour Name #endif /* WLAN_FEATURE_ACTION_OUI */
95*5113495bSYour Name 
96*5113495bSYour Name #endif /* _WMI_UNIFIED_ACTION_OUI_TLV_H_ */
97