1 /*
2  * Copyright (c) 2011-2018, 2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: This file contains centralized definitions of converged configuration.
22  */
23 
24 #ifndef __CFG_MLME_TWT_H
25 #define __CFG_MLME_TWT_H
26 #if defined(WLAN_SUPPORT_TWT) && !defined(WLAN_TWT_CONV_SUPPORTED)
27 /*
28  * <ini>
29  * twt_requestor - twt requestor.
30  * @Min: 0
31  * @Max: 1
32  * @Default: 1
33  *
34  * This cfg is used to store twt requestor config.
35  *
36  * Related: NA
37  *
38  * Supported Feature: 11AX
39  *
40  * Usage: Internal
41  *
42  * </ini>
43  */
44 #define CFG_TWT_REQUESTOR CFG_INI_BOOL( \
45 		"twt_requestor", \
46 		1, \
47 		"TWT requestor")
48 /*
49  * <ini>
50  * twt_responder - twt responder.
51  * @Min: 0
52  * @Max: 1
53  * @Default: 0
54  *
55  * This cfg is used to store twt responder config.
56  *
57  * Related: NA
58  *
59  * Supported Feature: 11AX
60  *
61  * Usage: Internal
62  *
63  * </ini>
64  */
65 #define CFG_TWT_RESPONDER CFG_INI_BOOL( \
66 		"twt_responder", \
67 		false, \
68 		"TWT responder")
69 
70 /*
71  * <ini>
72  * enable_twt - Enable Target Wake Time support.
73  * @Min: 0
74  * @Max: 1
75  * @Default: 1
76  *
77  * This ini is used to enable or disable TWT support.
78  *
79  * Related: NA
80  *
81  * Supported Feature: 11AX
82  *
83  * Usage: External
84  *
85  * </ini>
86  */
87 #define CFG_ENABLE_TWT CFG_INI_BOOL( \
88 		"enable_twt", \
89 		1, \
90 		"TWT support")
91 
92 /*
93  * <ini>
94  * twt_congestion_timeout - Target wake time congestion timeout.
95  * @Min: 0
96  * @Max: 10000
97  * @Default: 100
98  *
99  * STA uses this timer to continuously monitor channel congestion levels to
100  * decide whether to start or stop TWT. This ini is used to configure the
101  * target wake time congestion timeout value in the units of milliseconds.
102  * A value of Zero indicates that this is a host triggered TWT and all the
103  * necessary configuration for TWT will be directed from the host.
104  *
105  * Related: NA
106  *
107  * Supported Feature: 11AX
108  *
109  * Usage: External
110  *
111  * </ini>
112  */
113 #define CFG_TWT_CONGESTION_TIMEOUT CFG_INI_UINT( \
114 		"twt_congestion_timeout", \
115 		0, \
116 		10000, \
117 		100, \
118 		CFG_VALUE_OR_DEFAULT, \
119 		"twt congestion timeout")
120 /*
121  * <ini>
122  * twt_bcast_req_resp_config - To enable broadcast twt requestor and responder.
123  * @Min: 0 Disable the extended twt capability
124  * @Max: 3
125  * @Default: 1
126  *
127  * This cfg is used to configure the broadcast TWT requestor and responder.
128  * Bitmap for enabling the broadcast twt requestor and responder.
129  * BIT 0: Enable/Disable broadcast twt requestor.
130  * BIT 1: Enable/Disable broadcast twt responder.
131  * BIT 2-31: Reserved
132  *
133  * Related: CFG_ENABLE_TWT
134  * Related: CFG_TWT_RESPONDER
135  * Related: CFG_TWT_REQUESTOR
136  *
137  * Supported Feature: 11AX
138  *
139  * Usage: External
140  *
141  * </ini>
142  */
143 /* defines to extract the requestor/responder capabilities from cfg */
144 #define TWT_BCAST_REQ_INDEX    0
145 #define TWT_BCAST_REQ_BITS     1
146 #define TWT_BCAST_RES_INDEX    1
147 #define TWT_BCAST_RES_BITS     1
148 
149 #define CFG_BCAST_TWT_REQ_RESP CFG_INI_UINT( \
150 		"twt_bcast_req_resp_config", \
151 		0, \
152 		3, \
153 		1, \
154 		CFG_VALUE_OR_DEFAULT, \
155 		"BROADCAST TWT CAPABILITY")
156 
157 #define CFG_TWT_GET_BCAST_REQ(_bcast_conf) \
158 	QDF_GET_BITS(_bcast_conf, \
159 		     TWT_BCAST_REQ_INDEX, \
160 		     TWT_BCAST_REQ_BITS)
161 
162 #define CFG_TWT_GET_BCAST_RES(_bcast_conf) \
163 	QDF_GET_BITS(_bcast_conf, \
164 		     TWT_BCAST_RES_INDEX, \
165 		     TWT_BCAST_RES_BITS)
166 
167 /*
168  * <ini>
169  * enable_twt_24ghz - Enable Target wake time when STA is connected on 2.4Ghz
170  * band.
171  * @Min: 0
172  * @Max: 1
173  * @Default: 1
174  *
175  * This ini is used to enable/disable the host TWT when STA is connected to AP
176  * in 2.4Ghz band.
177  *
178  * Related: NA
179  *
180  * Supported Feature: 11AX
181  *
182  * Usage: External
183  *
184  * </ini>
185  */
186 #define CFG_ENABLE_TWT_24GHZ CFG_INI_BOOL( \
187 		"enable_twt_24ghz", \
188 		true, \
189 		"enable twt in 2.4Ghz band")
190 
191 #define CFG_TWT_ALL \
192 	CFG(CFG_ENABLE_TWT) \
193 	CFG(CFG_TWT_REQUESTOR) \
194 	CFG(CFG_TWT_RESPONDER) \
195 	CFG(CFG_TWT_CONGESTION_TIMEOUT) \
196 	CFG(CFG_BCAST_TWT_REQ_RESP) \
197 	CFG(CFG_ENABLE_TWT_24GHZ)
198 #endif
199 #endif /* __CFG_MLME_TWT_H */
200