xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_vdev_mlme_main.h (revision dd4dc88b837a295134aa9869114a2efee0f4894b)
1 /*
2  * Copyright (c) 2018-2019 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 	return &psoc->soc_cb.tx_ops.mops;
37 }
38 
39 /**
40  * enum wlan_vdev_state - VDEV state
41  * @WLAN_VDEV_S_INIT:                     Default state, IDLE state
42  * @WLAN_VDEV_S_START:                    START  state
43  * @WLAN_VDEV_S_DFS_CAC_WAIT:             CAC period
44  * @WLAN_VDEV_S_UP:                       UP state
45  * @WLAN_VDEV_S_SUSPEND:                  Suspend state
46  * @WLAN_VDEV_S_STOP:                     STOP state
47  * @WLAN_VDEV_S_MAX:                      MAX state
48  * @WLAN_VDEV_SS_START_START_PROGRESS:    Start progress sub state
49  * @WLAN_VDEV_SS_START_RESTART_PROGRESS:  Restart progress sub state
50  * @WLAN_VDEV_SS_START_CONN_PROGRESS:     Start connection progress sub state
51  * @WLAN_VDEV_SS_START_DISCONN_PROGRESS:  Start Disconnection progress sub state
52  * @WLAN_VDEV_SS_SUSPEND_SUSPEND_DOWN:    Suspend down sub state
53  * @WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART: Suspend restart sub state
54  * @WLAN_VDEV_SS_SUSPEND_HOST_RESTART:    Suspend host restart sub state
55  * @WLAN_VDEV_SS_SUSPEND_CSA_RESTART:     Suspend CSA restart sub state
56  * @WLAN_VDEV_SS_STOP_STOP_PROGRESS:      Stop progress sub state
57  * @WLAN_VDEV_SS_STOP_DOWN_PROGRESS:      Stop down progress sub state
58  * @WLAN_VDEV_SS_IDLE:                    Idle sub state (used, only if a state
59  *                                        does not have substate)
60  * @WLAN_VDEV_SS_MAX:                     Max substate
61  */
62 enum wlan_vdev_state {
63 	WLAN_VDEV_S_INIT = 0,
64 	WLAN_VDEV_S_START = 1,
65 	WLAN_VDEV_S_DFS_CAC_WAIT = 2,
66 	WLAN_VDEV_S_UP = 3,
67 	WLAN_VDEV_S_SUSPEND = 4,
68 	WLAN_VDEV_S_STOP = 5,
69 	WLAN_VDEV_S_MAX = 6,
70 	WLAN_VDEV_SS_START_START_PROGRESS = 7,
71 	WLAN_VDEV_SS_START_RESTART_PROGRESS = 8,
72 	WLAN_VDEV_SS_START_CONN_PROGRESS = 9,
73 	WLAN_VDEV_SS_START_DISCONN_PROGRESS = 10,
74 	WLAN_VDEV_SS_SUSPEND_SUSPEND_DOWN = 11,
75 	WLAN_VDEV_SS_SUSPEND_SUSPEND_RESTART = 12,
76 	WLAN_VDEV_SS_SUSPEND_HOST_RESTART = 13,
77 	WLAN_VDEV_SS_SUSPEND_CSA_RESTART = 14,
78 	WLAN_VDEV_SS_STOP_STOP_PROGRESS = 15,
79 	WLAN_VDEV_SS_STOP_DOWN_PROGRESS = 16,
80 	WLAN_VDEV_SS_IDLE = 17,
81 	WLAN_VDEV_SS_MAX = 18,
82 };
83 
84 /**
85  * enum wlan_vdev_sm_evt - VDEV SM event
86  * @WLAN_VDEV_SM_EV_START:               Start VDEV UP operation
87  * @WLAN_VDEV_SM_EV_START_REQ:           Invokes VDEV START handshake
88  * @WLAN_VDEV_SM_EV_RESTART_REQ:         Invokes VDEV RESTART handshake
89  * @WLAN_VDEV_SM_EV_START_RESP:          Notification on START resp
90  * @WLAN_VDEV_SM_EV_RESTART_RESP:        Notification on RESTART resp
91  * @WLAN_VDEV_SM_EV_START_REQ_FAIL:      Notification on START req failure
92  * @WLAN_VDEV_SM_EV_RESTART_REQ_FAIL:    Notification on RESTART req failure
93  * @WLAN_VDEV_SM_EV_START_SUCCESS:       Notification of Join Success
94  * @WLAN_VDEV_SM_EV_CONN_PROGRESS:       Invoke Connection/up process
95  * @WLAN_VDEV_SM_EV_STA_CONN_START:      Invoke Station Connection process
96  * @WLAN_VDEV_SM_EV_DFS_CAC_WAIT:        Invoke DFS CAC WAIT timer
97  * @WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED:   Notifies on CAC completion
98  * @WLAN_VDEV_SM_EV_DOWN:                Invokes VDEV DOWN operation
99  * @WLAN_VDEV_SM_EV_CONNECTION_FAIL:     Notifications for UP/connection failure
100  * @WLAN_VDEV_SM_EV_STOP_RESP:           Notifcation of stop response
101  * @WLAN_VDEV_SM_EV_STOP_FAIL:           Notification of stop req failure
102  * @WLAN_VDEV_SM_EV_DOWN_FAIL:           Notification of down failure
103  * @WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE: Notification of Peer cleanup complete
104  * @WLAN_VDEV_SM_EV_SUSPEND_RESTART:     Invokes suspend restart operation
105  * @WLAN_VDEV_SM_EV_HOST_RESTART:        Invokes host only restart operation
106  * @WLAN_VDEV_SM_EV_UP_HOST_RESTART:     Moves to UP state without sending UP
107  *                                       command to lower layers
108  * @WLAN_VDEV_SM_EV_FW_VDEV_RESTART:     Invokes FW only restart
109  * @WLAN_VDEV_SM_EV_UP_FAIL:             Notification of up command failure
110  * @WLAN_VDEV_SM_EV_RADAR_DETECTED:      Notification of RADAR detected, Random
111  *                                       channel should be selected before
112  *                                       triggering this event
113  * @WLAN_VDEV_SM_EV_CSA_RESTART:         Invokes CSA IE operation
114  * @WLAN_VDEV_SM_EV_CSA_COMPLETE:        Notifiction of CSA process complete
115  * @WLAN_VDEV_SM_EV_MLME_DOWN_REQ:       Invoke DOWN command operation
116  * @WLAN_VDEV_SM_EV_DOWN_COMPLETE:       Notification of DOWN complete
117  * @WLAN_VDEV_SM_EV_ROAM:                Notifiction on ROAMING
118  * @WLAN_VDEV_SM_EV_STOP_REQ:            Invoke API to initiate STOP handshake
119  */
120 enum wlan_vdev_sm_evt {
121 	WLAN_VDEV_SM_EV_START = 0,
122 	WLAN_VDEV_SM_EV_START_REQ = 1,
123 	WLAN_VDEV_SM_EV_RESTART_REQ = 2,
124 	WLAN_VDEV_SM_EV_START_RESP = 3,
125 	WLAN_VDEV_SM_EV_RESTART_RESP = 4,
126 	WLAN_VDEV_SM_EV_START_REQ_FAIL = 5,
127 	WLAN_VDEV_SM_EV_RESTART_REQ_FAIL = 6,
128 	WLAN_VDEV_SM_EV_START_SUCCESS = 7,
129 	WLAN_VDEV_SM_EV_CONN_PROGRESS = 8,
130 	WLAN_VDEV_SM_EV_STA_CONN_START = 9,
131 	WLAN_VDEV_SM_EV_DFS_CAC_WAIT = 10,
132 	WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED = 11,
133 	WLAN_VDEV_SM_EV_DOWN = 12,
134 	WLAN_VDEV_SM_EV_CONNECTION_FAIL = 13,
135 	WLAN_VDEV_SM_EV_STOP_RESP = 14,
136 	WLAN_VDEV_SM_EV_STOP_FAIL = 15,
137 	WLAN_VDEV_SM_EV_DOWN_FAIL = 16,
138 	WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE = 17,
139 	WLAN_VDEV_SM_EV_SUSPEND_RESTART = 18,
140 	WLAN_VDEV_SM_EV_HOST_RESTART = 19,
141 	WLAN_VDEV_SM_EV_UP_HOST_RESTART = 20,
142 	WLAN_VDEV_SM_EV_FW_VDEV_RESTART = 21,
143 	WLAN_VDEV_SM_EV_UP_FAIL = 22,
144 	WLAN_VDEV_SM_EV_RADAR_DETECTED = 23,
145 	WLAN_VDEV_SM_EV_CSA_RESTART = 24,
146 	WLAN_VDEV_SM_EV_CSA_COMPLETE = 25,
147 	WLAN_VDEV_SM_EV_MLME_DOWN_REQ = 26,
148 	WLAN_VDEV_SM_EV_DOWN_COMPLETE = 27,
149 	WLAN_VDEV_SM_EV_ROAM = 28,
150 	WLAN_VDEV_SM_EV_STOP_REQ = 29,
151 };
152 
153 /**
154  * wlan_vdev_mlme_init - Initializes VDEV MLME component
155  *
156  * Registers callbacks with object manager for create/destroy
157  *
158  * Return: SUCCESS on successful registration
159  *         FAILURE, if registration fails
160  */
161 QDF_STATUS wlan_vdev_mlme_init(void);
162 
163 /**
164  * wlan_vdev_mlme_deinit - Uninitializes VDEV MLME component
165  *
166  * Unregisters callbacks with object manager for create/destroy
167  *
168  * Return: SUCCESS on successful registration
169  *         FAILURE, if registration fails
170  */
171 QDF_STATUS wlan_vdev_mlme_deinit(void);
172 
173 /**
174  * wlan_mlme_psoc_enable - MLME initializations on PSOC enable
175  *
176  * Initializes MLME params on PSOC eable
177  *
178  * Return: SUCCESS on successful initialization
179  *         FAILURE, if initialization fails
180  */
181 QDF_STATUS wlan_mlme_psoc_enable(struct wlan_objmgr_psoc *psoc);
182 
183 /**
184  * wlan_mlme_psoc_disable - MLME clean up on PSOC disable
185  *
186  * cleanup MLME params on PSOC eable
187  *
188  * Return: SUCCESS on successful cleanup
189  *         FAILURE, if cleanup fails
190  */
191 QDF_STATUS wlan_mlme_psoc_disable(struct wlan_objmgr_psoc *psoc);
192 #endif
193