xref: /wlan-driver/qca-wifi-host-cmn/umac/mlo_mgr/inc/utils_mlo.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name /*
19*5113495bSYour Name  * DOC: contains MLO manager containing util public api's
20*5113495bSYour Name  */
21*5113495bSYour Name #ifndef _WLAN_UTILS_MLO_H_
22*5113495bSYour Name #define _WLAN_UTILS_MLO_H_
23*5113495bSYour Name 
24*5113495bSYour Name #include <wlan_cmn_ieee80211.h>
25*5113495bSYour Name #include "wlan_mlo_mgr_public_structs.h"
26*5113495bSYour Name #include <wlan_cm_ucfg_api.h>
27*5113495bSYour Name #include <wlan_objmgr_vdev_obj.h>
28*5113495bSYour Name #include <wlan_mlo_epcs.h>
29*5113495bSYour Name 
30*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
31*5113495bSYour Name 
32*5113495bSYour Name #define MLO_LINKSPECIFIC_ASSOC_REQ_FC0  0x00
33*5113495bSYour Name #define MLO_LINKSPECIFIC_ASSOC_REQ_FC1  0x00
34*5113495bSYour Name #define MLO_LINKSPECIFIC_ASSOC_RESP_FC0 0x10
35*5113495bSYour Name #define MLO_LINKSPECIFIC_ASSOC_RESP_FC1 0x00
36*5113495bSYour Name #define MLO_LINKSPECIFIC_PROBE_RESP_FC0 0x50
37*5113495bSYour Name #define MLO_LINKSPECIFIC_PROBE_RESP_FC1 0x00
38*5113495bSYour Name 
39*5113495bSYour Name /**
40*5113495bSYour Name  * util_gen_link_assoc_req() - Generate link specific assoc request
41*5113495bSYour Name  * @frame: Pointer to original association request. This should not contain the
42*5113495bSYour Name  * 802.11 header, and must start from the fixed fields in the association
43*5113495bSYour Name  * request. This is required due to some caller semantics built into the end to
44*5113495bSYour Name  * end design.
45*5113495bSYour Name  * @frame_len: Length of original association request
46*5113495bSYour Name  * @isreassoc: Whether this is a re-association request
47*5113495bSYour Name  * @link_id: Link ID for secondary links
48*5113495bSYour Name  * @link_addr: Secondary link's MAC address
49*5113495bSYour Name  * @link_frame: Generated secondary link specific association request. Note that
50*5113495bSYour Name  * this will start from the 802.11 header (unlike the original association
51*5113495bSYour Name  * request). This should be ignored in the case of failure.
52*5113495bSYour Name  * @link_frame_maxsize: Maximum size of generated secondary link specific
53*5113495bSYour Name  * association request
54*5113495bSYour Name  * @link_frame_len: Pointer to location where populated length of generated
55*5113495bSYour Name  * secondary link specific association request should be written. This should be
56*5113495bSYour Name  * ignored in the case of failure.
57*5113495bSYour Name  *
58*5113495bSYour Name  * Generate a link specific logically equivalent association request for the
59*5113495bSYour Name  * secondary link from the original association request containing a Multi-Link
60*5113495bSYour Name  * element. This applies to both association and re-association requests.
61*5113495bSYour Name  * Currently, only two link MLO is supported.
62*5113495bSYour Name  *
63*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
64*5113495bSYour Name  * the reason for error in the case of failure.
65*5113495bSYour Name  */
66*5113495bSYour Name QDF_STATUS
67*5113495bSYour Name util_gen_link_assoc_req(uint8_t *frame, qdf_size_t frame_len, bool isreassoc,
68*5113495bSYour Name 			uint8_t link_id,
69*5113495bSYour Name 			struct qdf_mac_addr link_addr,
70*5113495bSYour Name 			uint8_t *link_frame,
71*5113495bSYour Name 			qdf_size_t link_frame_maxsize,
72*5113495bSYour Name 			qdf_size_t *link_frame_len);
73*5113495bSYour Name 
74*5113495bSYour Name /**
75*5113495bSYour Name  * util_gen_link_assoc_rsp() - Generate link specific assoc response
76*5113495bSYour Name  * @frame: Pointer to original association response. This should not contain the
77*5113495bSYour Name  * 802.11 header, and must start from the fixed fields in the association
78*5113495bSYour Name  * response. This is required due to some caller semantics built into the end to
79*5113495bSYour Name  * end design.
80*5113495bSYour Name  * @frame_len: Length of original association response
81*5113495bSYour Name  * @isreassoc: Whether this is a re-association response
82*5113495bSYour Name  * @link_id: Link ID for secondary links
83*5113495bSYour Name  * @link_addr: Secondary link's MAC address
84*5113495bSYour Name  * @link_frame: Generated secondary link specific association response. Note
85*5113495bSYour Name  * that this will start from the 802.11 header (unlike the original association
86*5113495bSYour Name  * response). This should be ignored in the case of failure.
87*5113495bSYour Name  * @link_frame_maxsize: Maximum size of generated secondary link specific
88*5113495bSYour Name  * association response
89*5113495bSYour Name  * @link_frame_len: Pointer to location where populated length of generated
90*5113495bSYour Name  * secondary link specific association response should be written. This should
91*5113495bSYour Name  * be ignored in the case of failure.
92*5113495bSYour Name  *
93*5113495bSYour Name  * Generate a link specific logically equivalent association response for the
94*5113495bSYour Name  * secondary link from the original association response containing a Multi-Link
95*5113495bSYour Name  * element. This applies to both association and re-association responses.
96*5113495bSYour Name  * Currently, only two link MLO is supported.
97*5113495bSYour Name  *
98*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
99*5113495bSYour Name  * the reason for error in the case of failure.
100*5113495bSYour Name  */
101*5113495bSYour Name QDF_STATUS
102*5113495bSYour Name util_gen_link_assoc_rsp(uint8_t *frame, qdf_size_t frame_len, bool isreassoc,
103*5113495bSYour Name 			uint8_t link_id,
104*5113495bSYour Name 			struct qdf_mac_addr link_addr,
105*5113495bSYour Name 			uint8_t *link_frame,
106*5113495bSYour Name 			qdf_size_t link_frame_maxsize,
107*5113495bSYour Name 			qdf_size_t *link_frame_len);
108*5113495bSYour Name 
109*5113495bSYour Name /**
110*5113495bSYour Name  * util_gen_link_probe_rsp() - Generate link specific probe response
111*5113495bSYour Name  * @frame: Pointer to original probe response. This should not contain the
112*5113495bSYour Name  * 802.11 header, and must start from the fixed fields in the probe
113*5113495bSYour Name  * response. This is required due to some caller semantics built into the end to
114*5113495bSYour Name  * end design.
115*5113495bSYour Name  * @frame_len: Length of original probe response
116*5113495bSYour Name  * @link_addr: Secondary link's MAC address
117*5113495bSYour Name  * @link_id: Link ID for secondary links
118*5113495bSYour Name  * @link_frame: Generated secondary link specific probe response. Note
119*5113495bSYour Name  * that this will start from the 802.11 header (unlike the original probe
120*5113495bSYour Name  * response). This should be ignored in the case of failure.
121*5113495bSYour Name  * @link_frame_maxsize: Maximum size of generated secondary link specific
122*5113495bSYour Name  * probe response
123*5113495bSYour Name  * @link_frame_len: Pointer to location where populated length of generated
124*5113495bSYour Name  * secondary link specific probe response should be written. This should
125*5113495bSYour Name  * be ignored in the case of failure.
126*5113495bSYour Name  *
127*5113495bSYour Name  * Generate a link specific logically equivalent probe response for the
128*5113495bSYour Name  * secondary link from the original probe response containing a Multi-Link
129*5113495bSYour Name  * element. This applies to both probe responses.
130*5113495bSYour Name  * Currently, only two link MLO is supported.
131*5113495bSYour Name  *
132*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
133*5113495bSYour Name  * the reason for error in the case of failure.
134*5113495bSYour Name  */
135*5113495bSYour Name QDF_STATUS
136*5113495bSYour Name util_gen_link_probe_rsp(uint8_t *frame, qdf_size_t frame_len,
137*5113495bSYour Name 			uint8_t link_id,
138*5113495bSYour Name 			struct qdf_mac_addr link_addr,
139*5113495bSYour Name 			uint8_t *link_frame,
140*5113495bSYour Name 			qdf_size_t link_frame_maxsize,
141*5113495bSYour Name 			qdf_size_t *link_frame_len);
142*5113495bSYour Name 
143*5113495bSYour Name /**
144*5113495bSYour Name  * util_find_mlie - Find the first Multi-Link element or the start of the first
145*5113495bSYour Name  * Multi-Link element fragment sequence in a given buffer containing elements,
146*5113495bSYour Name  * if a Multi-Link element or element fragment sequence exists in the given
147*5113495bSYour Name  * buffer.
148*5113495bSYour Name  *
149*5113495bSYour Name  * @buf: Buffer to be searched for the Multi-Link element or the start of the
150*5113495bSYour Name  * Multi-Link element fragment sequence
151*5113495bSYour Name  * @buflen: Length of the buffer
152*5113495bSYour Name  * @mlieseq: Pointer to location where the starting address of the Multi-Link
153*5113495bSYour Name  * element or Multi-Link element fragment sequence should be updated if found
154*5113495bSYour Name  * in the given buffer. The value NULL will be updated to this location if the
155*5113495bSYour Name  * element or element fragment sequence is not found. This should be ignored by
156*5113495bSYour Name  * the caller if the function returns error.
157*5113495bSYour Name  * @mlieseqlen: Pointer to location where the total length of the Multi-Link
158*5113495bSYour Name  * element or Multi-Link element fragment sequence should be updated if found
159*5113495bSYour Name  * in the given buffer. This should be ignored by the caller if the function
160*5113495bSYour Name  * returns error, or if the function indicates that the element or element
161*5113495bSYour Name  * fragment sequence was not found by providing a starting address of NULL.
162*5113495bSYour Name  *
163*5113495bSYour Name  * Find the first Multi-Link element or the start of the first Multi-Link
164*5113495bSYour Name  * element fragment sequence in a given buffer containing elements, if a
165*5113495bSYour Name  * Multi-Link element or element fragment sequence exists in the given buffer.
166*5113495bSYour Name  * The buffer should contain only 802.11 Information elements, and thus should
167*5113495bSYour Name  * not contain other information like 802.11 header, 802.11 frame body
168*5113495bSYour Name  * components like fields that are not elements (e.g. Capability Information
169*5113495bSYour Name  * field, Beacon Interval field), etc.
170*5113495bSYour Name  *
171*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
172*5113495bSYour Name  * the reason for error in the case of failure
173*5113495bSYour Name  */
174*5113495bSYour Name QDF_STATUS
175*5113495bSYour Name util_find_mlie(uint8_t *buf, qdf_size_t buflen, uint8_t **mlieseq,
176*5113495bSYour Name 	       qdf_size_t *mlieseqlen);
177*5113495bSYour Name 
178*5113495bSYour Name /**
179*5113495bSYour Name  * util_find_mlie_by_variant - Find the first Multi-Link element or the start of
180*5113495bSYour Name  * the first Multi-Link element fragment sequence in a given buffer containing
181*5113495bSYour Name  * elements based on variant, if a Multi-Link element or element fragment
182*5113495bSYour Name  * sequence exists in the given buffer.
183*5113495bSYour Name  *
184*5113495bSYour Name  * @buf: Buffer to be searched for the Multi-Link element or the start of the
185*5113495bSYour Name  * Multi-Link element fragment sequence
186*5113495bSYour Name  * @buflen: Length of the buffer
187*5113495bSYour Name  * @mlieseq: Based on the variant, pointer to location where the starting
188*5113495bSYour Name  * address of the Multi-Link element or Multi-Link element fragment sequence
189*5113495bSYour Name  * should be updated if found in the given buffer. The value NULL will be
190*5113495bSYour Name  * updated to this location if the element or element fragment sequence is not
191*5113495bSYour Name  * found. This should be ignored by the caller if the function returns error.
192*5113495bSYour Name  * @mlieseqlen: Pointer to location where the total length of the Multi-Link
193*5113495bSYour Name  * element or Multi-Link element fragment sequence should be updated if found
194*5113495bSYour Name  * in the given buffer. This should be ignored by the caller if the function
195*5113495bSYour Name  * returns error, or if the function indicates that the element or element
196*5113495bSYour Name  * fragment sequence was not found by providing a starting address of NULL.
197*5113495bSYour Name  * @variant: Multi-Link element variant.  The value should be interpreted by the
198*5113495bSYour Name  * caller as a member of enum wlan_ml_variant. (This enum is not directly used
199*5113495bSYour Name  * as an argument, so that non-MLO code that happens to call this function does
200*5113495bSYour Name  * not need to be aware of the definition of the enum, though such a call would
201*5113495bSYour Name  * ultimately result in an error).
202*5113495bSYour Name  *
203*5113495bSYour Name  * Based on variant, find the Multi-Link element or the start of the Multi-Link
204*5113495bSYour Name  * element fragment sequence in a given buffer containing elements, if a
205*5113495bSYour Name  * Multi-Link element or element fragment sequence exists in the given buffer.
206*5113495bSYour Name  * The buffer should contain only 802.11 Information elements, and thus should
207*5113495bSYour Name  * not contain other information like 802.11 header, 802.11 frame body
208*5113495bSYour Name  * components like fields that are not elements (e.g. Capability Information
209*5113495bSYour Name  * field, Beacon Interval field), etc.
210*5113495bSYour Name  *
211*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
212*5113495bSYour Name  * the reason for error in the case of failure
213*5113495bSYour Name  */
214*5113495bSYour Name QDF_STATUS
215*5113495bSYour Name util_find_mlie_by_variant(uint8_t *buf, qdf_size_t buflen, uint8_t **mlieseq,
216*5113495bSYour Name 			  qdf_size_t *mlieseqlen, int variant);
217*5113495bSYour Name 
218*5113495bSYour Name /**
219*5113495bSYour Name  * util_get_mlie_variant() - Get ML IE variant
220*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
221*5113495bSYour Name  * fragment sequence
222*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
223*5113495bSYour Name  * fragment sequence
224*5113495bSYour Name  * @variant: Pointer to the location where the value of the variant should be
225*5113495bSYour Name  * updated. On success, the value should be interpreted by the caller as a
226*5113495bSYour Name  * member of enum wlan_ml_variant. (This enum is not directly used as an
227*5113495bSYour Name  * argument, so that non-MLO code that happens to call this function does not
228*5113495bSYour Name  * need to be aware of the definition of the enum, though such a call would
229*5113495bSYour Name  * ultimately result in an error). The value should be ignored by the caller if
230*5113495bSYour Name  * the function returns error.
231*5113495bSYour Name  *
232*5113495bSYour Name  * Get the variant of the given Multi-Link element or element fragment sequence.
233*5113495bSYour Name  *
234*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
235*5113495bSYour Name  * the reason for error in the case of failure
236*5113495bSYour Name  */
237*5113495bSYour Name QDF_STATUS
238*5113495bSYour Name util_get_mlie_variant(uint8_t *mlieseq, qdf_size_t mlieseqlen,
239*5113495bSYour Name 		      int *variant);
240*5113495bSYour Name 
241*5113495bSYour Name /**
242*5113495bSYour Name  * util_get_bvmlie_mldmacaddr() - Get the MLD MAC address
243*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
244*5113495bSYour Name  * fragment sequence
245*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
246*5113495bSYour Name  * fragment sequence
247*5113495bSYour Name  * @mldmacaddr: Pointer to the location where the MLD MAC address should be
248*5113495bSYour Name  * updated. This should be ignored by the caller if the function returns error.
249*5113495bSYour Name  *
250*5113495bSYour Name  * Get the MLD MAC address from a given Basic variant Multi-Link element
251*5113495bSYour Name  * or element fragment sequence.
252*5113495bSYour Name  *
253*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
254*5113495bSYour Name  * the reason for error in the case of failure
255*5113495bSYour Name  */
256*5113495bSYour Name QDF_STATUS
257*5113495bSYour Name util_get_bvmlie_mldmacaddr(uint8_t *mlieseq, qdf_size_t mlieseqlen,
258*5113495bSYour Name 			   struct qdf_mac_addr *mldmacaddr);
259*5113495bSYour Name 
260*5113495bSYour Name /**
261*5113495bSYour Name  * util_get_bvmlie_eml_cap() - Get the EML capabilities
262*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
263*5113495bSYour Name  * fragment sequence
264*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
265*5113495bSYour Name  * fragment sequence
266*5113495bSYour Name  * @eml_cap_found: Pointer to the location where a boolean status should be
267*5113495bSYour Name  * updated indicating whether the EML cabalility was found or not. This should
268*5113495bSYour Name  * be ignored by the caller if the function returns error.
269*5113495bSYour Name  * @eml_cap: Pointer to the location where the EML capabilities should be
270*5113495bSYour Name  * updated. This should be ignored by the caller if the function indicates
271*5113495bSYour Name  * that the EML capability was not found.
272*5113495bSYour Name  *
273*5113495bSYour Name  * Get the EML capabilities from a given Basic variant Multi-Link element or
274*5113495bSYour Name  * element fragment sequence.
275*5113495bSYour Name  *
276*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
277*5113495bSYour Name  * the reason for error in the case of failure
278*5113495bSYour Name  */
279*5113495bSYour Name QDF_STATUS
280*5113495bSYour Name util_get_bvmlie_eml_cap(uint8_t *mlieseq, qdf_size_t mlieseqlen,
281*5113495bSYour Name 			bool *eml_cap_found,
282*5113495bSYour Name 			uint16_t *eml_cap);
283*5113495bSYour Name 
284*5113495bSYour Name /**
285*5113495bSYour Name  * util_get_bvmlie_msd_cap() - Get the MSD capabilities for Basic variant
286*5113495bSYour Name  * MLO IE
287*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
288*5113495bSYour Name  * fragment sequence
289*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
290*5113495bSYour Name  * fragment sequence
291*5113495bSYour Name  * @msd_cap_found: Pointer to the location where a boolean status should be
292*5113495bSYour Name  * updated indicating whether the MSD cabalility was found or not. This should
293*5113495bSYour Name  * be ignored by the caller if the function returns error.
294*5113495bSYour Name  * @msd_cap: Pointer to the location where the MSD capabilities should be
295*5113495bSYour Name  * updated. This should be ignored by the caller if the function indicates
296*5113495bSYour Name  * that the MSD capability was not found.
297*5113495bSYour Name  *
298*5113495bSYour Name  * Get the MSD capabilities from a given Basic variant Multi-Link element or
299*5113495bSYour Name  * element fragment sequence.
300*5113495bSYour Name  *
301*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
302*5113495bSYour Name  * the reason for error in the case of failure
303*5113495bSYour Name  */
304*5113495bSYour Name QDF_STATUS
305*5113495bSYour Name util_get_bvmlie_msd_cap(uint8_t *mlieseq, qdf_size_t mlieseqlen,
306*5113495bSYour Name 			bool *msd_cap_found, uint16_t *msd_cap);
307*5113495bSYour Name /**
308*5113495bSYour Name  * util_get_bvmlie_primary_linkid() - Get the link identifier
309*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
310*5113495bSYour Name  * fragment sequence
311*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
312*5113495bSYour Name  * fragment sequence
313*5113495bSYour Name  * @linkidfound: Pointer to the location where a boolean status should be
314*5113495bSYour Name  * updated indicating whether the link identifier was found or not. This should
315*5113495bSYour Name  * be ignored by the caller if the function returns error.
316*5113495bSYour Name  * @linkid: Pointer to the location where the value of the link identifier
317*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
318*5113495bSYour Name  * returns error, or if the function indicates that the link identifier was not
319*5113495bSYour Name  * found.
320*5113495bSYour Name  *
321*5113495bSYour Name  * Get the link identifier from a given Basic variant Multi-Link element or
322*5113495bSYour Name  * element fragment sequence, of the AP that transmits the Multi-Link
323*5113495bSYour Name  * element/element fragment sequence or the nontransmitted BSSID in the same
324*5113495bSYour Name  * multiple BSSID set as the AP that transmits the Multi-Link element/element
325*5113495bSYour Name  * fragment sequence and that is affiliated with the MLD that is described in
326*5113495bSYour Name  * the Multi-Link element.
327*5113495bSYour Name  *
328*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
329*5113495bSYour Name  * the reason for error in the case of failure
330*5113495bSYour Name  */
331*5113495bSYour Name QDF_STATUS
332*5113495bSYour Name util_get_bvmlie_primary_linkid(uint8_t *mlieseq, qdf_size_t mlieseqlen,
333*5113495bSYour Name 			       bool *linkidfound, uint8_t *linkid);
334*5113495bSYour Name 
335*5113495bSYour Name /**
336*5113495bSYour Name  * util_get_mlie_common_info_len() - Get the MLD common info len
337*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
338*5113495bSYour Name  * fragment sequence
339*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
340*5113495bSYour Name  * fragment sequence
341*5113495bSYour Name  * @commoninfo_len: Pointer to the location where the value of the MLD common
342*5113495bSYour Name  * info len should be updated. This should be ignored by the caller if the
343*5113495bSYour Name  * function returns error.
344*5113495bSYour Name  *
345*5113495bSYour Name  * Get the MLD common info len from Multi-Link element transmitted by the AP.
346*5113495bSYour Name  *
347*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
348*5113495bSYour Name  * the reason for error in the case of failure
349*5113495bSYour Name  */
350*5113495bSYour Name QDF_STATUS
351*5113495bSYour Name util_get_mlie_common_info_len(uint8_t *mlieseq, qdf_size_t mlieseqlen,
352*5113495bSYour Name 			      uint8_t *commoninfo_len);
353*5113495bSYour Name 
354*5113495bSYour Name /**
355*5113495bSYour Name  * util_get_bvmlie_bssparamchangecnt() - Get the MLD BSS PARAM Change Count
356*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
357*5113495bSYour Name  * fragment sequence
358*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
359*5113495bSYour Name  * fragment sequence
360*5113495bSYour Name  * @bssparamchangecntfound: Pointer to the location where a boolean status
361*5113495bSYour Name  * should be updated indicating whether the MLD BSS PARAM Change Count was
362*5113495bSYour Name  * found or not. This should be ignored by the caller if the function
363*5113495bSYour Name  * returns error.
364*5113495bSYour Name  * @bssparamchangecnt: Pointer to the location where the value of the MLD BSS
365*5113495bSYour Name  * PARAM Change Count should be updated. This should be ignored by the caller
366*5113495bSYour Name  * if the function returns error, or if the function indicates that the MLD
367*5113495bSYour Name  * BSS PARAM Change Count was not found.
368*5113495bSYour Name  *
369*5113495bSYour Name  * Get the MLD BSS PARAM Change Count from Multi-Link element transmitted
370*5113495bSYour Name  * by the AP.
371*5113495bSYour Name  *
372*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
373*5113495bSYour Name  * the reason for error in the case of failure
374*5113495bSYour Name  */
375*5113495bSYour Name QDF_STATUS
376*5113495bSYour Name util_get_bvmlie_bssparamchangecnt(uint8_t *mlieseq, qdf_size_t mlieseqlen,
377*5113495bSYour Name 				  bool *bssparamchangecntfound,
378*5113495bSYour Name 				  uint8_t *bssparamchangecnt);
379*5113495bSYour Name 
380*5113495bSYour Name /**
381*5113495bSYour Name  * util_get_bvmlie_mldcap() - Get the MLD capabilities
382*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
383*5113495bSYour Name  * fragment sequence
384*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
385*5113495bSYour Name  * fragment sequence
386*5113495bSYour Name  * @mldcapfound: Pointer to the location where a boolean status should be
387*5113495bSYour Name  * updated indicating whether the MLD capabilities was found or not. This should
388*5113495bSYour Name  * be ignored by the caller if the function returns error.
389*5113495bSYour Name  * @mldcap: Pointer to the location where the value of the MLD capabilities
390*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
391*5113495bSYour Name  * returns error, or if the function indicates that the MLD capabilities was not
392*5113495bSYour Name  * found.
393*5113495bSYour Name  *
394*5113495bSYour Name  * Get the MLD capabilities from a given Basic variant Multi-Link element or
395*5113495bSYour Name  * element fragment sequence, of the AP that transmits the Multi-Link
396*5113495bSYour Name  * element/element fragment sequence or the nontransmitted BSSID in the same
397*5113495bSYour Name  * multiple BSSID set as the AP that transmits the Multi-Link element/element
398*5113495bSYour Name  * fragment sequence and that is affiliated with the MLD that is described in
399*5113495bSYour Name  * the Multi-Link element.
400*5113495bSYour Name  *
401*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
402*5113495bSYour Name  * the reason for error in the case of failure
403*5113495bSYour Name  */
404*5113495bSYour Name QDF_STATUS
405*5113495bSYour Name util_get_bvmlie_mldcap(uint8_t *mlieseq, qdf_size_t mlieseqlen,
406*5113495bSYour Name 		       bool *mldcapfound, uint16_t *mldcap);
407*5113495bSYour Name /**
408*5113495bSYour Name  * util_get_bvmlie_ext_mld_cap_op_info() - Get Ext MLD Capabilities and
409*5113495bSYour Name  * operation
410*5113495bSYour Name  * @mlie_seq: Starting address of the Multi-Link element or Multi-Link element
411*5113495bSYour Name  * fragment sequence
412*5113495bSYour Name  * @mlie_seqlen: Total length of the Multi-Link element or Multi-Link element
413*5113495bSYour Name  * fragment sequence
414*5113495bSYour Name  * @ext_mld_cap_found: Pointer to the location where a boolean status should be
415*5113495bSYour Name  * updated indicating whether the Ext MLD capabilities was found or not.
416*5113495bSYour Name  * This should be ignored by the caller if the function returns error.
417*5113495bSYour Name  * @ext_mld_cap: Pointer to the location where the value of the Ext MLD
418*5113495bSYour Name  * capabilities should be updated. This should be ignored by the caller if the
419*5113495bSYour Name  * function returns error, or if the function indicates that the MLD
420*5113495bSYour Name  * capabilities was not found.
421*5113495bSYour Name  *
422*5113495bSYour Name  * Get the Ext MLD capabilities from a given Basic variant Multi-Link element or
423*5113495bSYour Name  * element fragment sequence, of the AP that transmits the Multi-Link element/
424*5113495bSYour Name  * element fragment sequence or the non-transmitted BSSID in the same
425*5113495bSYour Name  * multiple BSSID set as the AP that transmits the Multi-Link element/element
426*5113495bSYour Name  * fragment sequence and that is affiliated with the MLD that is described in
427*5113495bSYour Name  * the Multi-Link element.
428*5113495bSYour Name  *
429*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
430*5113495bSYour Name  * the reason for error in the case of failure
431*5113495bSYour Name  */
432*5113495bSYour Name QDF_STATUS
433*5113495bSYour Name util_get_bvmlie_ext_mld_cap_op_info(uint8_t *mlie_seq, qdf_size_t mlie_seqlen,
434*5113495bSYour Name 				    bool *ext_mld_cap_found,
435*5113495bSYour Name 				    uint16_t *ext_mld_cap);
436*5113495bSYour Name 
437*5113495bSYour Name /**
438*5113495bSYour Name  * util_get_bvmlie_persta_partner_info() - Get per-STA partner link information
439*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
440*5113495bSYour Name  * fragment sequence
441*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
442*5113495bSYour Name  * fragment sequence
443*5113495bSYour Name  * @partner_info: Pointer to the location where the partner link information
444*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
445*5113495bSYour Name  * returns error. Note that success will be returned and the number of links in
446*5113495bSYour Name  * this structure will be reported as 0, if no Link Info is found, or no per-STA
447*5113495bSYour Name  * profile is found, or if none of the per-STA profiles includes a MAC address
448*5113495bSYour Name  * in the STA Info field (assuming no errors are encountered).
449*5113495bSYour Name  *
450*5113495bSYour Name  * Get partner link information and NSTR capability information in the
451*5113495bSYour Name  * per-STA profiles present in a Basic variant Multi-Link element.
452*5113495bSYour Name  * The partner link information is returned only for those per-STA profiles
453*5113495bSYour Name  * which have a MAC address in the STA Info field.
454*5113495bSYour Name  * The NSTR capability information is returned only for those per-STA profiles
455*5113495bSYour Name  * which are Complete per-STA profiles.
456*5113495bSYour Name  *
457*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
458*5113495bSYour Name  * the reason for error in the case of failure
459*5113495bSYour Name  */
460*5113495bSYour Name QDF_STATUS
461*5113495bSYour Name util_get_bvmlie_persta_partner_info(uint8_t *mlieseq,
462*5113495bSYour Name 				    qdf_size_t mlieseqlen,
463*5113495bSYour Name 				    struct mlo_partner_info *partner_info);
464*5113495bSYour Name 
465*5113495bSYour Name /**
466*5113495bSYour Name  * util_get_prvmlie_mldid - Get the MLD ID from a given Probe Request
467*5113495bSYour Name  * variant Multi-Link element , of the STA that transmits ML Probe Request
468*5113495bSYour Name  * with the Multi-Link element
469*5113495bSYour Name  *
470*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
471*5113495bSYour Name  * fragment sequence
472*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
473*5113495bSYour Name  * fragment sequence
474*5113495bSYour Name  * @mldidfound: Pointer to the location where a boolean status should be
475*5113495bSYour Name  * updated indicating whether the MLD ID was found or not. This should
476*5113495bSYour Name  * be ignored by the caller if the function returns error.
477*5113495bSYour Name  * @mldid: Pointer to the location where the value of the MLD ID
478*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
479*5113495bSYour Name  * returns error, or if the function indicates that the MLD ID was not
480*5113495bSYour Name  * found.
481*5113495bSYour Name  *
482*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
483*5113495bSYour Name  * the reason for error in the case of failure
484*5113495bSYour Name  */
485*5113495bSYour Name QDF_STATUS
486*5113495bSYour Name util_get_prvmlie_mldid(uint8_t *mlieseq, qdf_size_t mlieseqlen,
487*5113495bSYour Name 		       bool *mldidfound, uint8_t *mldid);
488*5113495bSYour Name 
489*5113495bSYour Name /**
490*5113495bSYour Name  * util_get_prvmlie_persta_link_id() - Get per-STA probe req link information
491*5113495bSYour Name  *
492*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
493*5113495bSYour Name  * fragment sequence
494*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
495*5113495bSYour Name  * fragment sequence
496*5113495bSYour Name  * @probereq_info: Pointer to the location where the probe req link information
497*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
498*5113495bSYour Name  * returns error. Note that success will be returned and the number of links in
499*5113495bSYour Name  * this structure will be reported as 0, if no Link Info is found, or no per-STA
500*5113495bSYour Name  * profile is found.
501*5113495bSYour Name  *
502*5113495bSYour Name  * Get probe req link information in the per-STA profiles present in a Probe req
503*5113495bSYour Name  * variant Multi-Link element.
504*5113495bSYour Name  *
505*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
506*5113495bSYour Name  * the reason for error in the case of failure
507*5113495bSYour Name  */
508*5113495bSYour Name QDF_STATUS
509*5113495bSYour Name util_get_prvmlie_persta_link_id(uint8_t *mlieseq,
510*5113495bSYour Name 				qdf_size_t mlieseqlen,
511*5113495bSYour Name 				struct mlo_probereq_info *probereq_info);
512*5113495bSYour Name 
513*5113495bSYour Name /**
514*5113495bSYour Name  * util_get_rvmlie_mldmacaddr() - Get the MLD MAC address from a given Reconfig
515*5113495bSYour Name  * variant Multi-Link element.
516*5113495bSYour Name  *
517*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
518*5113495bSYour Name  * fragment sequence
519*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
520*5113495bSYour Name  * fragment sequence
521*5113495bSYour Name  * @mldmacaddr: Pointer to the location where the MLD MAC address should be
522*5113495bSYour Name  * updated. This should be ignored by the caller if the function returns error.
523*5113495bSYour Name  * @is_mldmacaddr_found: mld address found or not
524*5113495bSYour Name  *
525*5113495bSYour Name  * Get the MLD MAC address from a given Reconfig variant Multi-Link element
526*5113495bSYour Name  * or element fragment sequence.
527*5113495bSYour Name  *
528*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
529*5113495bSYour Name  * the reason for error in the case of failure
530*5113495bSYour Name  */
531*5113495bSYour Name QDF_STATUS
532*5113495bSYour Name util_get_rvmlie_mldmacaddr(uint8_t *mlieseq, qdf_size_t mlieseqlen,
533*5113495bSYour Name 			   struct qdf_mac_addr *mldmacaddr,
534*5113495bSYour Name 			   bool *is_mldmacaddr_found);
535*5113495bSYour Name 
536*5113495bSYour Name /**
537*5113495bSYour Name  * util_get_rvmlie_persta_link_info() - Get per-STA reconfig link information
538*5113495bSYour Name  *
539*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
540*5113495bSYour Name  * fragment sequence
541*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
542*5113495bSYour Name  * fragment sequence
543*5113495bSYour Name  * @reconfig_info: Pointer to the location where the reconfig link information
544*5113495bSYour Name  * should be updated. This should be ignored by the caller if the function
545*5113495bSYour Name  * returns error. Note that success will be returned and the number of links in
546*5113495bSYour Name  * this structure will be reported as 0, if no Link Info is found, or no per-STA
547*5113495bSYour Name  * profile is found.
548*5113495bSYour Name  *
549*5113495bSYour Name  * Get reconfig link information in the per-STA profiles present in a Reconfig
550*5113495bSYour Name  * variant Multi-Link element.
551*5113495bSYour Name  *
552*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
553*5113495bSYour Name  * the reason for error in the case of failure.
554*5113495bSYour Name  */
555*5113495bSYour Name QDF_STATUS
556*5113495bSYour Name util_get_rvmlie_persta_link_info(uint8_t *mlieseq,
557*5113495bSYour Name 				 qdf_size_t mlieseqlen,
558*5113495bSYour Name 				 struct ml_rv_info *reconfig_info);
559*5113495bSYour Name 
560*5113495bSYour Name /**
561*5113495bSYour Name  * util_get_pav_mlie_link_info() - Get priority access link information
562*5113495bSYour Name  *
563*5113495bSYour Name  * @mlieseq: Starting address of the Multi-Link element or Multi-Link element
564*5113495bSYour Name  * fragment sequence
565*5113495bSYour Name  * @mlieseqlen: Total length of the Multi-Link element or Multi-Link element
566*5113495bSYour Name  * fragment sequence
567*5113495bSYour Name  * @pa_info: Pointer to the location where the priority access multi link
568*5113495bSYour Name  * information is stored.
569*5113495bSYour Name  *
570*5113495bSYour Name  * Get EPCS priority access information from Priority Access Multi-Link element.
571*5113495bSYour Name  *
572*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS in the case of success, QDF_STATUS value giving
573*5113495bSYour Name  * the reason for error in the case of failure.
574*5113495bSYour Name  */
575*5113495bSYour Name QDF_STATUS util_get_pav_mlie_link_info(uint8_t *mlieseq,
576*5113495bSYour Name 				       qdf_size_t mlieseqlen,
577*5113495bSYour Name 				       struct ml_pa_info *pa_info);
578*5113495bSYour Name #else
579*5113495bSYour Name static inline QDF_STATUS
util_gen_link_assoc_req(uint8_t * frame,qdf_size_t frame_len,bool isreassoc,uint8_t link_id,struct qdf_mac_addr link_addr,uint8_t * link_frame,qdf_size_t link_frame_maxsize,qdf_size_t * link_frame_len)580*5113495bSYour Name util_gen_link_assoc_req(uint8_t *frame, qdf_size_t frame_len, bool isreassoc,
581*5113495bSYour Name 			uint8_t link_id,
582*5113495bSYour Name 			struct qdf_mac_addr link_addr,
583*5113495bSYour Name 			uint8_t *link_frame,
584*5113495bSYour Name 			qdf_size_t link_frame_maxsize,
585*5113495bSYour Name 			qdf_size_t *link_frame_len)
586*5113495bSYour Name {
587*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
588*5113495bSYour Name }
589*5113495bSYour Name 
590*5113495bSYour Name static inline QDF_STATUS
util_gen_link_assoc_rsp(uint8_t * frame,qdf_size_t frame_len,bool isreassoc,uint8_t link_id,struct qdf_mac_addr link_addr,uint8_t * link_frame,qdf_size_t link_frame_maxsize,qdf_size_t * link_frame_len)591*5113495bSYour Name util_gen_link_assoc_rsp(uint8_t *frame, qdf_size_t frame_len, bool isreassoc,
592*5113495bSYour Name 			uint8_t link_id,
593*5113495bSYour Name 			struct qdf_mac_addr link_addr,
594*5113495bSYour Name 			uint8_t *link_frame,
595*5113495bSYour Name 			qdf_size_t link_frame_maxsize,
596*5113495bSYour Name 			qdf_size_t *link_frame_len)
597*5113495bSYour Name {
598*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
599*5113495bSYour Name }
600*5113495bSYour Name 
601*5113495bSYour Name static inline QDF_STATUS
util_find_mlie(uint8_t * buf,qdf_size_t buflen,uint8_t ** mlieseq,qdf_size_t * mlieseqlen)602*5113495bSYour Name util_find_mlie(uint8_t *buf, qdf_size_t buflen, uint8_t **mlieseq,
603*5113495bSYour Name 	       qdf_size_t *mlieseqlen)
604*5113495bSYour Name {
605*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
606*5113495bSYour Name }
607*5113495bSYour Name 
608*5113495bSYour Name static inline QDF_STATUS
util_find_mlie_by_variant(uint8_t * buf,qdf_size_t buflen,uint8_t ** mlieseq,qdf_size_t * mlieseqlen)609*5113495bSYour Name util_find_mlie_by_variant(uint8_t *buf, qdf_size_t buflen, uint8_t **mlieseq,
610*5113495bSYour Name 			  qdf_size_t *mlieseqlen)
611*5113495bSYour Name {
612*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
613*5113495bSYour Name }
614*5113495bSYour Name 
615*5113495bSYour Name static inline QDF_STATUS
util_get_mlie_variant(uint8_t * mlieseq,qdf_size_t mlieseqlen,int * variant)616*5113495bSYour Name util_get_mlie_variant(uint8_t *mlieseq, qdf_size_t mlieseqlen,
617*5113495bSYour Name 		      int *variant)
618*5113495bSYour Name {
619*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
620*5113495bSYour Name }
621*5113495bSYour Name 
622*5113495bSYour Name static inline QDF_STATUS
util_get_mlie_common_info_len(uint8_t * mlieseq,qdf_size_t mlieseqlen,uint8_t * commoninfo_len)623*5113495bSYour Name util_get_mlie_common_info_len(uint8_t *mlieseq, qdf_size_t mlieseqlen,
624*5113495bSYour Name 			      uint8_t *commoninfo_len)
625*5113495bSYour Name {
626*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
627*5113495bSYour Name }
628*5113495bSYour Name 
629*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_bssparamchangecnt(uint8_t * mlieseq,qdf_size_t mlieseqlen,bool * bssparamchangecntfound,uint8_t * bssparamchangecnt)630*5113495bSYour Name util_get_bvmlie_bssparamchangecnt(uint8_t *mlieseq, qdf_size_t mlieseqlen,
631*5113495bSYour Name 				  bool *bssparamchangecntfound,
632*5113495bSYour Name 				  uint8_t *bssparamchangecnt)
633*5113495bSYour Name {
634*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
635*5113495bSYour Name }
636*5113495bSYour Name 
637*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_mldmacaddr(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct qdf_mac_addr * mldmacaddr)638*5113495bSYour Name util_get_bvmlie_mldmacaddr(uint8_t *mlieseq, qdf_size_t mlieseqlen,
639*5113495bSYour Name 			   struct qdf_mac_addr *mldmacaddr)
640*5113495bSYour Name {
641*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
642*5113495bSYour Name }
643*5113495bSYour Name 
644*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_eml_cap(uint8_t * mlieseq,qdf_size_t mlieseqlen,bool * eml_cap_found,uint16_t * eml_cap)645*5113495bSYour Name util_get_bvmlie_eml_cap(uint8_t *mlieseq, qdf_size_t mlieseqlen,
646*5113495bSYour Name 			bool *eml_cap_found,
647*5113495bSYour Name 			uint16_t *eml_cap)
648*5113495bSYour Name {
649*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
650*5113495bSYour Name }
651*5113495bSYour Name 
652*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_msd_cap(uint8_t * mlieseq,qdf_size_t mlieseqlen,bool * msd_cap_found,uint16_t * msd_cap)653*5113495bSYour Name util_get_bvmlie_msd_cap(uint8_t *mlieseq, qdf_size_t mlieseqlen,
654*5113495bSYour Name 			bool *msd_cap_found,
655*5113495bSYour Name 			uint16_t *msd_cap)
656*5113495bSYour Name {
657*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
658*5113495bSYour Name }
659*5113495bSYour Name 
660*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_primary_linkid(uint8_t * mlieseq,qdf_size_t mlieseqlen,bool * linkidfound,uint8_t * linkid)661*5113495bSYour Name util_get_bvmlie_primary_linkid(uint8_t *mlieseq, qdf_size_t mlieseqlen,
662*5113495bSYour Name 			       bool *linkidfound, uint8_t *linkid)
663*5113495bSYour Name {
664*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
665*5113495bSYour Name }
666*5113495bSYour Name 
667*5113495bSYour Name static inline QDF_STATUS
util_get_bvmlie_persta_partner_info(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct mlo_partner_info * partner_info)668*5113495bSYour Name util_get_bvmlie_persta_partner_info(uint8_t *mlieseq,
669*5113495bSYour Name 				    qdf_size_t mlieseqlen,
670*5113495bSYour Name 				    struct mlo_partner_info *partner_info)
671*5113495bSYour Name {
672*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
673*5113495bSYour Name }
674*5113495bSYour Name 
675*5113495bSYour Name static inline QDF_STATUS
util_get_prvmlie_persta_link_id(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct mlo_probereq_info * probereq_info)676*5113495bSYour Name util_get_prvmlie_persta_link_id(uint8_t *mlieseq,
677*5113495bSYour Name 				qdf_size_t mlieseqlen,
678*5113495bSYour Name 				struct mlo_probereq_info *probereq_info)
679*5113495bSYour Name {
680*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
681*5113495bSYour Name }
682*5113495bSYour Name 
683*5113495bSYour Name static inline QDF_STATUS
util_get_prvmlie_mldid(uint8_t * mlieseq,qdf_size_t mlieseqlen,bool * mldcapfound,uint8_t * mldcap)684*5113495bSYour Name util_get_prvmlie_mldid(uint8_t *mlieseq, qdf_size_t mlieseqlen,
685*5113495bSYour Name 		       bool *mldcapfound, uint8_t *mldcap)
686*5113495bSYour Name {
687*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
688*5113495bSYour Name }
689*5113495bSYour Name 
690*5113495bSYour Name static inline QDF_STATUS
util_get_rvmlie_mldmacaddr(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct qdf_mac_addr * mldmacaddr,bool * is_mldmacaddr_found)691*5113495bSYour Name util_get_rvmlie_mldmacaddr(uint8_t *mlieseq, qdf_size_t mlieseqlen,
692*5113495bSYour Name 			   struct qdf_mac_addr *mldmacaddr,
693*5113495bSYour Name 			   bool *is_mldmacaddr_found)
694*5113495bSYour Name {
695*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
696*5113495bSYour Name }
697*5113495bSYour Name 
698*5113495bSYour Name static inline QDF_STATUS
util_get_rvmlie_persta_link_info(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct ml_rv_info * reconfig_info)699*5113495bSYour Name util_get_rvmlie_persta_link_info(uint8_t *mlieseq,
700*5113495bSYour Name 				 qdf_size_t mlieseqlen,
701*5113495bSYour Name 				 struct ml_rv_info *reconfig_info)
702*5113495bSYour Name {
703*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
704*5113495bSYour Name }
705*5113495bSYour Name 
706*5113495bSYour Name static inline
util_get_pav_mlie_link_info(uint8_t * mlieseq,qdf_size_t mlieseqlen,struct ml_pa_info * pa_info)707*5113495bSYour Name QDF_STATUS util_get_pav_mlie_link_info(uint8_t *mlieseq,
708*5113495bSYour Name 				       qdf_size_t mlieseqlen,
709*5113495bSYour Name 				       struct ml_pa_info *pa_info)
710*5113495bSYour Name {
711*5113495bSYour Name 	return QDF_STATUS_E_NOSUPPORT;
712*5113495bSYour Name }
713*5113495bSYour Name 
714*5113495bSYour Name #endif /* WLAN_FEATURE_11BE_MLO */
715*5113495bSYour Name #endif /* _WLAN_UTILS_MLO_H_ */
716