xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_ucfg_api.c (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
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.c
21  *
22  * This file provides definitions to APIs to get/set mlme fields in
23  * vdev mlme core data structures
24  */
25 #include <wlan_vdev_mgr_tgt_if_tx_api.h>
26 #include "wlan_vdev_mgr_ucfg_api.h"
27 #include "include/wlan_vdev_mlme.h"
28 #include <wlan_mlme_dbg.h>
29 #include <wlan_vdev_mgr_utils_api.h>
30 #include <wlan_vdev_mlme_api.h>
31 #include <qdf_module.h>
32 
33 void ucfg_wlan_vdev_mgr_get_param_bssid(
34 				struct wlan_objmgr_vdev *vdev,
35 				uint8_t *bssid)
36 {
37 	struct vdev_mlme_mgmt *mlme_mgmt;
38 	struct vdev_mlme_obj *vdev_mlme;
39 
40 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
41 						vdev, WLAN_UMAC_COMP_MLME);
42 
43 	if (!vdev_mlme) {
44 		mlme_err("VDEV_MLME is NULL");
45 		return;
46 	}
47 
48 	mlme_mgmt = &vdev_mlme->mgmt;
49 
50 	qdf_mem_copy(bssid, mlme_mgmt->generic.bssid,
51 		     QDF_MAC_ADDR_SIZE);
52 }
53 
54 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_param_bssid);
55 
56 void ucfg_wlan_vdev_mgr_get_param_ssid(
57 				struct wlan_objmgr_vdev *vdev,
58 				uint8_t *ssid, uint8_t *ssid_len)
59 {
60 	struct vdev_mlme_mgmt *mlme_mgmt;
61 	struct vdev_mlme_obj *vdev_mlme;
62 
63 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
64 			vdev, WLAN_UMAC_COMP_MLME);
65 
66 	if (!vdev_mlme) {
67 		QDF_ASSERT(0);
68 		return;
69 	}
70 
71 	mlme_mgmt = &vdev_mlme->mgmt;
72 
73 	*ssid_len = mlme_mgmt->generic.ssid_len;
74 	qdf_mem_copy(ssid, mlme_mgmt->generic.ssid,
75 		     mlme_mgmt->generic.ssid_len);
76 }
77 
78 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_param_ssid);
79 
80 void ucfg_wlan_vdev_mgr_get_beacon_buffer(
81 				struct wlan_objmgr_vdev *vdev,
82 				qdf_nbuf_t buf)
83 {
84 	struct vdev_mlme_obj *vdev_mlme;
85 	struct vdev_mlme_mgmt *mlme_mgmt;
86 
87 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
88 			vdev, WLAN_UMAC_COMP_MLME);
89 
90 	if (!vdev_mlme) {
91 		QDF_ASSERT(0);
92 		return;
93 	}
94 
95 	mlme_mgmt = &vdev_mlme->mgmt;
96 
97 	buf = mlme_mgmt->beacon_info.beacon_buffer;
98 }
99 
100 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_beacon_buffer);
101 
102 void ucfg_wlan_vdev_mgr_get_trans_bssid(
103 				struct wlan_objmgr_vdev *vdev,
104 				uint8_t *addr)
105 {
106 	struct vdev_mlme_obj *vdev_mlme;
107 	struct vdev_mlme_mgmt *mlme_mgmt;
108 
109 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
110 			vdev, WLAN_UMAC_COMP_MLME);
111 
112 	if (!vdev_mlme) {
113 		QDF_ASSERT(0);
114 		return;
115 	}
116 
117 	mlme_mgmt = &vdev_mlme->mgmt;
118 
119 	qdf_mem_copy(addr, mlme_mgmt->mbss_11ax.trans_bssid, QDF_MAC_ADDR_SIZE);
120 }
121 
122 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_trans_bssid);
123 
124 void ucfg_wlan_vdev_mgr_get_tsf_adjust(
125 				struct wlan_objmgr_vdev *vdev,
126 				uint64_t *tsf_adjust)
127 {
128 	struct vdev_mlme_obj *vdev_mlme;
129 	struct vdev_mlme_proto *mlme_proto;
130 
131 	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
132 
133 	if (!vdev_mlme) {
134 		mlme_err("VDEV MLME is NULL");
135 		return;
136 	}
137 
138 	mlme_proto = &vdev_mlme->proto;
139 
140 	*tsf_adjust = mlme_proto->generic.tsfadjust;
141 }
142 
143 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_tsf_adjust);
144 
145 QDF_STATUS ucfg_wlan_vdev_mgr_set_param(
146 				struct wlan_objmgr_vdev *vdev,
147 				enum wlan_mlme_cfg_id param_id,
148 				struct wlan_vdev_mgr_cfg mlme_cfg)
149 {
150 	struct vdev_mlme_obj *vdev_mlme;
151 
152 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
153 							vdev,
154 							WLAN_UMAC_COMP_MLME);
155 
156 	if (!vdev_mlme) {
157 		QDF_ASSERT(0);
158 		return QDF_STATUS_E_FAILURE;
159 	}
160 
161 	return wlan_util_vdev_mlme_set_param(vdev_mlme, param_id, mlme_cfg);
162 }
163 
164 qdf_export_symbol(ucfg_wlan_vdev_mgr_set_param);
165 
166 void ucfg_wlan_vdev_mgr_get_param(
167 				struct wlan_objmgr_vdev *vdev,
168 				enum wlan_mlme_cfg_id param_id,
169 				uint32_t *value)
170 {
171 	struct vdev_mlme_obj *vdev_mlme;
172 
173 	vdev_mlme = wlan_objmgr_vdev_get_comp_private_obj(
174 							vdev,
175 							WLAN_UMAC_COMP_MLME);
176 
177 	if (!vdev_mlme) {
178 		QDF_ASSERT(0);
179 		return;
180 	}
181 
182 	wlan_util_vdev_mlme_get_param(vdev_mlme, param_id, value);
183 }
184 
185 qdf_export_symbol(ucfg_wlan_vdev_mgr_get_param);
186