xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h (revision 8ddef7dd9a290d4a9b1efd5d3efacf51d78a1a0d)
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_TXBF_CAPS,
51 	WLAN_MLME_CFG_HT_CAPS,
52 	WLAN_MLME_CFG_HE_OPS,
53 	WLAN_MLME_CFG_RTS_THRESHOLD,
54 	WLAN_MLME_CFG_FRAG_THRESHOLD,
55 	WLAN_MLME_CFG_PROBE_DELAY,
56 	WLAN_MLME_CFG_REPEAT_PROBE_TIME,
57 	WLAN_MLME_CFG_DROP_UNENCRY,
58 	WLAN_MLME_CFG_TX_PWR_LIMIT,
59 	WLAN_MLME_CFG_TX_POWER,
60 	WLAN_MLME_CFG_AMPDU,
61 	WLAN_MLME_CFG_AMSDU,
62 	WLAN_MLME_CFG_SSID,
63 	WLAN_MLME_CFG_SSID_LEN,
64 	WLAN_MLME_CFG_OP_MODE,
65 	WLAN_MLME_CFG_BMISS_FIRST_BCNT,
66 	WLAN_MLME_CFG_BMISS_FINAL_BCNT,
67 	WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME,
68 	WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME,
69 	WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME,
70 	WLAN_MLME_CFG_RATE_FLAGS,
71 	WLAN_MLME_CFG_PER_BAND_TX_MGMT_RATE,
72 	WLAN_MLME_CFG_MAX_RATE,
73 	WLAN_MLME_CFG_TX_MGMT_RATE,
74 	WLAN_MLME_CFG_TX_CHAINMASK,
75 	WLAN_MLME_CFG_RX_CHAINMASK,
76 	WLAN_MLME_CFG_PKT_POWERSAVE,
77 	WLAN_MLME_CFG_MAX_LI_OF_MODDTIM,
78 	WLAN_MLME_CFG_DYNDTIM_CNT,
79 	WLAN_MLME_CFG_LISTEN_INTERVAL,
80 	WLAN_MLME_CFG_MODDTIM_CNT,
81 	WLAN_MLME_CFG_BEACON_BUFFER,
82 	WLAN_MLME_CFG_BEACON_OFFSETS,
83 	WLAN_MLME_CFG_PROILE_IDX,
84 	WLAN_MLME_CFG_PROFILE_NUM,
85 	WLAN_MLME_CFG_MBSSID_FLAGS,
86 	WLAN_MLME_CFG_VDEVID_TRANS,
87 	WLAN_MLME_CFG_TRANS_BSSID,
88 	WLAN_MLME_CFG_TYPE,
89 	WLAN_MLME_CFG_SUBTYPE,
90 	WLAN_MLME_CFG_UAPSD,
91 	WLAN_MLME_CFG_TX_DECAP_TYPE,
92 	WLAN_MLME_CFG_RX_DECAP_TYPE,
93 	WLAN_MLME_CFG_RATEMASK_TYPE,
94 	WLAN_MLME_CFG_RATEMASK_LOWER32,
95 	WLAN_MLME_CFG_RATEMASK_HIGHER32,
96 	WLAN_MLME_CFG_RATEMASK_LOWER32_2,
97 	WLAN_MLME_CFG_BCN_TX_RATE,
98 	WLAN_MLME_CFG_2G_VHT,
99 	WLAN_MLME_CFG_11AX_STUB,
100 	WLAN_MLME_CFG_MAX
101 };
102 
103 /**
104  * struct wlan_vdev_mgr_cfg - vdev mgr configuration
105  * @value: configuration value
106  * @tsf: tsf adjust value
107  * @trans_bssid: transmission bssid address
108  * @ssid_cfg: ssid configuration
109  */
110 struct wlan_vdev_mgr_cfg {
111 	union {
112 		uint32_t value;
113 		uint64_t tsf;
114 		uint8_t trans_bssid[QDF_MAC_ADDR_SIZE];
115 		struct mlme_mac_ssid ssid_cfg;
116 	};
117 };
118 
119 /**
120  * ucfg_wlan_vdev_mgr_set_param() – ucfg MLME API to
121  * set value into mlme vdev mgr component
122  * @vdev: pointer to vdev object
123  * @param_id: param of type wlan_mlme_cfg_id
124  * @mlme_cfg: value to set into mlme vdev mgr
125  *
126  * Return: QDF_STATUS
127  */
128 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(struct wlan_objmgr_vdev *vdev,
129 					enum wlan_mlme_cfg_id param_id,
130 					struct wlan_vdev_mgr_cfg mlme_cfg);
131 
132 /**
133  * ucfg_wlan_vdev_mgr_get_param() – ucfg MLME API to
134  * get value from mlme vdev mgr component
135  * @vdev: pointer to vdev object
136  * @param_id: param of type wlan_mlme_cfg_id
137  * @param_value: pointer to store the value of mlme vdev mgr
138  *
139  * Return: void
140  */
141 void ucfg_wlan_vdev_mgr_get_param(struct wlan_objmgr_vdev *vdev,
142 				  enum wlan_mlme_cfg_id param_id,
143 				  uint32_t *param_value);
144 
145 /**
146  * ucfg_wlan_vdev_mgr_get_param_ssid() – ucfg MLME API to
147  * get ssid from mlme vdev mgr component
148  * @vdev: pointer to vdev object
149  * @ssid: pointer to store the ssid
150  * @ssid_len: pointer to store the ssid length value
151  *
152  * Return: void
153  */
154 void ucfg_wlan_vdev_mgr_get_param_ssid(struct wlan_objmgr_vdev *vdev,
155 				       uint8_t *ssid,
156 				       uint8_t *ssid_len);
157 
158 /**
159  * ucfg_wlan_vdev_mgr_get_param_bssid() – ucfg MLME API to
160  * get bssid from mlme vdev mgr component
161  * @vdev: pointer to vdev object
162  * @bssid: pointer to store the bssid
163  *
164  */
165 void ucfg_wlan_vdev_mgr_get_param_bssid(
166 				struct wlan_objmgr_vdev *vdev,
167 				uint8_t *bssid);
168 
169 /**
170  * ucfg_wlan_vdev_mgr_get_beacon_buffer() – ucfg MLME API to
171  * get beacon buffer from mlme vdev mgr component
172  * @vdev: pointer to vdev object
173  * @buf: pointer to store the beacon buffer
174  *
175  * Return: void
176  */
177 void ucfg_wlan_vdev_mgr_get_beacon_buffer(struct wlan_objmgr_vdev *vdev,
178 					  qdf_nbuf_t buf);
179 
180 /**
181  * ucfg_wlan_vdev_mgr_get_trans_bssid() – ucfg MLME API to
182  * get transmission bssid from mlme vdev mgr component
183  * @vdev: pointer to vdev object
184  * @addr: pointer to store the transmission bssid
185  *
186  * Return: void
187  */
188 void ucfg_wlan_vdev_mgr_get_trans_bssid(struct wlan_objmgr_vdev *vdev,
189 					uint8_t *addr);
190 
191 /**
192  * ucfg_wlan_vdev_mgr_get_tsf_adjust() – ucfg MLME API to
193  * get tsf_adjust from mlme vdev mgr component
194  * @vdev: pointer to vdev object
195  * @tsf_adjust: pointer to store the tsf adjust value
196  *
197  * Return: void
198  */
199 void ucfg_wlan_vdev_mgr_get_tsf_adjust(struct wlan_objmgr_vdev *vdev,
200 				       uint64_t *tsf_adjust);
201 
202 #endif /* __WLAN_VDEV_MLME_UCFG_H__ */
203