Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec8001bf authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge ee9393e9 on remote branch

Change-Id: Ic44f8c22a727c1cfd730c6b5c039b5e2d9c6ecb9
parents fe16b284 ee9393e9
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -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;
	/*
@@ -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;
		}
	}
}
+3 −2
Original line number Diff line number Diff line
@@ -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
@@ -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.
@@ -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;
+10 −4
Original line number Diff line number Diff line
@@ -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;
}
@@ -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;
	}
+23 −11
Original line number Diff line number Diff line
@@ -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");
@@ -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,
@@ -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);
@@ -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);
	}
}

/**
@@ -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) {
@@ -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:
+17 −10
Original line number Diff line number Diff line
@@ -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);

@@ -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)
{
@@ -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