xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h (revision a86b23ee68a2491aede2e03991f3fb37046f4e41)
1 /*
2  * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 /**
18  * DOC: Define VDEV MLME init/deinit APIs
19  */
20 
21 #ifndef _WLAN_VDEV_MLME_MAIN_H_
22 #define _WLAN_VDEV_MLME_MAIN_H_
23 
24 #include <wlan_objmgr_psoc_obj.h>
25 #include <wlan_lmac_if_def.h>
26 
27 /**
28  * wlan_mlme_get_lmac_tx_ops() - get tx ops
29  * @psoc: pointer to psoc obj
30  *
31  * Return: pointer to tx ops
32  */
33 static inline struct wlan_lmac_if_mlme_tx_ops *
34 wlan_mlme_get_lmac_tx_ops(struct wlan_objmgr_psoc *psoc)
35 {
36 	struct wlan_lmac_if_tx_ops *tx_ops;
37 
38 	tx_ops = wlan_psoc_get_lmac_if_txops(psoc);
39 	if (!tx_ops) {
40 		qdf_err("tx_ops is NULL");
41 		return NULL;
42 	}
43 
44 	return &tx_ops->mops;
45 }
46 
47 /**
48  * enum wlan_vdev_state - VDEV state
49  * @WLAN_VDEV_S_INIT:                     Default state, IDLE state
50  * @WLAN_VDEV_S_START:                    START  state
51  * @WLAN_VDEV_S_DFS_CAC_WAIT:             CAC period
52  * @WLAN_VDEV_S_UP:                       UP state
53  * @WLAN_VDEV_S_SUSPEND:                  Suspend state
54  * @WLAN_VDEV_S_STOP:                     STOP state
55  * @WLAN_VDEV_S_MAX:                      MAX state
56  * @WLAN_VDEV_SS_START_START_PROGRESS:    Start progress sub state
57  * @WLAN_VDEV_SS_START_RESTART_PROGRESS:  Restart progress sub state
58  * @WLAN_VDEV_SS_START_CONN_PROGRESS:     Start connection progress sub state
59  * @WLAN_VDEV_SS_START_DISCONN_PROGRESS:  Start Disconnection progress sub state
60  * @WLAN_VDEV_SS_SUSPEND_SUSPEND_DOWN:    Suspend down sub state
61  * @WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART: Suspend restart sub state
62  * @WLAN_VDEV_SS_SUSPEND_HOST_RESTART:    Suspend host restart sub state
63  * @WLAN_VDEV_SS_SUSPEND_CSA_RESTART:     Suspend CSA restart sub state
64  * @WLAN_VDEV_SS_STOP_STOP_PROGRESS:      Stop progress sub state
65  * @WLAN_VDEV_SS_STOP_DOWN_PROGRESS:      Stop down progress sub state
66  * @WLAN_VDEV_SS_IDLE:                    Idle sub state (used, only if a state
67  *                                        does not have substate)
68  * @WLAN_VDEV_SS_MAX:                     Max substate
69  */
70 enum wlan_vdev_state {
71 	WLAN_VDEV_S_INIT = 0,
72 	WLAN_VDEV_S_START = 1,
73 	WLAN_VDEV_S_DFS_CAC_WAIT = 2,
74 	WLAN_VDEV_S_UP = 3,
75 	WLAN_VDEV_S_SUSPEND = 4,
76 	WLAN_VDEV_S_STOP = 5,
77 	WLAN_VDEV_S_MAX = 6,
78 	WLAN_VDEV_SS_START_START_PROGRESS = 7,
79 	WLAN_VDEV_SS_START_RESTART_PROGRESS = 8,
80 	WLAN_VDEV_SS_START_CONN_PROGRESS = 9,
81 	WLAN_VDEV_SS_START_DISCONN_PROGRESS = 10,
82 	WLAN_VDEV_SS_SUSPEND_SUSPEND_DOWN = 11,
83 	WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART = 12,
84 	WLAN_VDEV_SS_SUSPEND_HOST_RESTART = 13,
85 	WLAN_VDEV_SS_SUSPEND_CSA_RESTART = 14,
86 	WLAN_VDEV_SS_STOP_STOP_PROGRESS = 15,
87 	WLAN_VDEV_SS_STOP_DOWN_PROGRESS = 16,
88 	WLAN_VDEV_SS_IDLE = 17,
89 	WLAN_VDEV_SS_MAX = 18,
90 };
91 
92 /**
93  * enum wlan_vdev_sm_evt - VDEV SM event
94  * @WLAN_VDEV_SM_EV_START:               Start VDEV UP operation
95  * @WLAN_VDEV_SM_EV_START_REQ:           Invokes VDEV START handshake
96  * @WLAN_VDEV_SM_EV_RESTART_REQ:         Invokes VDEV RESTART handshake
97  * @WLAN_VDEV_SM_EV_START_RESP:          Notification on START resp
98  * @WLAN_VDEV_SM_EV_RESTART_RESP:        Notification on RESTART resp
99  * @WLAN_VDEV_SM_EV_START_REQ_FAIL:      Notification on START req failure
100  * @WLAN_VDEV_SM_EV_RESTART_REQ_FAIL:    Notification on RESTART req failure
101  * @WLAN_VDEV_SM_EV_START_SUCCESS:       Notification of Join Success
102  * @WLAN_VDEV_SM_EV_CONN_PROGRESS:       Invoke Connection/up process
103  * @WLAN_VDEV_SM_EV_STA_CONN_START:      Invoke Station Connection process
104  * @WLAN_VDEV_SM_EV_DFS_CAC_WAIT:        Invoke DFS CAC WAIT timer
105  * @WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED:   Notifies on CAC completion
106  * @WLAN_VDEV_SM_EV_DOWN:                Invokes VDEV DOWN operation
107  * @WLAN_VDEV_SM_EV_CONNECTION_FAIL:     Notifications for UP/connection failure
108  * @WLAN_VDEV_SM_EV_STOP_RESP:           Notifcation of stop response
109  * @WLAN_VDEV_SM_EV_STOP_FAIL:           Notification of stop req failure
110  * @WLAN_VDEV_SM_EV_DOWN_FAIL:           Notification of down failure
111  * @WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE: Notification of Peer cleanup complete
112  * @WLAN_VDEV_SM_EV_SUSPEND_RESTART:     Invokes suspend restart operation
113  * @WLAN_VDEV_SM_EV_HOST_RESTART:        Invokes host only restart operation
114  * @WLAN_VDEV_SM_EV_UP_HOST_RESTART:     Moves to UP state without sending UP
115  *                                       command to lower layers
116  * @WLAN_VDEV_SM_EV_FW_VDEV_RESTART:     Invokes FW only restart
117  * @WLAN_VDEV_SM_EV_UP_FAIL:             Notification of up command failure
118  * @WLAN_VDEV_SM_EV_RADAR_DETECTED:      Notification of RADAR detected, Random
119  *                                       channel should be selected before
120  *                                       triggering this event
121  * @WLAN_VDEV_SM_EV_CSA_RESTART:         Invokes CSA IE operation
122  * @WLAN_VDEV_SM_EV_CSA_COMPLETE:        Notifiction of CSA process complete
123  * @WLAN_VDEV_SM_EV_MLME_DOWN_REQ:       Invoke DOWN command operation
124  * @WLAN_VDEV_SM_EV_DOWN_COMPLETE:       Notification of DOWN complete
125  * @WLAN_VDEV_SM_EV_ROAM:                Notifiction on ROAMING
126  * @WLAN_VDEV_SM_EV_STOP_REQ:            Invoke API to initiate STOP handshake
127  * @WLAN_VDEV_SM_EV_CHAN_SWITCH_DISABLED:Test only, CSA completes without
128  *					 change in channel
129  */
130 enum wlan_vdev_sm_evt {
131 	WLAN_VDEV_SM_EV_START = 0,
132 	WLAN_VDEV_SM_EV_START_REQ = 1,
133 	WLAN_VDEV_SM_EV_RESTART_REQ = 2,
134 	WLAN_VDEV_SM_EV_START_RESP = 3,
135 	WLAN_VDEV_SM_EV_RESTART_RESP = 4,
136 	WLAN_VDEV_SM_EV_START_REQ_FAIL = 5,
137 	WLAN_VDEV_SM_EV_RESTART_REQ_FAIL = 6,
138 	WLAN_VDEV_SM_EV_START_SUCCESS = 7,
139 	WLAN_VDEV_SM_EV_CONN_PROGRESS = 8,
140 	WLAN_VDEV_SM_EV_STA_CONN_START = 9,
141 	WLAN_VDEV_SM_EV_DFS_CAC_WAIT = 10,
142 	WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED = 11,
143 	WLAN_VDEV_SM_EV_DOWN = 12,
144 	WLAN_VDEV_SM_EV_CONNECTION_FAIL = 13,
145 	WLAN_VDEV_SM_EV_STOP_RESP = 14,
146 	WLAN_VDEV_SM_EV_STOP_FAIL = 15,
147 	WLAN_VDEV_SM_EV_DOWN_FAIL = 16,
148 	WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE = 17,
149 	WLAN_VDEV_SM_EV_SUSPEND_RESTART = 18,
150 	WLAN_VDEV_SM_EV_HOST_RESTART = 19,
151 	WLAN_VDEV_SM_EV_UP_HOST_RESTART = 20,
152 	WLAN_VDEV_SM_EV_FW_VDEV_RESTART = 21,
153 	WLAN_VDEV_SM_EV_UP_FAIL = 22,
154 	WLAN_VDEV_SM_EV_RADAR_DETECTED = 23,
155 	WLAN_VDEV_SM_EV_CSA_RESTART = 24,
156 	WLAN_VDEV_SM_EV_CSA_COMPLETE = 25,
157 	WLAN_VDEV_SM_EV_MLME_DOWN_REQ = 26,
158 	WLAN_VDEV_SM_EV_DOWN_COMPLETE = 27,
159 	WLAN_VDEV_SM_EV_ROAM = 28,
160 	WLAN_VDEV_SM_EV_STOP_REQ = 29,
161 	WLAN_VDEV_SM_EV_CHAN_SWITCH_DISABLED = 30,
162 };
163 
164 /**
165  * wlan_vdev_mlme_init - Initializes VDEV MLME component
166  *
167  * Registers callbacks with object manager for create/destroy
168  *
169  * Return: SUCCESS on successful registration
170  *         FAILURE, if registration fails
171  */
172 QDF_STATUS wlan_vdev_mlme_init(void);
173 
174 /**
175  * wlan_vdev_mlme_deinit - Uninitializes VDEV MLME component
176  *
177  * Unregisters callbacks with object manager for create/destroy
178  *
179  * Return: SUCCESS on successful registration
180  *         FAILURE, if registration fails
181  */
182 QDF_STATUS wlan_vdev_mlme_deinit(void);
183 
184 /**
185  * wlan_mlme_psoc_enable - MLME initializations on PSOC enable
186  *
187  * Initializes MLME params on PSOC eable
188  *
189  * Return: SUCCESS on successful initialization
190  *         FAILURE, if initialization fails
191  */
192 QDF_STATUS wlan_mlme_psoc_enable(struct wlan_objmgr_psoc *psoc);
193 
194 /**
195  * wlan_mlme_psoc_disable - MLME clean up on PSOC disable
196  *
197  * cleanup MLME params on PSOC eable
198  *
199  * Return: SUCCESS on successful cleanup
200  *         FAILURE, if cleanup fails
201  */
202 QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc);
203 #endif
204