xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.h (revision dd4dc88b837a295134aa9869114a2efee0f4894b)
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  * @is_amsdu: boolean to indicate value corresponds to amsdu/ampdu
149  *
150  * Return: QDF_STATUS - Success or Failure
151  */
152 QDF_STATUS vdev_mgr_set_custom_aggr_size_send(
153 			struct vdev_mlme_obj *mlme_obj, bool is_amsdu);
154 
155 /**
156  * vdev_mgr_onfig_ratemask_cmd_send() – MLME API to send ratemask
157  * @mlme_obj: pointer to vdev_mlme_obj
158  * @type: type of ratemask configuration
159  * @lower32: Lower 32 bits in the 1st 64-bit value
160  * @higher32: Higher 32 bits in the 1st 64-bit value
161  * @lower32_2: Lower 32 bits in the 2nd 64-bit value
162  *
163  * Return: QDF_STATUS - Success or Failure
164  */
165 QDF_STATUS vdev_mgr_config_ratemask_cmd_send(
166 				struct vdev_mlme_obj *mlme_obj,
167 				uint8_t type,
168 				uint32_t lower32,
169 				uint32_t higher32,
170 				uint32_t lower32_2);
171 
172 /**
173  * vdev_mgr_beacon_stop() – MLME API to stop beacon
174  * @mlme_obj: pointer to vdev_mlme_obj
175  *
176  * Return: QDF_STATUS - Success or Failure
177  */
178 QDF_STATUS vdev_mgr_beacon_stop(struct vdev_mlme_obj *mlme_obj);
179 
180 /**
181  * vdev_mgr_beacon_free() – MLME API to free beacon
182  * @mlme_obj: pointer to vdev_mlme_obj
183  *
184  * Return: QDF_STATUS - Success or Failure
185  */
186 QDF_STATUS vdev_mgr_beacon_free(struct vdev_mlme_obj *mlme_obj);
187 
188 /**
189  * vdev_mgr_beacon_send() – MLME API to send beacon
190  * @mlme_obj: pointer to vdev_mlme_obj
191  * @param: pointer to beacon_params
192  *
193  * Return: QDF_STATUS - Success or Failure
194  */
195 QDF_STATUS vdev_mgr_beacon_send(struct vdev_mlme_obj *mlme_obj,
196 				struct beacon_params *param);
197 
198 /**
199  * vdev_mgr_beacon_tmpl_send() – MLME API to send beacon template
200  * @mlme_obj: pointer to vdev_mlme_obj
201  * @param: pointer to beacon_tmpl_params
202  *
203  * Return: QDF_STATUS - Success or Failure
204  */
205 QDF_STATUS vdev_mgr_beacon_tmpl_send(struct vdev_mlme_obj *mlme_obj,
206 				     struct beacon_tmpl_params *param);
207 
208 /**
209  * vdev_mgr_bcn_miss_offload_send() – MLME API to send bcn miss offload
210  * @mlme_obj: pointer to vdev_mlme_obj
211  *
212  * Return: QDF_STATUS - Success or Failure
213  */
214 QDF_STATUS vdev_mgr_bcn_miss_offload_send(struct vdev_mlme_obj *mlme_obj);
215 
216 /**
217  * vdev_mgr_multiple_restart_send() – MLME API to send multiple vdev restart
218  * @pdev: pointer to pdev object
219  * @chan: pointer to channel param structure
220  * @disable_hw_ack: ddisable hw ack value
221  * @vdev_ids: pointer to list of vdev ids which require restart
222  * @num_vdevs: number of vdevs in list
223  *
224  * Return: QDF_STATUS - Success or Failure
225  */
226 QDF_STATUS vdev_mlme_multiple_restart_send(struct wlan_objmgr_pdev *pdev,
227 					   struct mlme_channel_param *chan,
228 					   uint32_t disable_hw_ack,
229 					   uint32_t *vdev_ids,
230 					   uint32_t num_vdevs);
231 
232 #endif /* CMN_VDEV_MGR_TGT_IF_ENABLE */
233 #endif /* __VDEV_MGR_OPS_H__ */
234