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

Commit 3556ad7d authored by Ke Huang's avatar Ke Huang Committed by nshrivas
Browse files

qcacld-3.0: Remove roc context when shutting down wlan during ssr

qcacld-2.0 to qcacld-3.0 Propagation.

Remain on channel context should be removed as p2p if wlan is
shutdown when roc is in progress, or else there will be status
inconsistency of roc and p2p will be hang up when system is
started again during ssr test.

CRs-Fixed: 2146132
Change-Id: Iae235cf27a7fe7949abd1b57e397bbe8e750976f
parent 0a2588fe
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2259,6 +2259,7 @@ struct hdd_context_s {

	enum sar_version sar_version;

	bool is_ssr_in_progress;
};

int hdd_validate_channel_and_bandwidth(hdd_adapter_t *adapter,
+2 −0
Original line number Diff line number Diff line
@@ -8920,6 +8920,8 @@ static hdd_context_t *hdd_context_create(struct device *dev)
	wlan_logging_set_log_to_console(hdd_ctx->config->wlanLoggingToConsole);
	wlan_logging_set_active(hdd_ctx->config->wlanLoggingEnable);

	hdd_ctx->is_ssr_in_progress = false;

	/*
	 * Update QDF trace levels based upon the code. The multicast
	 * levels of the code need not be set when the logger thread
+3 −1
Original line number Diff line number Diff line
@@ -802,6 +802,8 @@ QDF_STATUS wlan_hdd_remain_on_channel_callback(tHalHandle hHal, void *pCtx,
	 * Always schedule below work queue only after completing the
	 * cancel_rem_on_chan_var event.
	 */
	/* If ssr is inprogress, do not schedule next roc req */
	if (!hdd_ctx->is_ssr_in_progress)
		schedule_delayed_work(&hdd_ctx->roc_req_work, 0);

	return QDF_STATUS_SUCCESS;
+5 −0
Original line number Diff line number Diff line
@@ -1475,6 +1475,8 @@ QDF_STATUS hdd_wlan_shutdown(void)
		return QDF_STATUS_E_FAILURE;
	}

	pHddCtx->is_ssr_in_progress = true;

	cds_clear_concurrent_session_count();

	hdd_debug("Invoking packetdump deregistration API");
@@ -1691,6 +1693,9 @@ success:
	if (pHddCtx->config->sap_internal_restart)
		hdd_ssr_restart_sap(pHddCtx);
	hdd_is_interface_down_during_ssr(pHddCtx);

	pHddCtx->is_ssr_in_progress = false;

	hdd_wlan_ssr_reinit_event();
	return QDF_STATUS_SUCCESS;
}