Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +16 −4 Original line number Diff line number Diff line Loading @@ -2368,6 +2368,7 @@ void policy_mgr_check_concurrent_intf_and_restart_sap( uint32_t op_ch_freq_list[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0}; uint8_t vdev_id[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0}; uint32_t cc_count = 0; uint32_t timeout_ms = 0; bool restart_sap = false; uint32_t sap_freq; /* Loading Loading @@ -2447,10 +2448,21 @@ void policy_mgr_check_concurrent_intf_and_restart_sap( if (restart_sap || ((mcc_to_scc_switch != QDF_MCC_TO_SCC_SWITCH_DISABLE) && (sta_check || gc_check))) { if (pm_ctx->sta_ap_intf_check_work_info) { qdf_sched_work(0, &pm_ctx->sta_ap_intf_check_work); policy_mgr_debug( "Checking for Concurrent Change interference"); if (!pm_ctx->sta_ap_intf_check_work_info) { policy_mgr_err("invalid sta_ap_intf_check_work_info"); return; } policy_mgr_debug("Checking for Concurrent Change interference"); if (policy_mgr_mode_specific_connection_count( psoc, PM_P2P_GO_MODE, NULL)) timeout_ms = MAX_NOA_TIME; if (!qdf_delayed_work_start(&pm_ctx->sta_ap_intf_check_work, timeout_ms)) { policy_mgr_err("change interface request failure"); return; } } } Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ #include "qdf_defer.h" #include "wlan_reg_services_api.h" #include "cds_ieee80211_common_i.h" #include "qdf_delayed_work.h" #define DBS_OPPORTUNISTIC_TIME 5 #define POLICY_MGR_SER_CMD_TIMEOUT 4000 Loading @@ -40,6 +40,7 @@ #define PM_24_GHZ_CH_FREQ_6 (2437) #define PM_5_GHZ_CH_FREQ_36 (5180) #define CHANNEL_SWITCH_COMPLETE_TIMEOUT (2000) #define MAX_NOA_TIME (3000) /** * Policy Mgr hardware mode list bit-mask definitions. Loading Loading @@ -351,7 +352,7 @@ struct policy_mgr_psoc_priv_obj { uint32_t concurrency_mode; uint8_t no_of_open_sessions[QDF_MAX_NO_OF_MODE]; uint8_t no_of_active_sessions[QDF_MAX_NO_OF_MODE]; qdf_work_t sta_ap_intf_check_work; struct qdf_delayed_work sta_ap_intf_check_work; qdf_work_t nan_sap_conc_work; uint32_t num_dbs_hw_modes; struct dbs_hw_mode_info hw_mode; Loading components/cmn_services/policy_mgr/src/wlan_policy_mgr_init_deinit.c +10 −4 Original line number Diff line number Diff line Loading @@ -338,9 +338,15 @@ QDF_STATUS policy_mgr_psoc_open(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_E_FAILURE; } pm_ctx->sta_ap_intf_check_work_info->psoc = psoc; qdf_create_work(0, &pm_ctx->sta_ap_intf_check_work, if (QDF_IS_STATUS_ERROR(qdf_delayed_work_create( &pm_ctx->sta_ap_intf_check_work, policy_mgr_check_sta_ap_concurrent_ch_intf, pm_ctx->sta_ap_intf_check_work_info); pm_ctx))) { policy_mgr_err("Failed to create dealyed work queue"); qdf_mutex_destroy(&pm_ctx->qdf_conc_list_lock); qdf_mem_free(pm_ctx->sta_ap_intf_check_work_info); return QDF_STATUS_E_FAILURE; } return QDF_STATUS_SUCCESS; } Loading Loading @@ -369,7 +375,7 @@ QDF_STATUS policy_mgr_psoc_close(struct wlan_objmgr_psoc *psoc) } if (pm_ctx->sta_ap_intf_check_work_info) { qdf_cancel_work(&pm_ctx->sta_ap_intf_check_work); qdf_delayed_work_destroy(&pm_ctx->sta_ap_intf_check_work); qdf_mem_free(pm_ctx->sta_ap_intf_check_work_info); pm_ctx->sta_ap_intf_check_work_info = NULL; } Loading components/ipa/core/src/wlan_ipa_core.c +23 −11 Original line number Diff line number Diff line Loading @@ -3579,7 +3579,6 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) ipa_info("UC already loaded"); return; } ipa_ctx->uc_loaded = true; if (!qdf_dev) { ipa_err("qdf_dev is null"); Loading @@ -3602,7 +3601,7 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) if (status) { ipa_err("Failure to setup IPA pipes (status=%d)", status); return; goto connect_pipe_fail; } /* Setup the Tx buffer SMMU mapings */ status = cdp_ipa_tx_buf_smmu_mapping(ipa_ctx->dp_soc, Loading @@ -3610,7 +3609,7 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) if (status) { ipa_err("Failure to map Tx buffers for IPA(status=%d)", status); return; goto smmu_map_fail; } ipa_info("TX buffers mapped to IPA"); cdp_ipa_set_doorbell_paddr(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id); Loading @@ -3630,6 +3629,19 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) ipa_debug("Client already connected, enable IPA/FW PIPEs"); wlan_ipa_uc_handle_first_con(ipa_ctx); } ipa_ctx->uc_loaded = true; return; smmu_map_fail: qdf_ipa_wdi_disconn_pipes(); connect_pipe_fail: if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config)) { qdf_cancel_work(&ipa_ctx->mcc_work); wlan_ipa_teardown_sys_pipe(ipa_ctx); } } /** Loading Loading @@ -3849,6 +3861,14 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, goto fail_return; } for (i = 0; i < WLAN_IPA_UC_OPCODE_MAX; i++) { ipa_ctx->uc_op_work[i].osdev = osdev; ipa_ctx->uc_op_work[i].msg = NULL; qdf_create_work(0, &ipa_ctx->uc_op_work[i].work, wlan_ipa_uc_fw_op_event_handler, &ipa_ctx->uc_op_work[i]); } if (true == ipa_ctx->uc_loaded) { status = wlan_ipa_wdi_setup(ipa_ctx, osdev); if (status) { Loading Loading @@ -3882,14 +3902,6 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, ipa_err("Failed to init perf level"); } for (i = 0; i < WLAN_IPA_UC_OPCODE_MAX; i++) { ipa_ctx->uc_op_work[i].osdev = osdev; qdf_create_work(0, &ipa_ctx->uc_op_work[i].work, wlan_ipa_uc_fw_op_event_handler, &ipa_ctx->uc_op_work[i]); ipa_ctx->uc_op_work[i].msg = NULL; } cdp_ipa_register_op_cb(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id, wlan_ipa_uc_op_event_handler, (void *)ipa_ctx); fail_return: Loading components/mlme/dispatcher/inc/wlan_mlme_twt_ucfg_api.h +17 −10 Original line number Diff line number Diff line Loading @@ -220,17 +220,16 @@ QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_reset_twt_init_context() - Reset twt init if ack fail * This is to handle back to back command. If ack failed for previous * command and again new commad comes then init context should reset to * allow new command. * ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail * This is to handle back to back command. If ack failed for active * command then reset this command to allow new twt command. * @psoc: pointer to psoc object * @peer_mac: peer mac address * @dialog_id: dialog id * * Return: QDF Status */ QDF_STATUS ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id); Loading Loading @@ -640,7 +639,7 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, } static inline QDF_STATUS ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc, ucfg_mlme_reset_twt_reset_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { Loading Loading @@ -728,5 +727,13 @@ ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc, return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; } static inline QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return QDF_STATUS_E_NOSUPPORT; } #endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */ #endif /* _WLAN_MLME_TWT_UCFG_API_H_ */ Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c +16 −4 Original line number Diff line number Diff line Loading @@ -2368,6 +2368,7 @@ void policy_mgr_check_concurrent_intf_and_restart_sap( uint32_t op_ch_freq_list[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0}; uint8_t vdev_id[MAX_NUMBER_OF_CONC_CONNECTIONS] = {0}; uint32_t cc_count = 0; uint32_t timeout_ms = 0; bool restart_sap = false; uint32_t sap_freq; /* Loading Loading @@ -2447,10 +2448,21 @@ void policy_mgr_check_concurrent_intf_and_restart_sap( if (restart_sap || ((mcc_to_scc_switch != QDF_MCC_TO_SCC_SWITCH_DISABLE) && (sta_check || gc_check))) { if (pm_ctx->sta_ap_intf_check_work_info) { qdf_sched_work(0, &pm_ctx->sta_ap_intf_check_work); policy_mgr_debug( "Checking for Concurrent Change interference"); if (!pm_ctx->sta_ap_intf_check_work_info) { policy_mgr_err("invalid sta_ap_intf_check_work_info"); return; } policy_mgr_debug("Checking for Concurrent Change interference"); if (policy_mgr_mode_specific_connection_count( psoc, PM_P2P_GO_MODE, NULL)) timeout_ms = MAX_NOA_TIME; if (!qdf_delayed_work_start(&pm_ctx->sta_ap_intf_check_work, timeout_ms)) { policy_mgr_err("change interface request failure"); return; } } } Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ #include "qdf_defer.h" #include "wlan_reg_services_api.h" #include "cds_ieee80211_common_i.h" #include "qdf_delayed_work.h" #define DBS_OPPORTUNISTIC_TIME 5 #define POLICY_MGR_SER_CMD_TIMEOUT 4000 Loading @@ -40,6 +40,7 @@ #define PM_24_GHZ_CH_FREQ_6 (2437) #define PM_5_GHZ_CH_FREQ_36 (5180) #define CHANNEL_SWITCH_COMPLETE_TIMEOUT (2000) #define MAX_NOA_TIME (3000) /** * Policy Mgr hardware mode list bit-mask definitions. Loading Loading @@ -351,7 +352,7 @@ struct policy_mgr_psoc_priv_obj { uint32_t concurrency_mode; uint8_t no_of_open_sessions[QDF_MAX_NO_OF_MODE]; uint8_t no_of_active_sessions[QDF_MAX_NO_OF_MODE]; qdf_work_t sta_ap_intf_check_work; struct qdf_delayed_work sta_ap_intf_check_work; qdf_work_t nan_sap_conc_work; uint32_t num_dbs_hw_modes; struct dbs_hw_mode_info hw_mode; Loading
components/cmn_services/policy_mgr/src/wlan_policy_mgr_init_deinit.c +10 −4 Original line number Diff line number Diff line Loading @@ -338,9 +338,15 @@ QDF_STATUS policy_mgr_psoc_open(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_E_FAILURE; } pm_ctx->sta_ap_intf_check_work_info->psoc = psoc; qdf_create_work(0, &pm_ctx->sta_ap_intf_check_work, if (QDF_IS_STATUS_ERROR(qdf_delayed_work_create( &pm_ctx->sta_ap_intf_check_work, policy_mgr_check_sta_ap_concurrent_ch_intf, pm_ctx->sta_ap_intf_check_work_info); pm_ctx))) { policy_mgr_err("Failed to create dealyed work queue"); qdf_mutex_destroy(&pm_ctx->qdf_conc_list_lock); qdf_mem_free(pm_ctx->sta_ap_intf_check_work_info); return QDF_STATUS_E_FAILURE; } return QDF_STATUS_SUCCESS; } Loading Loading @@ -369,7 +375,7 @@ QDF_STATUS policy_mgr_psoc_close(struct wlan_objmgr_psoc *psoc) } if (pm_ctx->sta_ap_intf_check_work_info) { qdf_cancel_work(&pm_ctx->sta_ap_intf_check_work); qdf_delayed_work_destroy(&pm_ctx->sta_ap_intf_check_work); qdf_mem_free(pm_ctx->sta_ap_intf_check_work_info); pm_ctx->sta_ap_intf_check_work_info = NULL; } Loading
components/ipa/core/src/wlan_ipa_core.c +23 −11 Original line number Diff line number Diff line Loading @@ -3579,7 +3579,6 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) ipa_info("UC already loaded"); return; } ipa_ctx->uc_loaded = true; if (!qdf_dev) { ipa_err("qdf_dev is null"); Loading @@ -3602,7 +3601,7 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) if (status) { ipa_err("Failure to setup IPA pipes (status=%d)", status); return; goto connect_pipe_fail; } /* Setup the Tx buffer SMMU mapings */ status = cdp_ipa_tx_buf_smmu_mapping(ipa_ctx->dp_soc, Loading @@ -3610,7 +3609,7 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) if (status) { ipa_err("Failure to map Tx buffers for IPA(status=%d)", status); return; goto smmu_map_fail; } ipa_info("TX buffers mapped to IPA"); cdp_ipa_set_doorbell_paddr(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id); Loading @@ -3630,6 +3629,19 @@ static void wlan_ipa_uc_loaded_handler(struct wlan_ipa_priv *ipa_ctx) ipa_debug("Client already connected, enable IPA/FW PIPEs"); wlan_ipa_uc_handle_first_con(ipa_ctx); } ipa_ctx->uc_loaded = true; return; smmu_map_fail: qdf_ipa_wdi_disconn_pipes(); connect_pipe_fail: if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config)) { qdf_cancel_work(&ipa_ctx->mcc_work); wlan_ipa_teardown_sys_pipe(ipa_ctx); } } /** Loading Loading @@ -3849,6 +3861,14 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, goto fail_return; } for (i = 0; i < WLAN_IPA_UC_OPCODE_MAX; i++) { ipa_ctx->uc_op_work[i].osdev = osdev; ipa_ctx->uc_op_work[i].msg = NULL; qdf_create_work(0, &ipa_ctx->uc_op_work[i].work, wlan_ipa_uc_fw_op_event_handler, &ipa_ctx->uc_op_work[i]); } if (true == ipa_ctx->uc_loaded) { status = wlan_ipa_wdi_setup(ipa_ctx, osdev); if (status) { Loading Loading @@ -3882,14 +3902,6 @@ QDF_STATUS wlan_ipa_uc_ol_init(struct wlan_ipa_priv *ipa_ctx, ipa_err("Failed to init perf level"); } for (i = 0; i < WLAN_IPA_UC_OPCODE_MAX; i++) { ipa_ctx->uc_op_work[i].osdev = osdev; qdf_create_work(0, &ipa_ctx->uc_op_work[i].work, wlan_ipa_uc_fw_op_event_handler, &ipa_ctx->uc_op_work[i]); ipa_ctx->uc_op_work[i].msg = NULL; } cdp_ipa_register_op_cb(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id, wlan_ipa_uc_op_event_handler, (void *)ipa_ctx); fail_return: Loading
components/mlme/dispatcher/inc/wlan_mlme_twt_ucfg_api.h +17 −10 Original line number Diff line number Diff line Loading @@ -220,17 +220,16 @@ QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val); /** * ucfg_mlme_reset_twt_init_context() - Reset twt init if ack fail * This is to handle back to back command. If ack failed for previous * command and again new commad comes then init context should reset to * allow new command. * ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail * This is to handle back to back command. If ack failed for active * command then reset this command to allow new twt command. * @psoc: pointer to psoc object * @peer_mac: peer mac address * @dialog_id: dialog id * * Return: QDF Status */ QDF_STATUS ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id); Loading Loading @@ -640,7 +639,7 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, } static inline QDF_STATUS ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc, ucfg_mlme_reset_twt_reset_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { Loading Loading @@ -728,5 +727,13 @@ ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc, return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED; } static inline QDF_STATUS ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc, struct qdf_mac_addr *peer_mac, uint8_t dialog_id) { return QDF_STATUS_E_NOSUPPORT; } #endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */ #endif /* _WLAN_MLME_TWT_UCFG_API_H_ */