xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_rx_defs.h (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
1 /*
2  * Copyright (c) 2019-2021 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: wlan_vdev_mgr_tgt_if_rx_defs.h
21  *
22  * This header file provides definitions to data structures for
23  * corresponding vdev mgmt operation
24  */
25 
26 #ifndef __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__
27 #define __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__
28 
29 #include <qdf_timer.h>
30 #include <qdf_atomic.h>
31 #include <qdf_util.h>
32 #include <wlan_cmn.h>
33 #ifdef FEATURE_RUNTIME_PM
34 #include <wlan_pmo_common_public_struct.h>
35 #endif
36 
37 /**
38  * enum wlan_vdev_mgr_tgt_if_rsp_bit - response status bit
39  * START_RESPONSE_BIT: vdev start response bit
40  * RESTART_RESPONSE_BIT: vdev restart response bit
41  * STOP_RESPONSE_BIT: vdev stop response bit
42  * DELETE_RESPONSE_BIT:  vdev delete response bit
43  * PEER_DELETE_ALL_RESPONSE_BIT: vdev peer delete all response bit
44  */
45 enum wlan_vdev_mgr_tgt_if_rsp_bit {
46 	START_RESPONSE_BIT = 0,
47 	RESTART_RESPONSE_BIT = 1,
48 	STOP_RESPONSE_BIT = 2,
49 	DELETE_RESPONSE_BIT = 3,
50 	PEER_DELETE_ALL_RESPONSE_BIT = 4,
51 	RESPONSE_BIT_MAX,
52 };
53 
54 /**
55  * string_from_rsp_bit() - Convert response bit to string
56  * @bit - response bit as in wlan_vdev_mgr_tgt_if_rsp_bit
57  *
58  * Please note to add new string in the array at index equal to
59  * its enum value in wlan_vdev_mgr_tgt_if_rsp_bit.
60  */
61 static inline char *string_from_rsp_bit(enum wlan_vdev_mgr_tgt_if_rsp_bit bit)
62 {
63 	static const char *strings[] = { "START",
64 					"RESTART",
65 					"STOP",
66 					"DELETE",
67 					"PEER DELETE ALL",
68 					"RESPONE MAX"};
69 	return (char *)strings[bit];
70 }
71 
72 #ifdef FEATURE_RUNTIME_PM
73 /* Add extra PMO_RESUME_TIMEOUT for runtime PM resume timeout */
74 #define START_RESPONSE_TIMER           (6000 + PMO_RESUME_TIMEOUT)
75 #define STOP_RESPONSE_TIMER            (4000 + PMO_RESUME_TIMEOUT)
76 #define DELETE_RESPONSE_TIMER          (4000 + PMO_RESUME_TIMEOUT)
77 #define PEER_DELETE_ALL_RESPONSE_TIMER (6000 + PMO_RESUME_TIMEOUT)
78 #else
79 #define START_RESPONSE_TIMER           8000
80 #define STOP_RESPONSE_TIMER            6000
81 #define DELETE_RESPONSE_TIMER          4000
82 #define PEER_DELETE_ALL_RESPONSE_TIMER 6000
83 #endif
84 
85 /**
86  * struct vdev_response_timer - vdev mgmt response ops timer
87  * @psoc: Object manager psoc
88  * @rsp_timer: VDEV MLME mgmt response timer
89  * @rsp_status: variable to check response status
90  * @expire_time: time to expire timer
91  * @timer_status: status of timer
92  * @rsp_timer_inuse: Status bit to inform whether the rsp timer is inuse
93  * @vdev_id: vdev object id
94  */
95 struct vdev_response_timer {
96 	struct wlan_objmgr_psoc *psoc;
97 	qdf_timer_t rsp_timer;
98 	unsigned long rsp_status;
99 	uint32_t expire_time;
100 	QDF_STATUS timer_status;
101 	qdf_atomic_t rsp_timer_inuse;
102 	uint8_t vdev_id;
103 };
104 
105 /**
106  * struct vdev_start_response - start response structure
107  * @vdev_id: vdev id
108  * @requestor_id: requester id
109  * @status: status of start request
110  * @resp_type: response of event type START/RESTART
111  * @chain_mask: chain mask
112  * @smps_mode: smps mode
113  * @mac_id: mac id
114  * @cfgd_tx_streams: configured tx streams
115  * @cfgd_rx_streams: configured rx streams
116  * @max_allowed_tx_power: max tx power allowed
117  */
118 struct vdev_start_response {
119 	uint8_t vdev_id;
120 	uint32_t requestor_id;
121 	uint32_t status;
122 	uint32_t resp_type;
123 	uint32_t chain_mask;
124 	uint32_t smps_mode;
125 	uint32_t mac_id;
126 	uint32_t cfgd_tx_streams;
127 	uint32_t cfgd_rx_streams;
128 	uint32_t max_allowed_tx_power;
129 };
130 
131 /**
132  * struct vdev_stop_response - stop response structure
133  * @vdev_id: vdev id
134  */
135 struct vdev_stop_response {
136 	uint8_t vdev_id;
137 };
138 
139 /**
140  * struct vdev_delete_response - delete response structure
141  * @vdev_id: vdev id
142  */
143 struct vdev_delete_response {
144 	uint8_t vdev_id;
145 };
146 
147 /**
148  * struct peer_delete_all_response - peer delete all response structure
149  * @vdev_id: vdev id
150  * @status: FW status for vdev delete all peer request
151  */
152 struct peer_delete_all_response {
153 	uint8_t vdev_id;
154 	uint8_t status;
155 };
156 
157 /**
158  * struct multi_vdev_restart_resp - multi-vdev restart response structure
159  * @pdev_id: pdev id
160  * @status: FW status for multi vdev restart request
161  * @vdev_id_bmap: Bitmap of vdev_ids
162  */
163 struct multi_vdev_restart_resp {
164 	uint8_t pdev_id;
165 	uint8_t status;
166 	qdf_bitmap(vdev_id_bmap, WLAN_UMAC_PSOC_MAX_VDEVS);
167 };
168 
169 #endif /* __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__ */
170