1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2012-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 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name #if !defined(HDD_CONFIG_H__) 21*5113495bSYour Name #define HDD_CONFIG_H__ 22*5113495bSYour Name 23*5113495bSYour Name /** 24*5113495bSYour Name * DOC: wlan_hdd_config.h 25*5113495bSYour Name * 26*5113495bSYour Name * WLAN Adapter Configuration functions 27*5113495bSYour Name */ 28*5113495bSYour Name 29*5113495bSYour Name /* $HEADER$ */ 30*5113495bSYour Name 31*5113495bSYour Name /* Include files */ 32*5113495bSYour Name #include <wlan_hdd_includes.h> 33*5113495bSYour Name #include <wlan_hdd_wmm.h> 34*5113495bSYour Name #include <qdf_types.h> 35*5113495bSYour Name #include <csr_api.h> 36*5113495bSYour Name #include <sap_api.h> 37*5113495bSYour Name #include <sir_mac_prot_def.h> 38*5113495bSYour Name #include "osapi_linux.h" 39*5113495bSYour Name #include <wmi_unified.h> 40*5113495bSYour Name #include "wlan_pmo_hw_filter_public_struct.h" 41*5113495bSYour Name #include "wlan_action_oui_public_struct.h" 42*5113495bSYour Name #include "hdd_config.h" 43*5113495bSYour Name 44*5113495bSYour Name struct hdd_context; 45*5113495bSYour Name 46*5113495bSYour Name #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN 30 47*5113495bSYour Name 48*5113495bSYour Name #define FW_MODULE_LOG_LEVEL_STRING_LENGTH (512) 49*5113495bSYour Name #define TX_SCHED_WRR_PARAMS_NUM (5) 50*5113495bSYour Name 51*5113495bSYour Name /* Defines for all of the things we read from the configuration (registry). */ 52*5113495bSYour Name 53*5113495bSYour Name #ifdef CONFIG_DP_TRACE 54*5113495bSYour Name /* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */ 55*5113495bSYour Name #define DP_TRACE_CONFIG_STRING_LENGTH (20) 56*5113495bSYour Name 57*5113495bSYour Name /* At max 4 DP Trace config parameters are allowed. Refer - gDptraceConfig */ 58*5113495bSYour Name #define DP_TRACE_CONFIG_NUM_PARAMS (4) 59*5113495bSYour Name 60*5113495bSYour Name /* 61*5113495bSYour Name * Default value of live mode in case it cannot be determined from cfg string 62*5113495bSYour Name * gDptraceConfig 63*5113495bSYour Name */ 64*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_LIVE_MODE (1) 65*5113495bSYour Name 66*5113495bSYour Name /* 67*5113495bSYour Name * Default value of thresh (packets/second) beyond which DP Trace is disabled. 68*5113495bSYour Name * Use this default in case the value cannot be determined from cfg string 69*5113495bSYour Name * gDptraceConfig 70*5113495bSYour Name */ 71*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_THRESH (6) 72*5113495bSYour Name 73*5113495bSYour Name /* 74*5113495bSYour Name * Number of intervals of BW timer to wait before enabling/disabling DP Trace. 75*5113495bSYour Name * Since throughput threshold to disable live logging for DP Trace is very low, 76*5113495bSYour Name * we calculate throughput based on # packets received in a second. 77*5113495bSYour Name * For example assuming bandwidth timer interval is 100ms, and if more than 6 78*5113495bSYour Name * prints are received in 10 * 100 ms interval, we want to disable DP Trace 79*5113495bSYour Name * live logging. DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT is the default 80*5113495bSYour Name * value, to be used in case the real value cannot be derived from 81*5113495bSYour Name * bw timer interval 82*5113495bSYour Name */ 83*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT (10) 84*5113495bSYour Name 85*5113495bSYour Name /* Default proto bitmap in case its missing in gDptraceConfig string */ 86*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_BITMAP \ 87*5113495bSYour Name (QDF_NBUF_PKT_TRAC_TYPE_EAPOL |\ 88*5113495bSYour Name QDF_NBUF_PKT_TRAC_TYPE_DHCP |\ 89*5113495bSYour Name QDF_NBUF_PKT_TRAC_TYPE_MGMT_ACTION |\ 90*5113495bSYour Name QDF_NBUF_PKT_TRAC_TYPE_ARP |\ 91*5113495bSYour Name QDF_NBUF_PKT_TRAC_TYPE_ICMP |\ 92*5113495bSYour Name QDF_NBUF_PKT_TRAC_TYPE_ICMPv6)\ 93*5113495bSYour Name 94*5113495bSYour Name /* Default verbosity, in case its missing in gDptraceConfig string*/ 95*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW 96*5113495bSYour Name 97*5113495bSYour Name #endif 98*5113495bSYour Name 99*5113495bSYour Name /* 100*5113495bSYour Name * Type declarations 101*5113495bSYour Name */ 102*5113495bSYour Name 103*5113495bSYour Name struct hdd_config { 104*5113495bSYour Name /* Config parameters */ 105*5113495bSYour Name enum hdd_dot11_mode dot11Mode; 106*5113495bSYour Name 107*5113495bSYour Name #ifdef FEATURE_WLAN_DYNAMIC_CVM 108*5113495bSYour Name /* Bitmap for operating voltage corner mode */ 109*5113495bSYour Name uint32_t vc_mode_cfg_bitmap; 110*5113495bSYour Name #endif 111*5113495bSYour Name #ifdef ENABLE_MTRACE_LOG 112*5113495bSYour Name bool enable_mtrace; 113*5113495bSYour Name #endif 114*5113495bSYour Name bool advertise_concurrent_operation; 115*5113495bSYour Name #ifdef DHCP_SERVER_OFFLOAD 116*5113495bSYour Name struct dhcp_server dhcp_server_ip; 117*5113495bSYour Name #endif /* DHCP_SERVER_OFFLOAD */ 118*5113495bSYour Name bool apf_enabled; 119*5113495bSYour Name uint16_t sap_tx_leakage_threshold; 120*5113495bSYour Name bool sap_internal_restart; 121*5113495bSYour Name bool is_11k_offload_supported; 122*5113495bSYour Name bool is_unit_test_framework_enabled; 123*5113495bSYour Name bool disable_channel; 124*5113495bSYour Name 125*5113495bSYour Name /* HDD converged ini items are listed below this*/ 126*5113495bSYour Name bool bug_on_reinit_failure; 127*5113495bSYour Name bool is_ramdump_enabled; 128*5113495bSYour Name uint32_t iface_change_wait_time; 129*5113495bSYour Name uint8_t multicast_host_fw_msgs; 130*5113495bSYour Name enum hdd_wext_control private_wext_control; 131*5113495bSYour Name bool enablefwprint; 132*5113495bSYour Name uint8_t enable_fw_log; 133*5113495bSYour Name 134*5113495bSYour Name #ifdef WLAN_LOGGING_SOCK_SVC_ENABLE 135*5113495bSYour Name /* WLAN Logging */ 136*5113495bSYour Name bool wlan_logging_enable; 137*5113495bSYour Name uint32_t wlan_console_log_levels; 138*5113495bSYour Name uint8_t host_log_custom_nl_proto; 139*5113495bSYour Name #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ 140*5113495bSYour Name 141*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN 142*5113495bSYour Name uint32_t wlan_auto_shutdown; 143*5113495bSYour Name #endif 144*5113495bSYour Name 145*5113495bSYour Name #ifndef REMOVE_PKT_LOG 146*5113495bSYour Name bool enable_packet_log; 147*5113495bSYour Name #endif 148*5113495bSYour Name 149*5113495bSYour Name #ifdef WLAN_FEATURE_MSCS 150*5113495bSYour Name uint32_t mscs_pkt_threshold; 151*5113495bSYour Name uint32_t mscs_voice_interval; 152*5113495bSYour Name #endif /* WLAN_FEATURE_MSCS */ 153*5113495bSYour Name 154*5113495bSYour Name #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL 155*5113495bSYour Name uint32_t tx_flow_low_watermark; 156*5113495bSYour Name uint32_t tx_flow_hi_watermark_offset; 157*5113495bSYour Name uint32_t tx_flow_max_queue_depth; 158*5113495bSYour Name uint32_t tx_lbw_flow_low_watermark; 159*5113495bSYour Name uint32_t tx_lbw_flow_hi_watermark_offset; 160*5113495bSYour Name uint32_t tx_lbw_flow_max_queue_depth; 161*5113495bSYour Name uint32_t tx_hbw_flow_low_watermark; 162*5113495bSYour Name uint32_t tx_hbw_flow_hi_watermark_offset; 163*5113495bSYour Name uint32_t tx_hbw_flow_max_queue_depth; 164*5113495bSYour Name #endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */ 165*5113495bSYour Name uint32_t napi_cpu_affinity_mask; 166*5113495bSYour Name uint32_t operating_chan_freq; 167*5113495bSYour Name uint8_t num_vdevs; 168*5113495bSYour Name uint8_t enable_concurrent_sta[CFG_CONCURRENT_IFACE_MAX_LEN]; 169*5113495bSYour Name uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH]; 170*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM 171*5113495bSYour Name uint8_t runtime_pm; 172*5113495bSYour Name #endif 173*5113495bSYour Name #ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI 174*5113495bSYour Name bool is_qmi_stats_enabled; 175*5113495bSYour Name #endif 176*5113495bSYour Name uint8_t inform_bss_rssi_raw; 177*5113495bSYour Name 178*5113495bSYour Name bool mac_provision; 179*5113495bSYour Name uint32_t provisioned_intf_pool; 180*5113495bSYour Name uint32_t derived_intf_pool; 181*5113495bSYour Name uint32_t cfg_wmi_credit_cnt; 182*5113495bSYour Name uint32_t enable_sar_conversion; 183*5113495bSYour Name #ifdef WLAN_FEATURE_TSF_PLUS 184*5113495bSYour Name uint8_t tsf_ptp_options; 185*5113495bSYour Name #endif /* WLAN_FEATURE_TSF_PLUS */ 186*5113495bSYour Name 187*5113495bSYour Name #ifdef SAR_SAFETY_FEATURE 188*5113495bSYour Name uint32_t sar_safety_timeout; 189*5113495bSYour Name uint32_t sar_safety_unsolicited_timeout; 190*5113495bSYour Name uint32_t sar_safety_req_resp_timeout; 191*5113495bSYour Name uint32_t sar_safety_req_resp_retry; 192*5113495bSYour Name uint32_t sar_safety_index; 193*5113495bSYour Name uint32_t sar_safety_sleep_index; 194*5113495bSYour Name uint8_t enable_sar_safety; 195*5113495bSYour Name bool config_sar_safety_sleep_index; 196*5113495bSYour Name #endif 197*5113495bSYour Name uint8_t nb_commands_interval; 198*5113495bSYour Name 199*5113495bSYour Name #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION 200*5113495bSYour Name uint32_t sta_stats_cache_expiry_time; 201*5113495bSYour Name #endif 202*5113495bSYour Name bool read_mac_addr_from_mac_file; 203*5113495bSYour Name #ifdef FEATURE_SET 204*5113495bSYour Name bool get_wifi_features; 205*5113495bSYour Name #endif 206*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM 207*5113495bSYour Name uint16_t cpu_cxpc_threshold; 208*5113495bSYour Name #endif 209*5113495bSYour Name bool exclude_selftx_from_cca_busy; 210*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 211*5113495bSYour Name /* ml link state cache expiry time*/ 212*5113495bSYour Name qdf_time_t link_state_cache_expiry_time; 213*5113495bSYour Name #endif 214*5113495bSYour Name }; 215*5113495bSYour Name 216*5113495bSYour Name /** 217*5113495bSYour Name * hdd_to_csr_wmm_mode() - Utility function to convert HDD to CSR WMM mode 218*5113495bSYour Name * 219*5113495bSYour Name * @mode: hdd WMM user mode 220*5113495bSYour Name * 221*5113495bSYour Name * Return: CSR WMM mode 222*5113495bSYour Name */ 223*5113495bSYour Name enum wmm_user_mode hdd_to_csr_wmm_mode(uint8_t mode); 224*5113495bSYour Name 225*5113495bSYour Name QDF_STATUS hdd_update_mac_config(struct hdd_context *hdd_ctx); 226*5113495bSYour Name QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx); 227*5113495bSYour Name QDF_STATUS hdd_set_policy_mgr_user_cfg(struct hdd_context *hdd_ctx); 228*5113495bSYour Name QDF_STATUS hdd_set_sme_chan_list(struct hdd_context *hdd_ctx); 229*5113495bSYour Name bool hdd_update_config_cfg(struct hdd_context *hdd_ctx); 230*5113495bSYour Name void hdd_cfg_get_global_config(struct hdd_context *hdd_ctx, char *buf, 231*5113495bSYour Name int buflen); 232*5113495bSYour Name 233*5113495bSYour Name eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(enum hdd_dot11_mode dot11Mode); 234*5113495bSYour Name 235*5113495bSYour Name QDF_STATUS hdd_set_idle_ps_config(struct hdd_context *hdd_ctx, bool val); 236*5113495bSYour Name void hdd_get_pmkid_modes(struct hdd_context *hdd_ctx, 237*5113495bSYour Name struct pmkid_mode_bits *pmkid_modes); 238*5113495bSYour Name 239*5113495bSYour Name int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg); 240*5113495bSYour Name 241*5113495bSYour Name /** 242*5113495bSYour Name * hdd_string_to_u8_array() - used to convert decimal string into u8 array 243*5113495bSYour Name * @str: Decimal string 244*5113495bSYour Name * @array: Array where converted value is stored 245*5113495bSYour Name * @len: Length of the populated array 246*5113495bSYour Name * @array_max_len: Maximum length of the array 247*5113495bSYour Name * 248*5113495bSYour Name * This API is called to convert decimal string (each byte separated by 249*5113495bSYour Name * a comma) into an u8 array 250*5113495bSYour Name * 251*5113495bSYour Name * Return: QDF_STATUS 252*5113495bSYour Name */ 253*5113495bSYour Name QDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *array, 254*5113495bSYour Name uint8_t *len, uint16_t array_max_len); 255*5113495bSYour Name 256*5113495bSYour Name QDF_STATUS hdd_hex_string_to_u16_array(char *str, uint16_t *int_array, 257*5113495bSYour Name uint8_t *len, uint8_t int_array_max_len); 258*5113495bSYour Name 259*5113495bSYour Name void hdd_cfg_print_global_config(struct hdd_context *hdd_ctx); 260*5113495bSYour Name 261*5113495bSYour Name /** 262*5113495bSYour Name * hdd_update_nss() - Update the number of spatial streams supported. 263*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 264*5113495bSYour Name * @tx_nss: the number of Tx spatial streams to be updated 265*5113495bSYour Name * @rx_nss: the number of Rx spatial streams to be updated 266*5113495bSYour Name * 267*5113495bSYour Name * This function is used to modify the number of spatial streams 268*5113495bSYour Name * supported when not in connected state. 269*5113495bSYour Name * 270*5113495bSYour Name * Return: QDF_STATUS_SUCCESS if nss is correctly updated, 271*5113495bSYour Name * otherwise QDF_STATUS_E_FAILURE would be returned 272*5113495bSYour Name */ 273*5113495bSYour Name QDF_STATUS hdd_update_nss(struct wlan_hdd_link_info *link_info, 274*5113495bSYour Name uint8_t tx_nss, uint8_t rx_nss); 275*5113495bSYour Name 276*5113495bSYour Name /** 277*5113495bSYour Name * hdd_get_nss() - Get the number of spatial streams supported by the adapter 278*5113495bSYour Name * 279*5113495bSYour Name * @adapter: the pointer to adapter 280*5113495bSYour Name * @nss: the number of spatial streams supported by the adapter 281*5113495bSYour Name * 282*5113495bSYour Name * This function is used to get the number of spatial streams supported by 283*5113495bSYour Name * the adapter. 284*5113495bSYour Name * 285*5113495bSYour Name * Return: QDF_STATUS 286*5113495bSYour Name */ 287*5113495bSYour Name QDF_STATUS hdd_get_nss(struct hdd_adapter *adapter, uint8_t *nss); 288*5113495bSYour Name 289*5113495bSYour Name /** 290*5113495bSYour Name * hdd_get_num_tx_chains() - Get the number of tx chains supported by the 291*5113495bSYour Name * adapter 292*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 293*5113495bSYour Name * @tx_chains: the number of Tx chains supported by the adapter 294*5113495bSYour Name * 295*5113495bSYour Name * This function is used to get the number of Tx chains supported by 296*5113495bSYour Name * the adapter. 297*5113495bSYour Name * 298*5113495bSYour Name * Return: QDF_STATUS 299*5113495bSYour Name */ 300*5113495bSYour Name QDF_STATUS hdd_get_num_tx_chains(struct wlan_hdd_link_info *link_info, 301*5113495bSYour Name uint8_t *tx_chains); 302*5113495bSYour Name 303*5113495bSYour Name /** 304*5113495bSYour Name * hdd_get_tx_nss() - Get the number of spatial streams supported by the adapter 305*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 306*5113495bSYour Name * @tx_nss: the number Tx of spatial streams supported by the adapter 307*5113495bSYour Name * 308*5113495bSYour Name * This function is used to get the number of Tx spatial streams supported by 309*5113495bSYour Name * the adapter. 310*5113495bSYour Name * 311*5113495bSYour Name * Return: QDF_STATUS 312*5113495bSYour Name */ 313*5113495bSYour Name QDF_STATUS hdd_get_tx_nss(struct wlan_hdd_link_info *link_info, 314*5113495bSYour Name uint8_t *tx_nss); 315*5113495bSYour Name 316*5113495bSYour Name /** 317*5113495bSYour Name * hdd_get_num_rx_chains() - Get the number of chains supported by the adapter 318*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 319*5113495bSYour Name * @rx_chains: the number of Rx chains supported by the adapter 320*5113495bSYour Name * 321*5113495bSYour Name * This function is used to get the number of Rx chains supported by 322*5113495bSYour Name * the adapter. 323*5113495bSYour Name * 324*5113495bSYour Name * Return: QDF_STATUS 325*5113495bSYour Name */ 326*5113495bSYour Name QDF_STATUS hdd_get_num_rx_chains(struct wlan_hdd_link_info *link_info, 327*5113495bSYour Name uint8_t *rx_chains); 328*5113495bSYour Name 329*5113495bSYour Name /** 330*5113495bSYour Name * hdd_get_rx_nss() - Get the number of spatial streams supported by the adapter 331*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 332*5113495bSYour Name * @rx_nss: the number Rx of spatial streams supported by the adapter 333*5113495bSYour Name * 334*5113495bSYour Name * This function is used to get the number of Rx spatial streams supported by 335*5113495bSYour Name * the adapter. 336*5113495bSYour Name * 337*5113495bSYour Name * Return: QDF_STATUS 338*5113495bSYour Name */ 339*5113495bSYour Name QDF_STATUS hdd_get_rx_nss(struct wlan_hdd_link_info *link_info, 340*5113495bSYour Name uint8_t *rx_nss); 341*5113495bSYour Name 342*5113495bSYour Name 343*5113495bSYour Name /** 344*5113495bSYour Name * hdd_dfs_indicate_radar() - Block tx as radar found on the channel 345*5113495bSYour Name * @hdd_ctx: HDD context pointer 346*5113495bSYour Name * 347*5113495bSYour Name * This function is invoked in atomic context when a radar 348*5113495bSYour Name * is found on the SAP current operating channel and Data Tx 349*5113495bSYour Name * from netif has to be stopped to honor the DFS regulations. 350*5113495bSYour Name * Actions: Stop the netif Tx queues,Indicate Radar present 351*5113495bSYour Name * in HDD context for future usage. 352*5113495bSYour Name * 353*5113495bSYour Name * Return: true on success, else false 354*5113495bSYour Name */ 355*5113495bSYour Name bool hdd_dfs_indicate_radar(struct hdd_context *hdd_ctx); 356*5113495bSYour Name 357*5113495bSYour Name /** 358*5113495bSYour Name * hdd_restore_all_ps() - Restore all the powersave configuration overwritten 359*5113495bSYour Name * by hdd_override_all_ps. 360*5113495bSYour Name * @hdd_ctx: Pointer to HDD context. 361*5113495bSYour Name * 362*5113495bSYour Name * Return: None 363*5113495bSYour Name */ 364*5113495bSYour Name void hdd_restore_all_ps(struct hdd_context *hdd_ctx); 365*5113495bSYour Name 366*5113495bSYour Name /** 367*5113495bSYour Name * hdd_override_all_ps() - overrides to disables all the powersave features. 368*5113495bSYour Name * @hdd_ctx: Pointer to HDD context. 369*5113495bSYour Name * Overrides below powersave ini configurations. 370*5113495bSYour Name * gEnableImps=0 371*5113495bSYour Name * gEnableBmps=0 372*5113495bSYour Name * gRuntimePM=0 373*5113495bSYour Name * gWlanAutoShutdown = 0 374*5113495bSYour Name * gEnableWoW=0 375*5113495bSYour Name * 376*5113495bSYour Name * Return: None 377*5113495bSYour Name */ 378*5113495bSYour Name void hdd_override_all_ps(struct hdd_context *hdd_ctx); 379*5113495bSYour Name 380*5113495bSYour Name /** 381*5113495bSYour Name * hdd_vendor_mode_to_phymode() - Get eCsrPhyMode according to vendor phy mode 382*5113495bSYour Name * @vendor_phy_mode: vendor phy mode 383*5113495bSYour Name * @csr_phy_mode: phy mode of eCsrPhyMode 384*5113495bSYour Name * 385*5113495bSYour Name * Return: 0 on success, negative errno value on error 386*5113495bSYour Name */ 387*5113495bSYour Name int hdd_vendor_mode_to_phymode(enum qca_wlan_vendor_phy_mode vendor_phy_mode, 388*5113495bSYour Name eCsrPhyMode *csr_phy_mode); 389*5113495bSYour Name 390*5113495bSYour Name /** 391*5113495bSYour Name * hdd_phymode_to_vendor_mode() - Get vendor phy mode according to CSR phy mode. 392*5113495bSYour Name * @csr_phy_mode: phy mode of eCsrPhyMode 393*5113495bSYour Name * @vendor_phy_mode: vendor phy mode 394*5113495bSYour Name * 395*5113495bSYour Name * Return: 0 on success, negative error value on failure 396*5113495bSYour Name */ 397*5113495bSYour Name int hdd_phymode_to_vendor_mode(eCsrPhyMode csr_phy_mode, 398*5113495bSYour Name enum qca_wlan_vendor_phy_mode *vendor_phy_mode); 399*5113495bSYour Name 400*5113495bSYour Name /** 401*5113495bSYour Name * hdd_vendor_mode_to_band() - Get band_info according to vendor phy mode 402*5113495bSYour Name * @vendor_phy_mode: vendor phy mode 403*5113495bSYour Name * @supported_band: supported band bitmap 404*5113495bSYour Name * @is_6ghz_supported: whether 6ghz is supported 405*5113495bSYour Name * 406*5113495bSYour Name * Return: 0 on success, negative errno value on error 407*5113495bSYour Name */ 408*5113495bSYour Name int hdd_vendor_mode_to_band(enum qca_wlan_vendor_phy_mode vendor_phy_mode, 409*5113495bSYour Name uint8_t *supported_band, bool is_6ghz_supported); 410*5113495bSYour Name 411*5113495bSYour Name /** 412*5113495bSYour Name * hdd_vendor_mode_to_bonding_mode() - Get channel bonding mode according to 413*5113495bSYour Name * vendor phy mode 414*5113495bSYour Name * @vendor_phy_mode: vendor phy mode 415*5113495bSYour Name * @bonding_mode: channel bonding mode 416*5113495bSYour Name * 417*5113495bSYour Name * Return: 0 on success, negative errno value on error 418*5113495bSYour Name */ 419*5113495bSYour Name int 420*5113495bSYour Name hdd_vendor_mode_to_bonding_mode(enum qca_wlan_vendor_phy_mode vendor_phy_mode, 421*5113495bSYour Name uint32_t *bonding_mode); 422*5113495bSYour Name 423*5113495bSYour Name /** 424*5113495bSYour Name * hdd_phymode_to_dot11_mode() - Mapping phymode to dot11mode 425*5113495bSYour Name * @phymode: phy mode 426*5113495bSYour Name * @dot11_mode: dot11 mode 427*5113495bSYour Name * 428*5113495bSYour Name * Return: 0 on success, negative errno value on error 429*5113495bSYour Name */ 430*5113495bSYour Name int hdd_phymode_to_dot11_mode(eCsrPhyMode phymode, 431*5113495bSYour Name enum hdd_dot11_mode *dot11_mode); 432*5113495bSYour Name 433*5113495bSYour Name /** 434*5113495bSYour Name * hdd_update_phymode() - update the PHY mode of the adapter 435*5113495bSYour Name * @adapter: adapter being modified 436*5113495bSYour Name * @phymode: new PHY mode for the adapter 437*5113495bSYour Name * @supported_band: supported band bitmap for the adapter 438*5113495bSYour Name * @bonding_mode: new channel bonding mode for the adapter 439*5113495bSYour Name * 440*5113495bSYour Name * This function is called when the adapter is set to a new PHY mode. 441*5113495bSYour Name * It takes a holistic look at the desired PHY mode along with the 442*5113495bSYour Name * configured capabilities of the driver and the reported capabilities 443*5113495bSYour Name * of the hardware in order to correctly configure all PHY-related 444*5113495bSYour Name * parameters. 445*5113495bSYour Name * 446*5113495bSYour Name * Return: 0 on success, negative errno value on error 447*5113495bSYour Name */ 448*5113495bSYour Name int hdd_update_phymode(struct hdd_adapter *adapter, eCsrPhyMode phymode, 449*5113495bSYour Name uint8_t supported_band, uint32_t bonding_mode); 450*5113495bSYour Name 451*5113495bSYour Name /** 452*5113495bSYour Name * hdd_get_ldpc() - Get adapter LDPC 453*5113495bSYour Name * @adapter: adapter being queried 454*5113495bSYour Name * @value: where to store the value 455*5113495bSYour Name * 456*5113495bSYour Name * Return: 0 on success, negative errno on failure 457*5113495bSYour Name */ 458*5113495bSYour Name int hdd_get_ldpc(struct hdd_adapter *adapter, int *value); 459*5113495bSYour Name 460*5113495bSYour Name /** 461*5113495bSYour Name * hdd_set_ldpc() - Set adapter LDPC 462*5113495bSYour Name * @link_info: Link info pointer in adapter 463*5113495bSYour Name * @value: new LDPC value 464*5113495bSYour Name * 465*5113495bSYour Name * Return: 0 on success, negative errno on failure 466*5113495bSYour Name */ 467*5113495bSYour Name int hdd_set_ldpc(struct wlan_hdd_link_info *link_info, int value); 468*5113495bSYour Name 469*5113495bSYour Name /** 470*5113495bSYour Name * hdd_get_tx_stbc() - Get adapter TX STBC 471*5113495bSYour Name * @adapter: adapter being queried 472*5113495bSYour Name * @value: where to store the value 473*5113495bSYour Name * 474*5113495bSYour Name * Return: 0 on success, negative errno on failure 475*5113495bSYour Name */ 476*5113495bSYour Name int hdd_get_tx_stbc(struct hdd_adapter *adapter, int *value); 477*5113495bSYour Name 478*5113495bSYour Name /** 479*5113495bSYour Name * hdd_set_tx_stbc() - Set adapter TX STBC 480*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 481*5113495bSYour Name * @value: new TX STBC value 482*5113495bSYour Name * 483*5113495bSYour Name * Return: 0 on success, negative errno on failure 484*5113495bSYour Name */ 485*5113495bSYour Name int hdd_set_tx_stbc(struct wlan_hdd_link_info *link_info, int value); 486*5113495bSYour Name 487*5113495bSYour Name /** 488*5113495bSYour Name * hdd_get_rx_stbc() - Get adapter RX STBC 489*5113495bSYour Name * @adapter: adapter being queried 490*5113495bSYour Name * @value: where to store the value 491*5113495bSYour Name * 492*5113495bSYour Name * Return: 0 on success, negative errno on failure 493*5113495bSYour Name */ 494*5113495bSYour Name int hdd_get_rx_stbc(struct hdd_adapter *adapter, int *value); 495*5113495bSYour Name 496*5113495bSYour Name /** 497*5113495bSYour Name * hdd_set_rx_stbc() - Set adapter RX STBC 498*5113495bSYour Name * @link_info: Link info pointer in HDD adapter 499*5113495bSYour Name * @value: new RX STBC value 500*5113495bSYour Name * 501*5113495bSYour Name * Return: 0 on success, negative errno on failure 502*5113495bSYour Name */ 503*5113495bSYour Name int hdd_set_rx_stbc(struct wlan_hdd_link_info *link_info, int value); 504*5113495bSYour Name 505*5113495bSYour Name /** 506*5113495bSYour Name * hdd_update_channel_width() - Update adapter channel width settings 507*5113495bSYour Name * @link_info: Link info in HDD adapter 508*5113495bSYour Name * @chwidth: new channel width of enum eSirMacHTChannelWidth 509*5113495bSYour Name * @bonding_mode: channel bonding mode of the new channel width 510*5113495bSYour Name * @link_id: mlo link id 511*5113495bSYour Name * @is_restore: is restore 512*5113495bSYour Name * 513*5113495bSYour Name * Return: 0 on success, negative errno on failure 514*5113495bSYour Name */ 515*5113495bSYour Name int hdd_update_channel_width(struct wlan_hdd_link_info *link_info, 516*5113495bSYour Name enum eSirMacHTChannelWidth chwidth, 517*5113495bSYour Name uint32_t bonding_mode, uint8_t link_id, 518*5113495bSYour Name bool is_restore); 519*5113495bSYour Name #endif /* end #if !defined(HDD_CONFIG_H__) */ 520