Loading components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +13 −3 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -884,6 +884,7 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc, * @psoc: PSOC object information * @mode: connection mode * @ch_freq: target channel frequency to switch * @bw: target channel bandwidth * @vdev_id: vdev id of channel switch interface * @forced: forced to chan switch. * @reason: request reason of CSA Loading @@ -903,8 +904,17 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc, bool policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode, uint32_t ch_freq, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason); uint32_t ch_freq, enum hw_mode_bandwidth bw, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason); /** * policy_mgr_get_bw() - Convert phy_ch_width to hw_mode_bandwidth. * @chan_width: phy_ch_width * * Return: hw_mode_bandwidth */ enum hw_mode_bandwidth policy_mgr_get_bw(enum phy_ch_width chan_width); /** * policy_mgr_get_first_connection_pcl_table_index() - provides the Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +17 −12 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -2653,11 +2653,14 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, } if (ch_freq) { chan_state = wlan_reg_get_5g_bonded_channel_state_for_freq( if (wlan_reg_is_5ghz_ch_freq(ch_freq)) { chan_state = wlan_reg_get_5g_bonded_channel_state_for_freq( pm_ctx->pdev, ch_freq, policy_mgr_get_ch_width(bw)); if (chan_state == CHANNEL_STATE_DFS) is_dfs_ch = true; } /* don't allow 3rd home channel on same MAC * also check for single mac target which doesn't * support interbad MCC as well Loading Loading @@ -2693,8 +2696,10 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, sta_sap_scc_on_dfs_chan = policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc); go_force_scc = policy_mgr_go_scc_enforced(psoc); if ((!sta_sap_scc_on_dfs_chan && mode == PM_SAP_MODE) || (!go_force_scc && mode == PM_P2P_GO_MODE)) { if ((mode == PM_SAP_MODE || mode == PM_P2P_GO_MODE) && (!sta_sap_scc_on_dfs_chan || !policy_mgr_is_sta_sap_scc(psoc, ch_freq) || (!go_force_scc && mode == PM_P2P_GO_MODE))) { if (is_dfs_ch) match = policy_mgr_disallow_mcc(psoc, ch_freq); Loading Loading @@ -2796,8 +2801,9 @@ bool policy_mgr_allow_concurrency(struct wlan_objmgr_psoc *psoc, bool policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode, uint32_t ch_freq, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason) uint32_t ch_freq, enum hw_mode_bandwidth bw, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason) { bool allow = false; struct policy_mgr_conc_connection_info Loading @@ -2812,8 +2818,8 @@ policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, policy_mgr_err("Invalid Context"); return allow; } policy_mgr_debug("check concurrency_csa vdev:%d ch %d, forced %d, reason %d", vdev_id, ch_freq, forced, reason); policy_mgr_debug("check concurrency_csa vdev:%d ch %d bw %d, forced %d, reason %d", vdev_id, ch_freq, bw, forced, reason); status = policy_mgr_get_chan_by_session_id(psoc, vdev_id, &old_ch_freq); Loading Loading @@ -2851,8 +2857,7 @@ policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, policy_mgr_store_and_del_conn_info_by_vdev_id( psoc, vdev_id, info, &num_cxn_del); allow = policy_mgr_allow_concurrency(psoc, mode, ch_freq, HW_MODE_20_MHZ); allow = policy_mgr_allow_concurrency(psoc, mode, ch_freq, bw); /* Restore the connection entry */ if (num_cxn_del > 0) policy_mgr_restore_deleted_conn_info(psoc, info, num_cxn_del); Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h +1 −8 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -570,14 +571,6 @@ void pm_dbs_opportunistic_timer_handler(void *data); enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type, uint8_t subtype); /** * policy_mgr_get_bw() - Convert phy_ch_width to hw_mode_bandwidth. * @chan_width: phy_ch_width * * Return: hw_mode_bandwidth */ enum hw_mode_bandwidth policy_mgr_get_bw(enum phy_ch_width chan_width); QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc, enum policy_mgr_pcl_type pcl, uint32_t *pcl_channels, uint32_t *len, Loading components/mlme/core/src/wlan_mlme_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -1822,6 +1822,7 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc, lfr->roam_preauth_retry_count = cfg_get(psoc, CFG_LFR3_ROAM_PREAUTH_RETRY_COUNT); lfr->roam_rssi_diff = cfg_get(psoc, CFG_LFR_ROAM_RSSI_DIFF); lfr->roam_rssi_diff_6ghz = cfg_get(psoc, CFG_LFR_ROAM_RSSI_DIFF_6GHZ); lfr->bg_rssi_threshold = cfg_get(psoc, CFG_LFR_ROAM_BG_RSSI_TH); lfr->roam_scan_offload_enabled = cfg_get(psoc, CFG_LFR_ROAM_SCAN_OFFLOAD_ENABLED); Loading components/mlme/dispatcher/inc/cfg_mlme_lfr.h +31 −0 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -1250,6 +1251,35 @@ CFG_VALUE_OR_DEFAULT, \ "Enable roam based on rssi") /* * <ini> * RoamRssiDiff6GHz - Enable roam to 6 GHz AP based on rssi * @Min: 0 * @Max: 100 * @Default: 5 * * This INI is used to decide whether to roam to 6 GHz AP or not based on RSSI. * AP1 is the currently associated AP(2.4 GHz / 5 GHz) and AP2(6 GHz) is chosen * for roaming. The Roaming will happen only if AP2 has better Signal Quality * and it has a RSSI better than AP1. RoamRssiDiff6GHz is the number of units * (typically measured in dB) AP2 is better than AP1. * * Related: None * * Supported Feature: Roaming * * Usage: External * * </ini> */ #define CFG_LFR_ROAM_RSSI_DIFF_6GHZ CFG_INI_UINT( \ "RoamRssiDiff6GHz", \ 0, \ 100, \ 5, \ CFG_VALUE_OR_DEFAULT, \ "Enable 6 GHz roam based on rssi") /* * <ini> * bg_rssi_threshold - To set RSSI Threshold for BG scan roaming Loading Loading @@ -2899,6 +2929,7 @@ CFG(CFG_LFR_MAWC_FEATURE_ENABLED) \ CFG(CFG_LFR_FAST_TRANSITION_ENABLED) \ CFG(CFG_LFR_ROAM_RSSI_DIFF) \ CFG(CFG_LFR_ROAM_RSSI_DIFF_6GHZ) \ CFG(CFG_LFR_ROAM_BG_RSSI_TH) \ CFG(CFG_LFR_ENABLE_WES_MODE) \ CFG(CFG_LFR_ROAM_SCAN_OFFLOAD_ENABLED) \ Loading Loading
components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +13 −3 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -884,6 +884,7 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc, * @psoc: PSOC object information * @mode: connection mode * @ch_freq: target channel frequency to switch * @bw: target channel bandwidth * @vdev_id: vdev id of channel switch interface * @forced: forced to chan switch. * @reason: request reason of CSA Loading @@ -903,8 +904,17 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc, bool policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode, uint32_t ch_freq, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason); uint32_t ch_freq, enum hw_mode_bandwidth bw, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason); /** * policy_mgr_get_bw() - Convert phy_ch_width to hw_mode_bandwidth. * @chan_width: phy_ch_width * * Return: hw_mode_bandwidth */ enum hw_mode_bandwidth policy_mgr_get_bw(enum phy_ch_width chan_width); /** * policy_mgr_get_first_connection_pcl_table_index() - provides the Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +17 −12 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -2653,11 +2653,14 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, } if (ch_freq) { chan_state = wlan_reg_get_5g_bonded_channel_state_for_freq( if (wlan_reg_is_5ghz_ch_freq(ch_freq)) { chan_state = wlan_reg_get_5g_bonded_channel_state_for_freq( pm_ctx->pdev, ch_freq, policy_mgr_get_ch_width(bw)); if (chan_state == CHANNEL_STATE_DFS) is_dfs_ch = true; } /* don't allow 3rd home channel on same MAC * also check for single mac target which doesn't * support interbad MCC as well Loading Loading @@ -2693,8 +2696,10 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, sta_sap_scc_on_dfs_chan = policy_mgr_is_sta_sap_scc_allowed_on_dfs_chan(psoc); go_force_scc = policy_mgr_go_scc_enforced(psoc); if ((!sta_sap_scc_on_dfs_chan && mode == PM_SAP_MODE) || (!go_force_scc && mode == PM_P2P_GO_MODE)) { if ((mode == PM_SAP_MODE || mode == PM_P2P_GO_MODE) && (!sta_sap_scc_on_dfs_chan || !policy_mgr_is_sta_sap_scc(psoc, ch_freq) || (!go_force_scc && mode == PM_P2P_GO_MODE))) { if (is_dfs_ch) match = policy_mgr_disallow_mcc(psoc, ch_freq); Loading Loading @@ -2796,8 +2801,9 @@ bool policy_mgr_allow_concurrency(struct wlan_objmgr_psoc *psoc, bool policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, enum policy_mgr_con_mode mode, uint32_t ch_freq, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason) uint32_t ch_freq, enum hw_mode_bandwidth bw, uint32_t vdev_id, bool forced, enum sap_csa_reason_code reason) { bool allow = false; struct policy_mgr_conc_connection_info Loading @@ -2812,8 +2818,8 @@ policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, policy_mgr_err("Invalid Context"); return allow; } policy_mgr_debug("check concurrency_csa vdev:%d ch %d, forced %d, reason %d", vdev_id, ch_freq, forced, reason); policy_mgr_debug("check concurrency_csa vdev:%d ch %d bw %d, forced %d, reason %d", vdev_id, ch_freq, bw, forced, reason); status = policy_mgr_get_chan_by_session_id(psoc, vdev_id, &old_ch_freq); Loading Loading @@ -2851,8 +2857,7 @@ policy_mgr_allow_concurrency_csa(struct wlan_objmgr_psoc *psoc, policy_mgr_store_and_del_conn_info_by_vdev_id( psoc, vdev_id, info, &num_cxn_del); allow = policy_mgr_allow_concurrency(psoc, mode, ch_freq, HW_MODE_20_MHZ); allow = policy_mgr_allow_concurrency(psoc, mode, ch_freq, bw); /* Restore the connection entry */ if (num_cxn_del > 0) policy_mgr_restore_deleted_conn_info(psoc, info, num_cxn_del); Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h +1 −8 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -570,14 +571,6 @@ void pm_dbs_opportunistic_timer_handler(void *data); enum policy_mgr_con_mode policy_mgr_get_mode(uint8_t type, uint8_t subtype); /** * policy_mgr_get_bw() - Convert phy_ch_width to hw_mode_bandwidth. * @chan_width: phy_ch_width * * Return: hw_mode_bandwidth */ enum hw_mode_bandwidth policy_mgr_get_bw(enum phy_ch_width chan_width); QDF_STATUS policy_mgr_get_channel_list(struct wlan_objmgr_psoc *psoc, enum policy_mgr_pcl_type pcl, uint32_t *pcl_channels, uint32_t *len, Loading
components/mlme/core/src/wlan_mlme_main.c +1 −0 Original line number Diff line number Diff line Loading @@ -1822,6 +1822,7 @@ static void mlme_init_lfr_cfg(struct wlan_objmgr_psoc *psoc, lfr->roam_preauth_retry_count = cfg_get(psoc, CFG_LFR3_ROAM_PREAUTH_RETRY_COUNT); lfr->roam_rssi_diff = cfg_get(psoc, CFG_LFR_ROAM_RSSI_DIFF); lfr->roam_rssi_diff_6ghz = cfg_get(psoc, CFG_LFR_ROAM_RSSI_DIFF_6GHZ); lfr->bg_rssi_threshold = cfg_get(psoc, CFG_LFR_ROAM_BG_RSSI_TH); lfr->roam_scan_offload_enabled = cfg_get(psoc, CFG_LFR_ROAM_SCAN_OFFLOAD_ENABLED); Loading
components/mlme/dispatcher/inc/cfg_mlme_lfr.h +31 −0 Original line number Diff line number Diff line /* * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -1250,6 +1251,35 @@ CFG_VALUE_OR_DEFAULT, \ "Enable roam based on rssi") /* * <ini> * RoamRssiDiff6GHz - Enable roam to 6 GHz AP based on rssi * @Min: 0 * @Max: 100 * @Default: 5 * * This INI is used to decide whether to roam to 6 GHz AP or not based on RSSI. * AP1 is the currently associated AP(2.4 GHz / 5 GHz) and AP2(6 GHz) is chosen * for roaming. The Roaming will happen only if AP2 has better Signal Quality * and it has a RSSI better than AP1. RoamRssiDiff6GHz is the number of units * (typically measured in dB) AP2 is better than AP1. * * Related: None * * Supported Feature: Roaming * * Usage: External * * </ini> */ #define CFG_LFR_ROAM_RSSI_DIFF_6GHZ CFG_INI_UINT( \ "RoamRssiDiff6GHz", \ 0, \ 100, \ 5, \ CFG_VALUE_OR_DEFAULT, \ "Enable 6 GHz roam based on rssi") /* * <ini> * bg_rssi_threshold - To set RSSI Threshold for BG scan roaming Loading Loading @@ -2899,6 +2929,7 @@ CFG(CFG_LFR_MAWC_FEATURE_ENABLED) \ CFG(CFG_LFR_FAST_TRANSITION_ENABLED) \ CFG(CFG_LFR_ROAM_RSSI_DIFF) \ CFG(CFG_LFR_ROAM_RSSI_DIFF_6GHZ) \ CFG(CFG_LFR_ROAM_BG_RSSI_TH) \ CFG(CFG_LFR_ENABLE_WES_MODE) \ CFG(CFG_LFR_ROAM_SCAN_OFFLOAD_ENABLED) \ Loading