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

Commit 12e7a202 authored by Jianmin Zhu's avatar Jianmin Zhu Committed by Madan Koyyalamudi
Browse files

qcacld-3.0: Fix peer unmap failure due to invalid roam scan mode value

When supplicant disables firmware roam, RSO stop command with
roam scan mode value 4 is sent to firmware and this value 4
indicates the firmare to enable only Forced roam trigger(roam
invoke command from host). But before
ROAM_DEINIT(WMI_VDEV_PARAM_ROAM_FW_OFFLOAD with value zero) is
posted to firmware, the roam scan mode should be 0 or else there
could be potential peer unmap failures if firmware has already
started roam and disconnect is triggered from north bound or from
peer.
To avoid this, in the roam offload state machine handle the state
switch from RSO stopped to deinit if supplicant disabled roaming
flag is set and send RSO stop with roam scan mode value 0 to
firmware.

Change-Id: I6ff39f43bd75c95ed03c357a5602e25a5a0ffd92
CRs-Fixed: 3229082
parent 2dc4b77a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
@@ -960,7 +961,10 @@ cm_roam_switch_to_deinit(struct wlan_objmgr_pdev *pdev,
		if (sup_disabled_roam) {
			mlme_err("vdev[%d]: supplicant disabled roam. clear roam scan mode",
				 vdev_id);
			cm_roam_switch_to_rso_stop(pdev, vdev_id, reason);
			status = cm_roam_stop_req(psoc, vdev_id,
						  REASON_DISCONNECTED);
			if (QDF_IS_STATUS_ERROR(status))
				mlme_err("ROAM: Unable to clear roam scan mode");
		}

	case WLAN_ROAM_INIT: