Loading Kbuild +4 −0 Original line number Diff line number Diff line Loading @@ -3068,6 +3068,10 @@ cppflags-$(CONFIG_WDI2_IPA_OVER_GSI) += -DIPA_WDI2_GSI #Enable WMI DIAG log over CE7 cppflags-$(CONFIG_WLAN_FEATURE_WMI_DIAG_OVER_CE7) += -DWLAN_FEATURE_WMI_DIAG_OVER_CE7 ifdef CONFIG_WLAN_DP_FEATURE_DEFERRED_REO_QDESC_DESTROY cppflags-y += -DWLAN_DP_FEATURE_DEFERRED_REO_QDESC_DESTROY endif ifeq ($(CONFIG_ARCH_SDX20), y) cppflags-y += -DSYNC_IPA_READY endif Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +0 −8 Original line number Diff line number Diff line Loading @@ -1971,14 +1971,6 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc, pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency(false); }; if ((mode == QDF_SAP_MODE || mode == QDF_P2P_GO_MODE) && (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL) == 0) && (policy_mgr_mode_specific_connection_count(psoc, PM_P2P_GO_MODE, NULL) == 0)) wlan_reg_set_ap_pwr_and_update_chan_list(pm_ctx->pdev, REG_INDOOR_AP); /* Disable RPS if SAP interface has come up */ if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL) == 0) { Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c +18 −6 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ void policy_mgr_decr_session_set_pcl(struct wlan_objmgr_psoc *psoc, * policy_mgr_update_valid_ch_freq_list() - Update policy manager valid ch list * @pm_ctx: policy manager context data * @ch_list: Regulatory channel list * @is_client: true if caller is a client, false if it is a beaconing entity * * When regulatory component channel list is updated this internal function is * called to update policy manager copy of valid channel list. Loading @@ -233,14 +234,21 @@ void policy_mgr_decr_session_set_pcl(struct wlan_objmgr_psoc *psoc, */ static void policy_mgr_update_valid_ch_freq_list(struct policy_mgr_psoc_priv_obj *pm_ctx, struct regulatory_channel *reg_ch_list) struct regulatory_channel *reg_ch_list, bool is_client) { uint32_t i, j = 0, ch_freq; enum channel_state state; for (i = 0; i < NUM_CHANNELS; i++) { ch_freq = reg_ch_list[i].center_freq; state = wlan_reg_get_channel_state_for_freq(pm_ctx->pdev, ch_freq); if (is_client) state = wlan_reg_get_channel_state_for_freq( pm_ctx->pdev, ch_freq); else state = wlan_reg_get_channel_state_from_secondary_list_for_freq( pm_ctx->pdev, ch_freq); if (state != CHANNEL_STATE_DISABLE && state != CHANNEL_STATE_INVALID) { Loading Loading @@ -268,7 +276,8 @@ policy_mgr_reg_chan_change_callback(struct wlan_objmgr_psoc *psoc, return; } policy_mgr_update_valid_ch_freq_list(pm_ctx, chan_list); wlan_reg_decide_6g_ap_pwr_type(pdev); policy_mgr_update_valid_ch_freq_list(pm_ctx, chan_list, false); if (!avoid_freq_ind) { policy_mgr_debug("avoid_freq_ind NULL"); Loading Loading @@ -571,7 +580,9 @@ static QDF_STATUS policy_mgr_modify_sap_pcl_based_on_dfs( } for (i = 0; i < *pcl_len_org; i++) { if (!wlan_reg_is_dfs_for_freq(pm_ctx->pdev, pcl_list_org[i])) { if (!wlan_reg_is_dfs_in_secondary_list_for_freq( pm_ctx->pdev, pcl_list_org[i])) { pcl_list_org[pcl_len] = pcl_list_org[i]; weight_list_org[pcl_len++] = weight_list_org[i]; } Loading Loading @@ -604,7 +615,7 @@ static QDF_STATUS policy_mgr_modify_sap_pcl_based_on_nol( } for (i = 0; i < *pcl_len_org; i++) { if (!wlan_reg_is_disable_for_freq( if (!wlan_reg_is_disable_in_secondary_list_for_freq( pm_ctx->pdev, pcl_list_org[i])) { pcl_list[pcl_len] = pcl_list_org[i]; weight_list[pcl_len++] = weight_list_org[i]; Loading Loading @@ -704,7 +715,8 @@ policy_mgr_modify_pcl_based_on_indoor(struct wlan_objmgr_psoc *psoc, } for (i = 0; i < *pcl_len_org; i++) { if (wlan_reg_is_freq_indoor(pm_ctx->pdev, pcl_list_org[i])) if (wlan_reg_is_freq_indoor_in_secondary_list(pm_ctx->pdev, pcl_list_org[i])) continue; pcl_list[pcl_len] = pcl_list_org[i]; weight_list[pcl_len++] = weight_list_org[i]; Loading components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c +34 −19 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD #include <wlan_pmo_obj_mgmt_api.h> #endif #ifdef WLAN_SUPPORT_TWT #include <wlan_mlme_twt_public_struct.h> #endif #ifdef WLAN_SUPPORT_TWT Loading @@ -44,9 +47,10 @@ * @dest_param: Pointer to copy twt session parameters when a peer with * given dialog id is found * * Return: true if stats are copied for a peer with given dialog, else false * Return: Success if stats are copied for a peer with given dialog, * else failure */ static bool static QDF_STATUS ucfg_twt_get_peer_session_param_by_dlg_id(struct peer_mc_cp_stats *mc_stats, uint32_t input_dialog_id, struct wmi_host_twt_session_stats_info Loading @@ -54,26 +58,33 @@ ucfg_twt_get_peer_session_param_by_dlg_id(struct peer_mc_cp_stats *mc_stats, { struct wmi_host_twt_session_stats_info *src_param; uint32_t event_type; int i; int i, num_session = 0; QDF_STATUS qdf_status = QDF_STATUS_E_INVAL; if (!mc_stats || !dest_param) return false; return qdf_status; for (i = 0; i < TWT_PEER_MAX_SESSIONS; i++) { event_type = mc_stats->twt_param[i].event_type; src_param = &mc_stats->twt_param[i]; if ((!event_type) || (src_param->dialog_id != input_dialog_id)) if (!event_type || (src_param->dialog_id != input_dialog_id && input_dialog_id != WLAN_ALL_SESSIONS_DIALOG_ID)) continue; if ((event_type == HOST_TWT_SESSION_SETUP) || (event_type == HOST_TWT_SESSION_UPDATE)) { qdf_mem_copy(dest_param, src_param, sizeof(*src_param)); return true; qdf_mem_copy(&dest_param[num_session], src_param, sizeof(*src_param)); qdf_status = QDF_STATUS_SUCCESS; num_session += 1; if (num_session >= TWT_PEER_MAX_SESSIONS) break; } } return false; return qdf_status; } /** Loading Loading @@ -114,10 +125,10 @@ ucfg_twt_get_single_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, wlan_cp_stats_peer_obj_lock(peer_cp_stats_priv); peer_mc_stats = peer_cp_stats_priv->peer_stats; if (ucfg_twt_get_peer_session_param_by_dlg_id(peer_mc_stats, dialog_id, params)) { qdf_status = QDF_STATUS_SUCCESS; } else { qdf_status = ucfg_twt_get_peer_session_param_by_dlg_id(peer_mc_stats, dialog_id, params); if (QDF_IS_STATUS_ERROR(qdf_status)) { qdf_err("No TWT session for " QDF_MAC_ADDR_FMT " dialog_id %d", QDF_MAC_ADDR_REF(mac_addr), dialog_id); } Loading Loading @@ -192,6 +203,9 @@ ucfg_twt_get_all_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, qdf_list_t *obj_list; int i, num_sessions = 0; if (!psoc_obj || !params) return qdf_status; /* psoc obj lock should be taken before peer list lock */ wlan_psoc_obj_lock(psoc_obj); psoc_objmgr = &psoc_obj->soc_objmgr; Loading Loading @@ -262,18 +276,19 @@ ucfg_twt_get_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, dialog_id = params[0].dialog_id; /* * Currently twt_get_params nl cmd is sending only dialog_id(STA) and * mac_addr is being filled by driver in STA peer case. When * twt_get_params adds support for mac_addr and dialog_id of STA/SAP, * we need handle unicast/multicast macaddr in * ucfg_twt_get_all_peer_session_params for all active twt sessions * Currently for STA case, twt_get_params nl is sending only dialog_id * and mac_addr is being filled by driver in STA peer case. * For SAP case, twt_get_params nl is sending dialog_id and * peer mac_addr. When twt_get_params add mac_addr and dialog_id of * STA/SAP, we need handle unicast/multicast macaddr in * ucfg_twt_get_peer_session_params. */ if (dialog_id <= TWT_MAX_DIALOG_ID) if (!QDF_IS_ADDR_BROADCAST(mac_addr)) return ucfg_twt_get_single_peer_session_params(psoc_obj, mac_addr, dialog_id, params); else if (dialog_id == TWT_GET_ALL_PEER_PARAMS_DIALOG_ID) else return ucfg_twt_get_all_peer_session_params(psoc_obj, params); return QDF_STATUS_E_INVAL; Loading components/ipa/core/src/wlan_ipa_core.c +7 −0 Original line number Diff line number Diff line Loading @@ -3855,6 +3855,13 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, ipa_err("Failure to setup IPA pipes (status=%d)", status); status = QDF_STATUS_E_FAILURE; if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config)) { qdf_cancel_work(&ipa_ctx->mcc_work); wlan_ipa_teardown_sys_pipe(ipa_ctx); } ipa_ctx->uc_loaded = false; goto fail_return; } Loading Loading
Kbuild +4 −0 Original line number Diff line number Diff line Loading @@ -3068,6 +3068,10 @@ cppflags-$(CONFIG_WDI2_IPA_OVER_GSI) += -DIPA_WDI2_GSI #Enable WMI DIAG log over CE7 cppflags-$(CONFIG_WLAN_FEATURE_WMI_DIAG_OVER_CE7) += -DWLAN_FEATURE_WMI_DIAG_OVER_CE7 ifdef CONFIG_WLAN_DP_FEATURE_DEFERRED_REO_QDESC_DESTROY cppflags-y += -DWLAN_DP_FEATURE_DEFERRED_REO_QDESC_DESTROY endif ifeq ($(CONFIG_ARCH_SDX20), y) cppflags-y += -DSYNC_IPA_READY endif Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c +0 −8 Original line number Diff line number Diff line Loading @@ -1971,14 +1971,6 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc, pm_ctx->dp_cbacks.hdd_disable_rx_ol_in_concurrency(false); }; if ((mode == QDF_SAP_MODE || mode == QDF_P2P_GO_MODE) && (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL) == 0) && (policy_mgr_mode_specific_connection_count(psoc, PM_P2P_GO_MODE, NULL) == 0)) wlan_reg_set_ap_pwr_and_update_chan_list(pm_ctx->pdev, REG_INDOOR_AP); /* Disable RPS if SAP interface has come up */ if (policy_mgr_mode_specific_connection_count(psoc, PM_SAP_MODE, NULL) == 0) { Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_pcl.c +18 −6 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ void policy_mgr_decr_session_set_pcl(struct wlan_objmgr_psoc *psoc, * policy_mgr_update_valid_ch_freq_list() - Update policy manager valid ch list * @pm_ctx: policy manager context data * @ch_list: Regulatory channel list * @is_client: true if caller is a client, false if it is a beaconing entity * * When regulatory component channel list is updated this internal function is * called to update policy manager copy of valid channel list. Loading @@ -233,14 +234,21 @@ void policy_mgr_decr_session_set_pcl(struct wlan_objmgr_psoc *psoc, */ static void policy_mgr_update_valid_ch_freq_list(struct policy_mgr_psoc_priv_obj *pm_ctx, struct regulatory_channel *reg_ch_list) struct regulatory_channel *reg_ch_list, bool is_client) { uint32_t i, j = 0, ch_freq; enum channel_state state; for (i = 0; i < NUM_CHANNELS; i++) { ch_freq = reg_ch_list[i].center_freq; state = wlan_reg_get_channel_state_for_freq(pm_ctx->pdev, ch_freq); if (is_client) state = wlan_reg_get_channel_state_for_freq( pm_ctx->pdev, ch_freq); else state = wlan_reg_get_channel_state_from_secondary_list_for_freq( pm_ctx->pdev, ch_freq); if (state != CHANNEL_STATE_DISABLE && state != CHANNEL_STATE_INVALID) { Loading Loading @@ -268,7 +276,8 @@ policy_mgr_reg_chan_change_callback(struct wlan_objmgr_psoc *psoc, return; } policy_mgr_update_valid_ch_freq_list(pm_ctx, chan_list); wlan_reg_decide_6g_ap_pwr_type(pdev); policy_mgr_update_valid_ch_freq_list(pm_ctx, chan_list, false); if (!avoid_freq_ind) { policy_mgr_debug("avoid_freq_ind NULL"); Loading Loading @@ -571,7 +580,9 @@ static QDF_STATUS policy_mgr_modify_sap_pcl_based_on_dfs( } for (i = 0; i < *pcl_len_org; i++) { if (!wlan_reg_is_dfs_for_freq(pm_ctx->pdev, pcl_list_org[i])) { if (!wlan_reg_is_dfs_in_secondary_list_for_freq( pm_ctx->pdev, pcl_list_org[i])) { pcl_list_org[pcl_len] = pcl_list_org[i]; weight_list_org[pcl_len++] = weight_list_org[i]; } Loading Loading @@ -604,7 +615,7 @@ static QDF_STATUS policy_mgr_modify_sap_pcl_based_on_nol( } for (i = 0; i < *pcl_len_org; i++) { if (!wlan_reg_is_disable_for_freq( if (!wlan_reg_is_disable_in_secondary_list_for_freq( pm_ctx->pdev, pcl_list_org[i])) { pcl_list[pcl_len] = pcl_list_org[i]; weight_list[pcl_len++] = weight_list_org[i]; Loading Loading @@ -704,7 +715,8 @@ policy_mgr_modify_pcl_based_on_indoor(struct wlan_objmgr_psoc *psoc, } for (i = 0; i < *pcl_len_org; i++) { if (wlan_reg_is_freq_indoor(pm_ctx->pdev, pcl_list_org[i])) if (wlan_reg_is_freq_indoor_in_secondary_list(pm_ctx->pdev, pcl_list_org[i])) continue; pcl_list[pcl_len] = pcl_list_org[i]; weight_list[pcl_len++] = weight_list_org[i]; Loading
components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c +34 −19 Original line number Diff line number Diff line Loading @@ -32,6 +32,9 @@ #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD #include <wlan_pmo_obj_mgmt_api.h> #endif #ifdef WLAN_SUPPORT_TWT #include <wlan_mlme_twt_public_struct.h> #endif #ifdef WLAN_SUPPORT_TWT Loading @@ -44,9 +47,10 @@ * @dest_param: Pointer to copy twt session parameters when a peer with * given dialog id is found * * Return: true if stats are copied for a peer with given dialog, else false * Return: Success if stats are copied for a peer with given dialog, * else failure */ static bool static QDF_STATUS ucfg_twt_get_peer_session_param_by_dlg_id(struct peer_mc_cp_stats *mc_stats, uint32_t input_dialog_id, struct wmi_host_twt_session_stats_info Loading @@ -54,26 +58,33 @@ ucfg_twt_get_peer_session_param_by_dlg_id(struct peer_mc_cp_stats *mc_stats, { struct wmi_host_twt_session_stats_info *src_param; uint32_t event_type; int i; int i, num_session = 0; QDF_STATUS qdf_status = QDF_STATUS_E_INVAL; if (!mc_stats || !dest_param) return false; return qdf_status; for (i = 0; i < TWT_PEER_MAX_SESSIONS; i++) { event_type = mc_stats->twt_param[i].event_type; src_param = &mc_stats->twt_param[i]; if ((!event_type) || (src_param->dialog_id != input_dialog_id)) if (!event_type || (src_param->dialog_id != input_dialog_id && input_dialog_id != WLAN_ALL_SESSIONS_DIALOG_ID)) continue; if ((event_type == HOST_TWT_SESSION_SETUP) || (event_type == HOST_TWT_SESSION_UPDATE)) { qdf_mem_copy(dest_param, src_param, sizeof(*src_param)); return true; qdf_mem_copy(&dest_param[num_session], src_param, sizeof(*src_param)); qdf_status = QDF_STATUS_SUCCESS; num_session += 1; if (num_session >= TWT_PEER_MAX_SESSIONS) break; } } return false; return qdf_status; } /** Loading Loading @@ -114,10 +125,10 @@ ucfg_twt_get_single_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, wlan_cp_stats_peer_obj_lock(peer_cp_stats_priv); peer_mc_stats = peer_cp_stats_priv->peer_stats; if (ucfg_twt_get_peer_session_param_by_dlg_id(peer_mc_stats, dialog_id, params)) { qdf_status = QDF_STATUS_SUCCESS; } else { qdf_status = ucfg_twt_get_peer_session_param_by_dlg_id(peer_mc_stats, dialog_id, params); if (QDF_IS_STATUS_ERROR(qdf_status)) { qdf_err("No TWT session for " QDF_MAC_ADDR_FMT " dialog_id %d", QDF_MAC_ADDR_REF(mac_addr), dialog_id); } Loading Loading @@ -192,6 +203,9 @@ ucfg_twt_get_all_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, qdf_list_t *obj_list; int i, num_sessions = 0; if (!psoc_obj || !params) return qdf_status; /* psoc obj lock should be taken before peer list lock */ wlan_psoc_obj_lock(psoc_obj); psoc_objmgr = &psoc_obj->soc_objmgr; Loading Loading @@ -262,18 +276,19 @@ ucfg_twt_get_peer_session_params(struct wlan_objmgr_psoc *psoc_obj, dialog_id = params[0].dialog_id; /* * Currently twt_get_params nl cmd is sending only dialog_id(STA) and * mac_addr is being filled by driver in STA peer case. When * twt_get_params adds support for mac_addr and dialog_id of STA/SAP, * we need handle unicast/multicast macaddr in * ucfg_twt_get_all_peer_session_params for all active twt sessions * Currently for STA case, twt_get_params nl is sending only dialog_id * and mac_addr is being filled by driver in STA peer case. * For SAP case, twt_get_params nl is sending dialog_id and * peer mac_addr. When twt_get_params add mac_addr and dialog_id of * STA/SAP, we need handle unicast/multicast macaddr in * ucfg_twt_get_peer_session_params. */ if (dialog_id <= TWT_MAX_DIALOG_ID) if (!QDF_IS_ADDR_BROADCAST(mac_addr)) return ucfg_twt_get_single_peer_session_params(psoc_obj, mac_addr, dialog_id, params); else if (dialog_id == TWT_GET_ALL_PEER_PARAMS_DIALOG_ID) else return ucfg_twt_get_all_peer_session_params(psoc_obj, params); return QDF_STATUS_E_INVAL; Loading
components/ipa/core/src/wlan_ipa_core.c +7 −0 Original line number Diff line number Diff line Loading @@ -3855,6 +3855,13 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, ipa_err("Failure to setup IPA pipes (status=%d)", status); status = QDF_STATUS_E_FAILURE; if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config)) { qdf_cancel_work(&ipa_ctx->mcc_work); wlan_ipa_teardown_sys_pipe(ipa_ctx); } ipa_ctx->uc_loaded = false; goto fail_return; } Loading