xref: /wlan-dirver/qcacld-3.0/core/mac/src/pe/lim/lim_send_messages.h (revision 2933838e5c361d2ceff0278c7bf3d087c9189fff)
1 /*
2  * Copyright (c) 2011-2019, 2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 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  * lim_send_messages.h: Provides functions to send messages or Indications to HAL.
23  * Author:    Sunit Bhatia
24  * Date:       09/21/2006
25  * History:-
26  * Date        Modified by            Modification Information
27  *
28  * --------------------------------------------------------------------------
29  *
30  */
31 #ifndef __LIM_SEND_MESSAGES_H
32 #define __LIM_SEND_MESSAGES_H
33 
34 #include "ani_global.h"
35 #include "lim_types.h"
36 #include "wma_if.h"
37 #include "sir_params.h"
38 QDF_STATUS lim_send_beacon_params(struct mac_context *mac,
39 				     tpUpdateBeaconParams pUpdatedBcnParams,
40 				     struct pe_session *pe_session);
41 /* QDF_STATUS lim_send_beacon_params(struct mac_context *mac, tpUpdateBeaconParams pUpdatedBcnParams); */
42 QDF_STATUS lim_send_mode_update(struct mac_context *mac,
43 				   tUpdateVHTOpMode *tempParam,
44 				   struct pe_session *pe_session);
45 QDF_STATUS lim_send_rx_nss_update(struct mac_context *mac,
46 				     tUpdateRxNss *tempParam,
47 				     struct pe_session *pe_session);
48 
49 QDF_STATUS lim_set_membership(struct mac_context *mac,
50 				 tUpdateMembership *pTempParam,
51 				 struct pe_session *pe_session);
52 
53 QDF_STATUS lim_set_user_pos(struct mac_context *mac,
54 			       tUpdateUserPos *pTempParam,
55 			       struct pe_session *pe_session);
56 
57 /**
58  * lim_send_switch_chnl_params() - change channel
59  * @mac: pointer to Global MAC structure
60  * @session: pe session
61  *
62  * Return: QDF_STATUS
63  */
64 QDF_STATUS lim_send_switch_chnl_params(struct mac_context *mac,
65 				       struct pe_session *session);
66 
67 /**
68  * lim_send_edca_params() - Send edsa params to firmware
69  * @mac: pointer to Global MAC structure
70  * @pUpdatedEdcaParams: updated edca params
71  * @vdev_id: vdev id
72  * @mu_edca: MU edca
73  *
74  * Return: QDF_STATUS
75  */
76 QDF_STATUS lim_send_edca_params(struct mac_context *mac,
77 				tSirMacEdcaParamRecord *pUpdatedEdcaParams,
78 				uint16_t vdev_id, bool mu_edca);
79 /**
80  * lim_set_active_edca_params() - Choose best EDCA parameters
81  * @mac_ctx:  pointer to Global Mac structure.
82  * @edca_params: pointer to the local EDCA parameters
83  * @pe_session: point to the session entry
84  *
85  *  This function is called to set the most up-to-date EDCA parameters
86  *  given the default local EDCA parameters.  The rules are as following:
87  *  - If ACM bit is set for all ACs, then downgrade everything to Best Effort.
88  *  - If ACM is not set for any AC, then PE will use the default EDCA
89  *    parameters as advertised by AP.
90  *  - If ACM is set in any of the ACs, PE will use the EDCA parameters
91  *    from the next best AC for which ACM is not enabled.
92  *
93  * Return: none
94  */
95 void lim_set_active_edca_params(struct mac_context *mac_ctx,
96 				tSirMacEdcaParamRecord *edca_params,
97 				struct pe_session *pe_session);
98 
99 #define CAPABILITY_FILTER_MASK  0x73CF
100 #define ERP_FILTER_MASK         0xF8
101 #define EDCA_FILTER_MASK        0xF0
102 #define QOS_FILTER_MASK         0xF0
103 #define HT_BYTE0_FILTER_MASK    0x0
104 #define HT_BYTE2_FILTER_MASK    0xEB
105 #define HT_BYTE5_FILTER_MASK    0xFD
106 #define DS_PARAM_CHANNEL_MASK   0x0
107 #define VHTOP_CHWIDTH_MASK      0xFC
108 
109 QDF_STATUS lim_send_exclude_unencrypt_ind(struct mac_context *mac,
110 					     bool excludeUnenc,
111 					     struct pe_session *pe_session);
112 QDF_STATUS lim_send_ht40_obss_scanind(struct mac_context *mac_ctx,
113 						struct pe_session *session);
114 void lim_handle_sme_join_result(struct mac_context *,
115 		tSirResultCodes, uint16_t, struct pe_session *);
116 
117 /**
118  * lim_send_edca_pifs_param() - Send edca/pifs param to firmware based on
119  * edca_param_type ini
120  * @mac: pointer to Global Mac structure
121  * @param: pointer to param
122  * @vdev_id: vdev id
123  *
124  * Return: QDF_STATUS
125  */
126 QDF_STATUS
127 lim_send_edca_pifs_param(struct mac_context *mac,
128 			 struct wlan_edca_pifs_param_ie *param,
129 			 uint8_t vdev_id);
130 #endif
131