Loading Kbuild +6 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,9 @@ HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dp_aggregation.o ifeq ($(CONFIG_DP_SWLM), y) HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_swlm.o endif ifeq ($(CONFIG_WLAN_DUMP_IN_PROGRESS), y) HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dump_in_progress.o endif endif ifeq ($(CONFIG_QCACLD_FEATURE_FW_STATE), y) Loading Loading @@ -2799,6 +2802,7 @@ cppflags-$(CONFIG_WLAN_SYSFS_HE_BSS_COLOR) += -DWLAN_SYSFS_HE_BSS_COLOR cppflags-$(CONFIG_WLAN_SYSFS_STA_INFO) += -DWLAN_SYSFS_STA_INFO cppflags-$(CONFIG_WLAN_DL_MODES) += -DCONFIG_WLAN_DL_MODES cppflags-$(CONFIG_WLAN_THERMAL_MULTI_CLIENT_SUPPORT) += -DFEATURE_WPSS_THERMAL_MITIGATION cppflags-$(CONFIG_WLAN_DUMP_IN_PROGRESS) += -DCONFIG_WLAN_DUMP_IN_PROGRESS ifeq ($(CONFIG_LEAK_DETECTION), y) cppflags-y += \ Loading Loading @@ -2958,6 +2962,7 @@ cppflags-$(CONFIG_LL_DP_SUPPORT) += -DCONFIG_LL_DP_SUPPORT cppflags-$(CONFIG_LL_DP_SUPPORT) += -DWLAN_FULL_REORDER_OFFLOAD cppflags-$(CONFIG_WLAN_FEATURE_BIG_DATA_STATS) += -DWLAN_FEATURE_BIG_DATA_STATS cppflags-$(CONFIG_WLAN_FEATURE_IGMP_OFFLOAD) += -DWLAN_FEATURE_IGMP_OFFLOAD cppflags-$(CONFIG_WLAN_FEATURE_GET_USABLE_CHAN_LIST) += -DWLAN_FEATURE_GET_USABLE_CHAN_LIST # For PCIe GEN switch cppflags-$(CONFIG_PCIE_GEN_SWITCH) += -DPCIE_GEN_SWITCH Loading Loading @@ -3313,6 +3318,7 @@ cppflags-y += -DPCI_LINK_STATUS_SANITY cppflags-y += -DDP_MON_RSSI_IN_DBM cppflags-y += -DSYSTEM_PM_CHECK cppflags-y += -DDISABLE_EAPOL_INTRABSS_FWD cppflags-y += -DDISABLE_MON_RING_MSI_CFG endif # Enable Low latency optimisation mode Loading components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +27 −0 Original line number Diff line number Diff line Loading @@ -1494,6 +1494,18 @@ struct policy_mgr_hdd_cbacks { struct ch_params *ch_params); }; /** * struct policy_mgr_conc_cbacks - lim Callbacks to be invoked * from policy manager * @connection_info_update: check and update params based on STA/SAP * concurrency.such as EDCA params and RTS threshold. * If updated, it will also send the updated parameters * to FW. */ struct policy_mgr_conc_cbacks { void (*connection_info_update)(void); }; /** * struct policy_mgr_tdls_cbacks - TDLS Callbacks to be invoked Loading Loading @@ -2397,6 +2409,21 @@ QDF_STATUS policy_mgr_register_hdd_cb(struct wlan_objmgr_psoc *psoc, */ QDF_STATUS policy_mgr_deregister_hdd_cb(struct wlan_objmgr_psoc *psoc); /** * policy_mgr_register_conc_cb() - register Lim callbacks * @psoc: PSOC object information * @hdd_cbacks: function pointers from lim * * API, allows Lim to register callbacks to be invoked by policy * mgr * * Return: SUCCESS, * Failure (if registration fails) */ QDF_STATUS policy_mgr_register_conc_cb(struct wlan_objmgr_psoc *psoc, struct policy_mgr_conc_cbacks *conc_cbacks); /** * policy_mgr_register_tdls_cb() - register TDLS callbacks * @psoc: PSOC object information Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +1 −0 Original line number Diff line number Diff line Loading @@ -2483,6 +2483,7 @@ void policy_mgr_change_sap_channel_with_csa(struct wlan_objmgr_psoc *psoc, return; } if (pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params) { ch_params.ch_width = ch_width; status = pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params( psoc, vdev_id, ch_freq, &ch_params); if (QDF_IS_STATUS_SUCCESS(status) && Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c +8 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ #define POLICY_MGR_MAX_CON_STRING_LEN 100 static const uint16_t sap_mand_5g_freq_list[] = {5745, 5765, 5785, 5805}; struct policy_mgr_conc_connection_info pm_conc_connection_list[MAX_NUMBER_OF_CONC_CONNECTIONS]; Loading Loading @@ -629,6 +631,9 @@ void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc, if (pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb) pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb(mcc_mode); } if (pm_ctx->conc_cbacks.connection_info_update) pm_ctx->conc_cbacks.connection_info_update(); } /** Loading Loading @@ -3612,8 +3617,9 @@ policy_mgr_init_sap_mandatory_chan_by_band(struct wlan_objmgr_psoc *psoc, } } if (band_bitmap & BIT(REG_BAND_5G)) policy_mgr_add_sap_mandatory_chan(psoc, SAP_MANDATORY_5G_CH_FREQ); for (i = 0; i < ARRAY_SIZE(sap_mand_5g_freq_list); i++) policy_mgr_add_sap_mandatory_chan( psoc, sap_mand_5g_freq_list[i]); if (band_bitmap & BIT(REG_BAND_6G)) policy_mgr_add_sap_mandatory_6ghz_chan(psoc); } Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +106 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,34 @@ /* invalid channel id. */ #define INVALID_CHANNEL_ID 0 /** * policy_mgr_debug_alert() - fatal error alert * * This function will flush host drv log and * disable all level logs. * It can be called in fatal error detected in policy * manager. * This is to avoid host log overwritten in stress * test to help issue debug. * * Return: none */ static void policy_mgr_debug_alert(void) { int module_id; int qdf_print_idx; policy_mgr_err("fatal error detected to flush and pause host log"); qdf_logging_flush_logs(); qdf_print_idx = qdf_get_pidx(); for (module_id = 0; module_id < QDF_MODULE_ID_MAX; module_id++) qdf_print_set_category_verbose( qdf_print_idx, module_id, QDF_TRACE_LEVEL_NONE, 0); } QDF_STATUS policy_mgr_get_allow_mcc_go_diff_bi(struct wlan_objmgr_psoc *psoc, uint8_t *allow_mcc_go_diff_bi) Loading Loading @@ -1827,6 +1855,64 @@ void policy_mgr_clear_concurrency_mode(struct wlan_objmgr_psoc *psoc, pm_ctx->no_of_open_sessions[mode]); } /** * policy_mgr_validate_conn_info() - validate conn info list * @psoc: PSOC object data * * This function will check connection list to see duplicated * vdev entry existing or not. * * Return: true if conn list is in abnormal state. */ static bool policy_mgr_validate_conn_info(struct wlan_objmgr_psoc *psoc) { uint32_t i, j, conn_num = 0; bool panic = false; struct policy_mgr_psoc_priv_obj *pm_ctx; pm_ctx = policy_mgr_get_context(psoc); if (!pm_ctx) { policy_mgr_err("Invalid Context"); return true; } qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock); for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) { if (pm_conc_connection_list[i].in_use) { for (j = i + 1; j < MAX_NUMBER_OF_CONC_CONNECTIONS; j++) { if (pm_conc_connection_list[j].in_use && pm_conc_connection_list[i].vdev_id == pm_conc_connection_list[j].vdev_id) { policy_mgr_debug( "dup entry %d", pm_conc_connection_list[i].vdev_id); panic = true; } } conn_num++; } } if (panic) policy_mgr_err("dup entry"); for (i = 0, j = 0; i < QDF_MAX_NO_OF_MODE; i++) j += pm_ctx->no_of_active_sessions[i]; if (j != conn_num) { policy_mgr_err("active session/conn count mismatch %d %d", j, conn_num); panic = true; } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); if (panic) policy_mgr_debug_alert(); return panic; } void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc, enum QDF_OPMODE mode, uint8_t session_id) Loading Loading @@ -2148,6 +2234,7 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc, uint32_t conn_index = 0, next_conn_index = 0; bool found = false; struct policy_mgr_psoc_priv_obj *pm_ctx; bool panic = false; pm_ctx = policy_mgr_get_context(psoc); if (!pm_ctx) { Loading Loading @@ -2197,7 +2284,23 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc, /* clean up the entry */ qdf_mem_zero(&pm_conc_connection_list[next_conn_index - 1], sizeof(*pm_conc_connection_list)); conn_index = 0; while (PM_CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) { if (vdev_id == pm_conc_connection_list[conn_index].vdev_id) { panic = true; break; } conn_index++; } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); if (panic) { policy_mgr_err("dup entry occur"); policy_mgr_debug_alert(); } if (pm_ctx->conc_cbacks.connection_info_update) pm_ctx->conc_cbacks.connection_info_update(); return QDF_STATUS_SUCCESS; } Loading Loading @@ -2544,6 +2647,7 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, if (policy_mgr_max_concurrent_connections_reached(psoc)) { policy_mgr_rl_debug("Reached max concurrent connections: %d", pm_ctx->cfg.max_conc_cxns); policy_mgr_validate_conn_info(psoc); goto done; } Loading Loading @@ -3538,6 +3642,8 @@ void policy_mgr_dump_connection_status_info(struct wlan_objmgr_psoc *psoc) pm_conc_connection_list[i].ch_flagext); } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); policy_mgr_validate_conn_info(psoc); } bool policy_mgr_is_any_mode_active_on_band_along_with_session( Loading Loading
Kbuild +6 −0 Original line number Diff line number Diff line Loading @@ -389,6 +389,9 @@ HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dp_aggregation.o ifeq ($(CONFIG_DP_SWLM), y) HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_swlm.o endif ifeq ($(CONFIG_WLAN_DUMP_IN_PROGRESS), y) HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_sysfs_dump_in_progress.o endif endif ifeq ($(CONFIG_QCACLD_FEATURE_FW_STATE), y) Loading Loading @@ -2799,6 +2802,7 @@ cppflags-$(CONFIG_WLAN_SYSFS_HE_BSS_COLOR) += -DWLAN_SYSFS_HE_BSS_COLOR cppflags-$(CONFIG_WLAN_SYSFS_STA_INFO) += -DWLAN_SYSFS_STA_INFO cppflags-$(CONFIG_WLAN_DL_MODES) += -DCONFIG_WLAN_DL_MODES cppflags-$(CONFIG_WLAN_THERMAL_MULTI_CLIENT_SUPPORT) += -DFEATURE_WPSS_THERMAL_MITIGATION cppflags-$(CONFIG_WLAN_DUMP_IN_PROGRESS) += -DCONFIG_WLAN_DUMP_IN_PROGRESS ifeq ($(CONFIG_LEAK_DETECTION), y) cppflags-y += \ Loading Loading @@ -2958,6 +2962,7 @@ cppflags-$(CONFIG_LL_DP_SUPPORT) += -DCONFIG_LL_DP_SUPPORT cppflags-$(CONFIG_LL_DP_SUPPORT) += -DWLAN_FULL_REORDER_OFFLOAD cppflags-$(CONFIG_WLAN_FEATURE_BIG_DATA_STATS) += -DWLAN_FEATURE_BIG_DATA_STATS cppflags-$(CONFIG_WLAN_FEATURE_IGMP_OFFLOAD) += -DWLAN_FEATURE_IGMP_OFFLOAD cppflags-$(CONFIG_WLAN_FEATURE_GET_USABLE_CHAN_LIST) += -DWLAN_FEATURE_GET_USABLE_CHAN_LIST # For PCIe GEN switch cppflags-$(CONFIG_PCIE_GEN_SWITCH) += -DPCIE_GEN_SWITCH Loading Loading @@ -3313,6 +3318,7 @@ cppflags-y += -DPCI_LINK_STATUS_SANITY cppflags-y += -DDP_MON_RSSI_IN_DBM cppflags-y += -DSYSTEM_PM_CHECK cppflags-y += -DDISABLE_EAPOL_INTRABSS_FWD cppflags-y += -DDISABLE_MON_RING_MSI_CFG endif # Enable Low latency optimisation mode Loading
components/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +27 −0 Original line number Diff line number Diff line Loading @@ -1494,6 +1494,18 @@ struct policy_mgr_hdd_cbacks { struct ch_params *ch_params); }; /** * struct policy_mgr_conc_cbacks - lim Callbacks to be invoked * from policy manager * @connection_info_update: check and update params based on STA/SAP * concurrency.such as EDCA params and RTS threshold. * If updated, it will also send the updated parameters * to FW. */ struct policy_mgr_conc_cbacks { void (*connection_info_update)(void); }; /** * struct policy_mgr_tdls_cbacks - TDLS Callbacks to be invoked Loading Loading @@ -2397,6 +2409,21 @@ QDF_STATUS policy_mgr_register_hdd_cb(struct wlan_objmgr_psoc *psoc, */ QDF_STATUS policy_mgr_deregister_hdd_cb(struct wlan_objmgr_psoc *psoc); /** * policy_mgr_register_conc_cb() - register Lim callbacks * @psoc: PSOC object information * @hdd_cbacks: function pointers from lim * * API, allows Lim to register callbacks to be invoked by policy * mgr * * Return: SUCCESS, * Failure (if registration fails) */ QDF_STATUS policy_mgr_register_conc_cb(struct wlan_objmgr_psoc *psoc, struct policy_mgr_conc_cbacks *conc_cbacks); /** * policy_mgr_register_tdls_cb() - register TDLS callbacks * @psoc: PSOC object information Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +1 −0 Original line number Diff line number Diff line Loading @@ -2483,6 +2483,7 @@ void policy_mgr_change_sap_channel_with_csa(struct wlan_objmgr_psoc *psoc, return; } if (pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params) { ch_params.ch_width = ch_width; status = pm_ctx->hdd_cbacks.wlan_get_ap_prefer_conc_ch_params( psoc, vdev_id, ch_freq, &ch_params); if (QDF_IS_STATUS_SUCCESS(status) && Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c +8 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ #define POLICY_MGR_MAX_CON_STRING_LEN 100 static const uint16_t sap_mand_5g_freq_list[] = {5745, 5765, 5785, 5805}; struct policy_mgr_conc_connection_info pm_conc_connection_list[MAX_NUMBER_OF_CONC_CONNECTIONS]; Loading Loading @@ -629,6 +631,9 @@ void policy_mgr_update_conc_list(struct wlan_objmgr_psoc *psoc, if (pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb) pm_ctx->dp_cbacks.hdd_ipa_set_mcc_mode_cb(mcc_mode); } if (pm_ctx->conc_cbacks.connection_info_update) pm_ctx->conc_cbacks.connection_info_update(); } /** Loading Loading @@ -3612,8 +3617,9 @@ policy_mgr_init_sap_mandatory_chan_by_band(struct wlan_objmgr_psoc *psoc, } } if (band_bitmap & BIT(REG_BAND_5G)) policy_mgr_add_sap_mandatory_chan(psoc, SAP_MANDATORY_5G_CH_FREQ); for (i = 0; i < ARRAY_SIZE(sap_mand_5g_freq_list); i++) policy_mgr_add_sap_mandatory_chan( psoc, sap_mand_5g_freq_list[i]); if (band_bitmap & BIT(REG_BAND_6G)) policy_mgr_add_sap_mandatory_6ghz_chan(psoc); } Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +106 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,34 @@ /* invalid channel id. */ #define INVALID_CHANNEL_ID 0 /** * policy_mgr_debug_alert() - fatal error alert * * This function will flush host drv log and * disable all level logs. * It can be called in fatal error detected in policy * manager. * This is to avoid host log overwritten in stress * test to help issue debug. * * Return: none */ static void policy_mgr_debug_alert(void) { int module_id; int qdf_print_idx; policy_mgr_err("fatal error detected to flush and pause host log"); qdf_logging_flush_logs(); qdf_print_idx = qdf_get_pidx(); for (module_id = 0; module_id < QDF_MODULE_ID_MAX; module_id++) qdf_print_set_category_verbose( qdf_print_idx, module_id, QDF_TRACE_LEVEL_NONE, 0); } QDF_STATUS policy_mgr_get_allow_mcc_go_diff_bi(struct wlan_objmgr_psoc *psoc, uint8_t *allow_mcc_go_diff_bi) Loading Loading @@ -1827,6 +1855,64 @@ void policy_mgr_clear_concurrency_mode(struct wlan_objmgr_psoc *psoc, pm_ctx->no_of_open_sessions[mode]); } /** * policy_mgr_validate_conn_info() - validate conn info list * @psoc: PSOC object data * * This function will check connection list to see duplicated * vdev entry existing or not. * * Return: true if conn list is in abnormal state. */ static bool policy_mgr_validate_conn_info(struct wlan_objmgr_psoc *psoc) { uint32_t i, j, conn_num = 0; bool panic = false; struct policy_mgr_psoc_priv_obj *pm_ctx; pm_ctx = policy_mgr_get_context(psoc); if (!pm_ctx) { policy_mgr_err("Invalid Context"); return true; } qdf_mutex_acquire(&pm_ctx->qdf_conc_list_lock); for (i = 0; i < MAX_NUMBER_OF_CONC_CONNECTIONS; i++) { if (pm_conc_connection_list[i].in_use) { for (j = i + 1; j < MAX_NUMBER_OF_CONC_CONNECTIONS; j++) { if (pm_conc_connection_list[j].in_use && pm_conc_connection_list[i].vdev_id == pm_conc_connection_list[j].vdev_id) { policy_mgr_debug( "dup entry %d", pm_conc_connection_list[i].vdev_id); panic = true; } } conn_num++; } } if (panic) policy_mgr_err("dup entry"); for (i = 0, j = 0; i < QDF_MAX_NO_OF_MODE; i++) j += pm_ctx->no_of_active_sessions[i]; if (j != conn_num) { policy_mgr_err("active session/conn count mismatch %d %d", j, conn_num); panic = true; } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); if (panic) policy_mgr_debug_alert(); return panic; } void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc, enum QDF_OPMODE mode, uint8_t session_id) Loading Loading @@ -2148,6 +2234,7 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc, uint32_t conn_index = 0, next_conn_index = 0; bool found = false; struct policy_mgr_psoc_priv_obj *pm_ctx; bool panic = false; pm_ctx = policy_mgr_get_context(psoc); if (!pm_ctx) { Loading Loading @@ -2197,7 +2284,23 @@ QDF_STATUS policy_mgr_decr_connection_count(struct wlan_objmgr_psoc *psoc, /* clean up the entry */ qdf_mem_zero(&pm_conc_connection_list[next_conn_index - 1], sizeof(*pm_conc_connection_list)); conn_index = 0; while (PM_CONC_CONNECTION_LIST_VALID_INDEX(conn_index)) { if (vdev_id == pm_conc_connection_list[conn_index].vdev_id) { panic = true; break; } conn_index++; } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); if (panic) { policy_mgr_err("dup entry occur"); policy_mgr_debug_alert(); } if (pm_ctx->conc_cbacks.connection_info_update) pm_ctx->conc_cbacks.connection_info_update(); return QDF_STATUS_SUCCESS; } Loading Loading @@ -2544,6 +2647,7 @@ bool policy_mgr_is_concurrency_allowed(struct wlan_objmgr_psoc *psoc, if (policy_mgr_max_concurrent_connections_reached(psoc)) { policy_mgr_rl_debug("Reached max concurrent connections: %d", pm_ctx->cfg.max_conc_cxns); policy_mgr_validate_conn_info(psoc); goto done; } Loading Loading @@ -3538,6 +3642,8 @@ void policy_mgr_dump_connection_status_info(struct wlan_objmgr_psoc *psoc) pm_conc_connection_list[i].ch_flagext); } qdf_mutex_release(&pm_ctx->qdf_conc_list_lock); policy_mgr_validate_conn_info(psoc); } bool policy_mgr_is_any_mode_active_on_band_along_with_session( Loading