xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h (revision 503663c6daafffe652fa360bde17243568cd6d2a)
1 /*
2  * Copyright (c) 2019 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_CHAINMASK,
79 	WLAN_MLME_CFG_RX_CHAINMASK,
80 	WLAN_MLME_CFG_PKT_POWERSAVE,
81 	WLAN_MLME_CFG_MAX_LI_OF_MODDTIM,
82 	WLAN_MLME_CFG_DYNDTIM_CNT,
83 	WLAN_MLME_CFG_LISTEN_INTERVAL,
84 	WLAN_MLME_CFG_MODDTIM_CNT,
85 	WLAN_MLME_CFG_BEACON_BUFFER,
86 	WLAN_MLME_CFG_BEACON_OFFSETS,
87 	WLAN_MLME_CFG_PROFILE_IDX,
88 	WLAN_MLME_CFG_PROFILE_NUM,
89 	WLAN_MLME_CFG_MBSSID_FLAGS,
90 	WLAN_MLME_CFG_VDEVID_TRANS,
91 	WLAN_MLME_CFG_TRANS_BSSID,
92 	WLAN_MLME_CFG_TYPE,
93 	WLAN_MLME_CFG_SUBTYPE,
94 	WLAN_MLME_CFG_UAPSD,
95 	WLAN_MLME_CFG_TX_ENCAP_TYPE,
96 	WLAN_MLME_CFG_RX_DECAP_TYPE,
97 	WLAN_MLME_CFG_RATEMASK_TYPE,
98 	WLAN_MLME_CFG_RATEMASK_LOWER32,
99 	WLAN_MLME_CFG_RATEMASK_HIGHER32,
100 	WLAN_MLME_CFG_RATEMASK_LOWER32_2,
101 	WLAN_MLME_CFG_BCN_TX_RATE,
102 	WLAN_MLME_CFG_BCN_TX_RATE_CODE,
103 	WLAN_MLME_CFG_RATEMASK_CAPS,
104 	WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY,
105 	WLAN_MLME_CFG_MAX_GROUP_KEYS,
106 	WLAN_MLME_CFG_MAX
107 };
108 
109 /**
110  * struct wlan_vdev_mgr_cfg - vdev mgr configuration
111  * @value: configuration value
112  * @tsf: tsf adjust value
113  * @trans_bssid: transmission bssid address
114  * @ssid_cfg: ssid configuration
115  */
116 struct wlan_vdev_mgr_cfg {
117 	union {
118 		uint32_t value;
119 		uint64_t tsf;
120 		uint8_t trans_bssid[QDF_MAC_ADDR_SIZE];
121 		struct mlme_mac_ssid ssid_cfg;
122 	};
123 };
124 
125 /**
126  * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to
127  * set value into mlme vdev mgr component
128  * @vdev: pointer to vdev object
129  * @param_id: param of type wlan_mlme_cfg_id
130  * @mlme_cfg: value to set into mlme vdev mgr
131  *
132  * Return: QDF_STATUS
133  */
134 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev,
135 					enum wlan_mlme_cfg_id param_id,
136 					struct wlan_vdev_mgr_cfg mlme_cfg);
137 
138 /**
139  * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to
140  * get value from mlme vdev mgr component
141  * @vdev: pointer to vdev object
142  * @param_id: param of type wlan_mlme_cfg_id
143  * @param_value: pointer to store the value of mlme vdev mgr
144  *
145  * Return: void
146  */
147 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev,
148 				  enum wlan_mlme_cfg_id param_id,
149 				  uint32_t *param_value);
150 
151 /**
152  * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to
153  * get ssid from mlme vdev mgr component
154  * @vdev: pointer to vdev object
155  * @ssid: pointer to store the ssid
156  * @ssid_len: pointer to store the ssid length value
157  *
158  * Return: void
159  */
160 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev,
161 				       uint8_t *ssid,
162 				       uint8_t *ssid_len);
163 
164 /**
165  * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to
166  * get bssid from mlme vdev mgr component
167  * @vdev: pointer to vdev object
168  * @bssid: pointer to store the bssid
169  *
170  */
171 void ucfg_wlan_vdev_mgr_get_param_bssid(
172 				struct wlan_objmgr_vdev *vdev,
173 				uint8_t *bssid);
174 
175 /**
176  * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to
177  * get beacon buffer from mlme vdev mgr component
178  * @vdev: pointer to vdev object
179  * @buf: pointer to store the beacon buffer
180  *
181  * Return: void
182  */
183 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev,
184 					  qdf_nbuf_t buf);
185 
186 /**
187  * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to
188  * get transmission bssid from mlme vdev mgr component
189  * @vdev: pointer to vdev object
190  * @addr: pointer to store the transmission bssid
191  *
192  * Return: void
193  */
194 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev,
195 					uint8_t *addr);
196 
197 /**
198  * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to
199  * get tsf_adjust from mlme vdev mgr component
200  * @vdev: pointer to vdev object
201  * @tsf_adjust: pointer to store the tsf adjust value
202  *
203  * Return: void
204  */
205 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev,
206 				       uint64_t *tsf_adjust);
207 
208 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */
209