Explorar o código

qcacld-3.0: Add roam scan stop reason check to support LFR2.0 BTM

If it is LFR2.0 roaming and BTM trigger, original procedure is always
stopping roaming scan with reason REASON_OS_REQUESTED_ROAMING_NOW,
After roaming stop configured, it will check the stop reason and post
eWNI_SME_ROAM_SCAN_OFFLOAD_RSP to invoke host handover to new AP.

Currently the roaming scan logic is changed, if roaming scan not in
enabled state, it will not invoke roaming scan stop, so host handover
cannot invoke when BTM.
And even roaming scan was enabled, the stop reason was override to
REASON_SME_ISSUED in csr_post_rso_stop(), also cannot invoke handover.

Fix it by check the stop reason against REASON_OS_REQUESTED_ROAMING_NOW,
which indicate it is LFR2.0 reassociation invoked by supplicant.

Change-Id: I39a84d06b9c696179da1b854985a23b874a399c5
CRs-Fixed: 2737888
Will Huang %!s(int64=4) %!d(string=hai) anos
pai
achega
2b266c257a
Modificáronse 1 ficheiros con 6 adicións e 0 borrados
  1. 6 0
      core/sme/src/csr/csr_api_roam.c

+ 6 - 0
core/sme/src/csr/csr_api_roam.c

@@ -18451,6 +18451,8 @@ csr_post_rso_stop(struct mac_context *mac, uint8_t vdev_id, uint16_t reason)
 		req->reason = REASON_SUPPLICANT_DISABLED_ROAMING;
 	else if (reason == REASON_DISCONNECTED)
 		req->reason = REASON_DISCONNECTED;
+	else if (reason == REASON_OS_REQUESTED_ROAMING_NOW)
+		req->reason = REASON_OS_REQUESTED_ROAMING_NOW;
 	else
 		req->reason = REASON_SME_ISSUED;
 
@@ -18710,6 +18712,10 @@ csr_roam_switch_to_rso_stop(struct mac_context *mac, uint8_t vdev_id,
 	 * nothing to do here
 	 */
 	default:
+		/* For LFR2 BTM request, need handoff even roam disabled */
+		if (reason == REASON_OS_REQUESTED_ROAMING_NOW)
+			csr_neighbor_roam_proceed_with_handoff_req(mac,
+								   vdev_id);
 		return QDF_STATUS_SUCCESS;
 	}
 	mlme_set_roam_state(mac->psoc, vdev_id, WLAN_ROAM_RSO_STOPPED);