xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h (revision 97f44cd39e4ff816eaa1710279d28cf6b9e65ad9)
1 /*
2  * Copyright (c) 2019-2020, 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_MAX
108 };
109 
110 /**
111  * struct wlan_vdev_mgr_cfg - vdev mgr configuration
112  * @value: configuration value
113  * @tsf: tsf adjust value
114  * @trans_bssid: transmission bssid address
115  * @ssid_cfg: ssid configuration
116  */
117 struct wlan_vdev_mgr_cfg {
118 	union {
119 		uint32_t value;
120 		uint64_t tsf;
121 		uint8_t trans_bssid[QDF_MAC_ADDR_SIZE];
122 		struct wlan_ssid ssid_cfg;
123 	};
124 };
125 
126 /**
127  * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to
128  * set value into mlme vdev mgr component
129  * @vdev: pointer to vdev object
130  * @param_id: param of type wlan_mlme_cfg_id
131  * @mlme_cfg: value to set into mlme vdev mgr
132  *
133  * Return: QDF_STATUS
134  */
135 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev,
136 					enum wlan_mlme_cfg_id param_id,
137 					struct wlan_vdev_mgr_cfg mlme_cfg);
138 
139 /**
140  * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to
141  * get value from mlme vdev mgr component
142  * @vdev: pointer to vdev object
143  * @param_id: param of type wlan_mlme_cfg_id
144  * @param_value: pointer to store the value of mlme vdev mgr
145  *
146  * Return: void
147  */
148 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev,
149 				  enum wlan_mlme_cfg_id param_id,
150 				  uint32_t *param_value);
151 
152 /**
153  * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to
154  * get ssid from mlme vdev mgr component
155  * @vdev: pointer to vdev object
156  * @ssid: pointer to store the ssid
157  * @ssid_len: pointer to store the ssid length value
158  *
159  * Return: void
160  */
161 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev,
162 				       uint8_t *ssid,
163 				       uint8_t *ssid_len);
164 
165 /**
166  * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to
167  * get bssid from mlme vdev mgr component
168  * @vdev: pointer to vdev object
169  * @bssid: pointer to store the bssid
170  *
171  */
172 void ucfg_wlan_vdev_mgr_get_param_bssid(
173 				struct wlan_objmgr_vdev *vdev,
174 				uint8_t *bssid);
175 
176 /**
177  * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to
178  * get beacon buffer from mlme vdev mgr component
179  * @vdev: pointer to vdev object
180  * @buf: pointer to store the beacon buffer
181  *
182  * Return: void
183  */
184 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev,
185 					  qdf_nbuf_t buf);
186 
187 /**
188  * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to
189  * get transmission bssid from mlme vdev mgr component
190  * @vdev: pointer to vdev object
191  * @addr: pointer to store the transmission bssid
192  *
193  * Return: void
194  */
195 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev,
196 					uint8_t *addr);
197 
198 /**
199  * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to
200  * get tsf_adjust from mlme vdev mgr component
201  * @vdev: pointer to vdev object
202  * @tsf_adjust: pointer to store the tsf adjust value
203  *
204  * Return: void
205  */
206 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev,
207 				       uint64_t *tsf_adjust);
208 
209 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */
210