xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.h (revision 8ddef7dd9a290d4a9b1efd5d3efacf51d78a1a0d)
1 /*
2  * Copyright (c) 2019 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 /**
20  * DOC: vdev_mgr_ops.h
21  *
22  * This header file provides API declarations for filling data structures
23  * and sending vdev mgmt commands to target_if/mlme/vdev_mgr
24  */
25 
26 #ifndef __VDEV_MGR_OPS_H__
27 #define __VDEV_MGR_OPS_H__
28 
29 #ifdef CMN_VDEV_MGR_TGT_IF_ENABLE
30 #include <wlan_objmgr_vdev_obj.h>
31 #include <wlan_vdev_mgr_tgt_if_tx_defs.h>
32 #include <wlan_mlme_dbg.h>
33 #include "include/wlan_vdev_mlme.h"
34 
35 /**
36  * vdev_mgr_create_send() – MLME API to create command to
37  * target_if
38  * @mlme_obj: pointer to vdev_mlme_obj
39  *
40  * Return: QDF_STATUS - Success or Failure
41  */
42 QDF_STATUS vdev_mgr_create_send(struct vdev_mlme_obj *mlme_obj);
43 
44 /**
45  * vdev_mgr_start_send() – MLME API to send start request to
46  * target_if
47  * @mlme_obj: pointer to vdev_mlme_obj
48  * @restart: flag to indicate type of request START/RESTART
49  *
50  * Return: QDF_STATUS - Success or Failure
51  */
52 QDF_STATUS vdev_mgr_start_send(struct vdev_mlme_obj *mlme_obj, bool restart);
53 
54 /**
55  * vdev_mgr_delete_send() – MLME API to send delete request to
56  * target_if
57  * @mlme_obj: pointer to vdev_mlme_obj
58  *
59  * Return: QDF_STATUS - Success or Failure
60  */
61 QDF_STATUS vdev_mgr_delete_send(struct vdev_mlme_obj *mlme_obj);
62 
63 /**
64  * vdev_mgr_peer_flush_tids_send () – MLME API to setup peer flush tids
65  * @mlme_obj: pointer to vdev_mlme_obj
66  * @mac: pointer to peer mac address
67  * @peer_tid_bitmap: peer tid bitmap
68  *
69  * Return: QDF_STATUS - Success or Failure
70  */
71 QDF_STATUS vdev_mgr_peer_flush_tids_send(struct vdev_mlme_obj *mlme_obj,
72 					 uint8_t *mac,
73 					 uint32_t peer_tid_bitmap);
74 /**
75  * vdev_mgr_stop_send () – MLME API to send STOP request
76  * @mlme_obj: pointer to vdev_mlme_obj
77  *
78  * Return: QDF_STATUS - Success or Failure
79  */
80 QDF_STATUS vdev_mgr_stop_send(struct vdev_mlme_obj *mlme_obj);
81 
82 /**
83  * vdev_mgr_up_send () – MLME API to send UP command
84  * @mlme_obj: pointer to vdev_mlme_obj
85  *
86  * Return: QDF_STATUS - Success or Failure
87  */
88 QDF_STATUS vdev_mgr_up_send(struct vdev_mlme_obj *mlme_obj);
89 
90 /**
91  * vdev_mgr_down_send () – MLME API to send down command
92  * @mlme_obj: pointer to vdev_mlme_obj
93  *
94  * Return: QDF_STATUS - Success or Failure
95  */
96 QDF_STATUS vdev_mgr_down_send(struct vdev_mlme_obj *mlme_obj);
97 
98 /**
99  * vdev_mgr_set_param_send() – MLME API to send vdev param
100  * @mlme_obj: pointer to vdev_mlme_obj
101  * @param_id: parameter id
102  * @param_value: value corresponding to parameter id
103  *
104  * Return: QDF_STATUS - Success or Failure
105  */
106 QDF_STATUS vdev_mgr_set_param_send(struct vdev_mlme_obj *mlme_obj,
107 				   uint32_t param_id,
108 				   uint32_t param_value);
109 
110 /**
111  * vdev_mgr_set_neighbour_rx_cmd_send() – MLME API to send neighbour Rx
112  * cmd
113  * @mlme_obj: pointer to vdev_mlme_obj
114  * @param: pointer to set neighbour rx params
115  *
116  * Return: QDF_STATUS - Success or Failure
117  */
118 QDF_STATUS vdev_mgr_set_neighbour_rx_cmd_send(
119 				struct vdev_mlme_obj *mlme_obj,
120 				struct set_neighbour_rx_params *param);
121 
122 /**
123  * vdev_mgr_set_nac_rssi_send() – MLME API to send nac rssi
124  * @mlme_obj: pointer to vdev_mlme_obj
125  * @param: pointer to vdev_scan_nac_rssi_params
126  *
127  * Return: QDF_STATUS - Success or Failure
128  */
129 QDF_STATUS vdev_mgr_nac_rssi_send(
130 			struct vdev_mlme_obj *mlme_obj,
131 			struct vdev_scan_nac_rssi_params *param);
132 
133 /**
134  * vdev_mgr_sifs_trigger_send() – MLME API to send SIFS trigger
135  * @mlme_obj: pointer to vdev_mlme_obj
136  * @param_value: parameter value
137  *
138  * Return: QDF_STATUS - Success or Failure
139  */
140 QDF_STATUS vdev_mgr_sifs_trigger_send(
141 			struct vdev_mlme_obj *mlme_obj,
142 			uint32_t param_value);
143 
144 /**
145  * vdev_mgr_set_custom_aggr_size_cmd_send() – MLME API to send custom aggr
146  * size
147  * @mlme_obj: pointer to vdev_mlme_obj
148  * @val: aggregate size value
149  * @is_amsdu: boolean to indicate value corresponds to amsdu/ampdu
150  *
151  * Return: QDF_STATUS - Success or Failure
152  */
153 QDF_STATUS vdev_mgr_set_custom_aggr_size_send(
154 			struct vdev_mlme_obj *mlme_obj,
155 			uint32_t val, bool is_amsdu);
156 
157 /**
158  * vdev_mgr_onfig_ratemask_cmd_send() – MLME API to send ratemask
159  * @mlme_obj: pointer to vdev_mlme_obj
160  * @type: type of ratemask configuration
161  * @lower32: Lower 32 bits in the 1st 64-bit value
162  * @higher32: Higher 32 bits in the 1st 64-bit value
163  * @lower32_2: Lower 32 bits in the 2nd 64-bit value
164  *
165  * Return: QDF_STATUS - Success or Failure
166  */
167 QDF_STATUS vdev_mgr_config_ratemask_cmd_send(
168 				struct vdev_mlme_obj *mlme_obj,
169 				uint8_t type,
170 				uint32_t lower32,
171 				uint32_t higher32,
172 				uint32_t lower32_2);
173 
174 /**
175  * vdev_mgr_beacon_stop() – MLME API to stop beacon
176  * @mlme_obj: pointer to vdev_mlme_obj
177  *
178  * Return: QDF_STATUS - Success or Failure
179  */
180 QDF_STATUS vdev_mgr_beacon_stop(struct vdev_mlme_obj *mlme_obj);
181 
182 /**
183  * vdev_mgr_beacon_free() – MLME API to free beacon
184  * @mlme_obj: pointer to vdev_mlme_obj
185  *
186  * Return: QDF_STATUS - Success or Failure
187  */
188 QDF_STATUS vdev_mgr_beacon_free(struct vdev_mlme_obj *mlme_obj);
189 
190 /**
191  * vdev_mgr_beacon_send() – MLME API to send beacon
192  * @mlme_obj: pointer to vdev_mlme_obj
193  * @param: pointer to beacon_params
194  *
195  * Return: QDF_STATUS - Success or Failure
196  */
197 QDF_STATUS vdev_mgr_beacon_send(struct vdev_mlme_obj *mlme_obj,
198 				struct beacon_params *param);
199 
200 /**
201  * vdev_mgr_beacon_tmpl_send() – MLME API to send beacon template
202  * @mlme_obj: pointer to vdev_mlme_obj
203  * @param: pointer to beacon_tmpl_params
204  *
205  * Return: QDF_STATUS - Success or Failure
206  */
207 QDF_STATUS vdev_mgr_beacon_tmpl_send(struct vdev_mlme_obj *mlme_obj,
208 				     struct beacon_tmpl_params *param);
209 
210 /**
211  * vdev_mgr_bcn_miss_offload_send() – MLME API to send bcn miss offload
212  * @mlme_obj: pointer to vdev_mlme_obj
213  *
214  * Return: QDF_STATUS - Success or Failure
215  */
216 QDF_STATUS vdev_mgr_bcn_miss_offload_send(struct vdev_mlme_obj *mlme_obj);
217 
218 /**
219  * vdev_mgr_multiple_restart_send() – MLME API to send multiple vdev restart
220  * @pdev: pointer to pdev object
221  * @chan: pointer to channel param structure
222  * @disable_hw_ack: ddisable hw ack value
223  * @vdev_ids: pointer to list of vdev ids which require restart
224  * @num_vdevs: number of vdevs in list
225  *
226  * Return: QDF_STATUS - Success or Failure
227  */
228 QDF_STATUS vdev_mlme_multiple_restart_send(struct wlan_objmgr_pdev *pdev,
229 					   struct mlme_channel_param *chan,
230 					   uint32_t disable_hw_ack,
231 					   uint32_t *vdev_ids,
232 					   uint32_t num_vdevs);
233 
234 #endif /* CMN_VDEV_MGR_TGT_IF_ENABLE */
235 #endif /* __VDEV_MGR_OPS_H__ */
236