xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.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_ucfg_api.h
21  *
22  * This header file provides definitions to data structures required
23  * for mlme ucfg and declarations for ucfg public APIs
24  */
25 
26 #ifndef __WLAN_VDEV_MGR_UCFG_API_H__
27 #define __WLAN_VDEV_MGR_UCFG_API_H__
28 
29 #include <wlan_objmgr_vdev_obj.h>
30 #include <wlan_vdev_mgr_tgt_if_tx_defs.h>
31 #include <qdf_nbuf.h>
32 #include <include/wlan_vdev_mlme.h>
33 
34 enum wlan_mlme_cfg_id {
35 	WLAN_MLME_CFG_DTIM_PERIOD,
36 	WLAN_MLME_CFG_SLOT_TIME,
37 	WLAN_MLME_CFG_PROTECTION_MODE,
38 	WLAN_MLME_CFG_BEACON_INTERVAL,
39 	WLAN_MLME_CFG_LDPC,
40 	WLAN_MLME_CFG_NSS,
41 	WLAN_MLME_CFG_TSF_ADJUST,
42 	WLAN_MLME_CFG_ASSOC_ID,
43 	WLAN_MLME_CFG_VHT_CAPS,
44 	WLAN_MLME_CFG_SUBFER,
45 	WLAN_MLME_CFG_MUBFER,
46 	WLAN_MLME_CFG_SUBFEE,
47 	WLAN_MLME_CFG_MUBFEE,
48 	WLAN_MLME_CFG_IMLICIT_BF,
49 	WLAN_MLME_CFG_SOUNDING_DIM,
50 	WLAN_MLME_CFG_BFEE_STS_CAP,
51 	WLAN_MLME_CFG_TXBF_CAPS,
52 	WLAN_MLME_CFG_HT_CAPS,
53 	WLAN_MLME_CFG_HE_OPS,
54 	WLAN_MLME_CFG_RTS_THRESHOLD,
55 	WLAN_MLME_CFG_FRAG_THRESHOLD,
56 	WLAN_MLME_CFG_PROBE_DELAY,
57 	WLAN_MLME_CFG_REPEAT_PROBE_TIME,
58 	WLAN_MLME_CFG_DROP_UNENCRY,
59 	WLAN_MLME_CFG_TX_PWR_LIMIT,
60 	WLAN_MLME_CFG_TX_POWER,
61 	WLAN_MLME_CFG_AMPDU,
62 	WLAN_MLME_CFG_AMPDU_SIZE,
63 	WLAN_MLME_CFG_AMSDU,
64 	WLAN_MLME_CFG_AMSDU_SIZE,
65 	WLAN_MLME_CFG_SSID,
66 	WLAN_MLME_CFG_SSID_LEN,
67 	WLAN_MLME_CFG_OP_MODE,
68 	WLAN_MLME_CFG_BMISS_FIRST_BCNT,
69 	WLAN_MLME_CFG_BMISS_FINAL_BCNT,
70 	WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME,
71 	WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME,
72 	WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME,
73 	WLAN_MLME_CFG_RATE_FLAGS,
74 	WLAN_MLME_CFG_PER_BAND_TX_MGMT_RATE,
75 	WLAN_MLME_CFG_MAX_RATE,
76 	WLAN_MLME_CFG_TX_MGMT_RATE,
77 	WLAN_MLME_CFG_TX_MGMT_RATE_CODE,
78 	WLAN_MLME_CFG_TX_RTSCTS_RATE,
79 	WLAN_MLME_CFG_TX_CHAINMASK,
80 	WLAN_MLME_CFG_RX_CHAINMASK,
81 	WLAN_MLME_CFG_PKT_POWERSAVE,
82 	WLAN_MLME_CFG_MAX_LI_OF_MODDTIM,
83 	WLAN_MLME_CFG_DYNDTIM_CNT,
84 	WLAN_MLME_CFG_LISTEN_INTERVAL,
85 	WLAN_MLME_CFG_MODDTIM_CNT,
86 	WLAN_MLME_CFG_BEACON_BUFFER,
87 	WLAN_MLME_CFG_BEACON_OFFSETS,
88 	WLAN_MLME_CFG_PROFILE_IDX,
89 	WLAN_MLME_CFG_PROFILE_NUM,
90 	WLAN_MLME_CFG_MBSSID_FLAGS,
91 	WLAN_MLME_CFG_VDEVID_TRANS,
92 	WLAN_MLME_CFG_TRANS_BSSID,
93 	WLAN_MLME_CFG_TYPE,
94 	WLAN_MLME_CFG_SUBTYPE,
95 	WLAN_MLME_CFG_UAPSD,
96 	WLAN_MLME_CFG_TX_ENCAP_TYPE,
97 	WLAN_MLME_CFG_RX_DECAP_TYPE,
98 	WLAN_MLME_CFG_RATEMASK_TYPE,
99 	WLAN_MLME_CFG_RATEMASK_LOWER32,
100 	WLAN_MLME_CFG_RATEMASK_HIGHER32,
101 	WLAN_MLME_CFG_RATEMASK_LOWER32_2,
102 	WLAN_MLME_CFG_BCN_TX_RATE,
103 	WLAN_MLME_CFG_BCN_TX_RATE_CODE,
104 	WLAN_MLME_CFG_RATEMASK_CAPS,
105 	WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY,
106 	WLAN_MLME_CFG_MAX_GROUP_KEYS,
107 	WLAN_MLME_CFG_TX_STREAMS,
108 	WLAN_MLME_CFG_RX_STREAMS,
109 	WLAN_MLME_CFG_ENABLE_DISABLE_RTT_RESPONDER_ROLE,
110 	WLAN_MLME_CFG_ENABLE_DISABLE_RTT_INITIATOR_ROLE,
111 #ifdef WLAN_FEATURE_11BE
112 	WLAN_MLME_CFG_EHT_OPS,
113 #endif
114 	WLAN_MLME_CFG_MAX
115 };
116 
117 /**
118  * struct wlan_vdev_mgr_cfg - vdev mgr configuration
119  * @value: configuration value
120  * @tsf: tsf adjust value
121  * @trans_bssid: transmission bssid address
122  * @ssid_cfg: ssid configuration
123  */
124 struct wlan_vdev_mgr_cfg {
125 	union {
126 		uint32_t value;
127 		uint64_t tsf;
128 		uint8_t trans_bssid[QDF_MAC_ADDR_SIZE];
129 		struct wlan_ssid ssid_cfg;
130 	};
131 };
132 
133 /**
134  * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to
135  * set value into mlme vdev mgr component
136  * @vdev: pointer to vdev object
137  * @param_id: param of type wlan_mlme_cfg_id
138  * @mlme_cfg: value to set into mlme vdev mgr
139  *
140  * Return: QDF_STATUS
141  */
142 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev,
143 					enum wlan_mlme_cfg_id param_id,
144 					struct wlan_vdev_mgr_cfg mlme_cfg);
145 
146 /**
147  * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to
148  * get value from mlme vdev mgr component
149  * @vdev: pointer to vdev object
150  * @param_id: param of type wlan_mlme_cfg_id
151  * @param_value: pointer to store the value of mlme vdev mgr
152  *
153  * Return: void
154  */
155 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev,
156 				  enum wlan_mlme_cfg_id param_id,
157 				  uint32_t *param_value);
158 
159 /**
160  * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to
161  * get ssid from mlme vdev mgr component
162  * @vdev: pointer to vdev object
163  * @ssid: pointer to store the ssid
164  * @ssid_len: pointer to store the ssid length value
165  *
166  * Return: void
167  */
168 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev,
169 				       uint8_t *ssid,
170 				       uint8_t *ssid_len);
171 
172 /**
173  * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to
174  * get bssid from mlme vdev mgr component
175  * @vdev: pointer to vdev object
176  * @bssid: pointer to store the bssid
177  *
178  */
179 void ucfg_wlan_vdev_mgr_get_param_bssid(
180 				struct wlan_objmgr_vdev *vdev,
181 				uint8_t *bssid);
182 
183 /**
184  * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to
185  * get beacon buffer from mlme vdev mgr component
186  * @vdev: pointer to vdev object
187  * @buf: pointer to store the beacon buffer
188  *
189  * Return: void
190  */
191 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev,
192 					  qdf_nbuf_t buf);
193 
194 /**
195  * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to
196  * get transmission bssid from mlme vdev mgr component
197  * @vdev: pointer to vdev object
198  * @addr: pointer to store the transmission bssid
199  *
200  * Return: void
201  */
202 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev,
203 					uint8_t *addr);
204 
205 /**
206  * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to
207  * get tsf_adjust from mlme vdev mgr component
208  * @vdev: pointer to vdev object
209  * @tsf_adjust: pointer to store the tsf adjust value
210  *
211  * Return: void
212  */
213 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev,
214 				       uint64_t *tsf_adjust);
215 
216 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */
217