1 /*
2  * Copyright (c) 2011-2012,2014-2015,2018-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /*
21  *
22  * This file lim_sme_req_utils.h contains the utility definitions
23  * LIM uses while processing SME request messages.
24  * Author:        Chandra Modumudi
25  * Date:          02/13/02
26  * History:-
27  * Date           Modified by    Modification Information
28  * --------------------------------------------------------------------
29  */
30 #ifndef __LIM_SME_REQ_UTILS_H
31 #define __LIM_SME_REQ_UTILS_H
32 
33 #include "sir_api.h"
34 #include "lim_types.h"
35 
36 /* LIM SME request messages related utility functions */
37 
38 /**
39  * lim_is_sme_start_bss_req_valid() - To validate sme start bss request
40  * @mac_ctx: Pointer to Global MAC structure
41  * @start_bss_req: Pointer to received SME_START_BSS_REQ message
42  * @bss_type: bss type
43  *
44  * This function is called by lim_process_sme_req_messages() upon
45  * receiving SME_START_BSS_REQ message from application.
46  *
47  * Return: true when received SME_START_BSS_REQ is formatted correctly false
48  *         otherwise
49  */
50 bool lim_is_sme_start_bss_req_valid(struct mac_context *mac_ctx,
51 				    struct start_bss_config *start_bss_req,
52 				    enum bss_type bss_type);
53 uint8_t lim_set_rs_nie_wp_aiefrom_sme_start_bss_req_message(struct mac_context *,
54 							    tpSirRSNie, struct pe_session *);
55 
56 /**
57  * lim_is_sme_disassoc_req_valid() - Validate disassoc req message
58  * @mac: Pointer to Global MAC structure
59  * @disassoc_req: Pointer to received SME_DISASSOC_REQ message
60  * @pe_session: Pointer to the PE session
61  *
62  * This function is called by lim_process_sme_req_messages() upon
63  * receiving SME_DISASSOC_REQ message from application.
64  *
65  * Return: true  When received SME_DISASSOC_REQ is formatted correctly
66  *         false otherwise
67  */
68 bool lim_is_sme_disassoc_req_valid(struct mac_context *mac,
69 				   struct disassoc_req *disassoc_req,
70 				   struct pe_session *pe_session);
71 
72 /**
73  * lim_is_sme_deauth_req_valid() - Validate deauth req message
74  * @mac: Pointer to Global MAC structure
75  * @disassoc_req: Pointer to received SME_DEAUTH_REQ message
76  * @pe_session: Pointer to the PE session
77  *
78  * This function is called by lim_process_sme_req_messages() upon
79  * receiving SME_DEAUTH_REQ message from application.
80  *
81  * Return: true  When received SME_DEAUTH_REQ is formatted correctly
82  *         false otherwise
83  */
84 bool lim_is_sme_deauth_req_valid(struct mac_context *mac,
85 				 struct deauth_req *deauth_req,
86 				 struct pe_session *pe_session);
87 
88 /**
89  * lim_is_sme_disassoc_cnf_valid() - Validate disassoc cnf message
90  * @mac: Pointer to Global MAC structure
91  * @disassoc_cnf: Pointer to received SME_DISASSOC_CNF message
92  * @pe_session: Pointer to the PE session
93  *
94  * This function is called by lim_process_sme_req_messages() upon
95  * receiving SME_DISASSOC_CNF message from application.
96  *
97  * Return: true  When received SME_DISASSOC_CNF is formatted correctly
98  *         false otherwise
99  */
100 bool lim_is_sme_disassoc_cnf_valid(struct mac_context *mac,
101 				   struct disassoc_cnf *disassoc_cnf,
102 				   struct pe_session *pe_session);
103 
104 #endif /* __LIM_SME_REQ_UTILS_H */
105