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