qcacld-3.0: correct rso_timer_stopped status

Currently host starts the start_rso_stop_timer when it sends roam
stop related commands to firmware. And tries to stop the timer when
it receives roam event with reason ROAM_REASON_RSO_STATUS or
ROAM_REASON_HO_FAILED. Since firmware also sends roam event with
above reasons when host configs other roam parameters. This causes
host confused about whether to stop the timer or not.

To resolve this issue, add one more condition
roam_event->notif_params == WMI_ROAM_SCAN_MODE_NONE

Change-Id: Ia24d5bba1e35bc4102951adcafc76edda7769d35
CRs-Fixed: 3267506
此提交包含在:
Paul Zhang
2022-08-15 14:44:50 +08:00
提交者 Madan Koyyalamudi
父節點 fa947d9a0a
當前提交 8aee5c59f0
共有 3 個檔案被更改,包括 6 行新增4 行删除

查看文件

@@ -122,7 +122,8 @@ int target_if_cm_roam_event(ol_scn_t scn, uint8_t *event, uint32_t len)
* Stop the timer upon RSO stop status success. The timer shall continue
* to run upon HO_FAIL status and would be stopped upon HO_FAILED event
*/
if (roam_event->reason == ROAM_REASON_RSO_STATUS ||
if ((roam_event->reason == ROAM_REASON_RSO_STATUS &&
roam_event->notif_params == WMI_ROAM_SCAN_MODE_NONE) ||
roam_event->reason == ROAM_REASON_HO_FAILED)
target_if_stop_rso_stop_timer(roam_event);

查看文件

@@ -1320,7 +1320,7 @@ target_if_stop_rso_stop_timer(struct roam_offload_roam_event *roam_event)
if (!qdf_atomic_test_bit(RSO_STOP_RESPONSE_BIT,
&vdev_rsp->rsp_status)) {
roam_event->rso_timer_stopped = true;
mlme_debug("rso stop timer is not started");
return QDF_STATUS_SUCCESS;
}

查看文件

@@ -1057,10 +1057,11 @@ extract_roam_event_tlv(wmi_unified_t wmi_handle, void *evt_buf, uint32_t len,
QDF_PROTO_TYPE_EVENT,
QDF_ROAM_EVENTID));
wmi_debug("FW_ROAM_EVT: Reason:%s[%d], Notif %x for vdevid %x, rssi %d",
wmi_debug("FW_ROAM_EVT: Reason:%s[%d], Notif %x for vdevid %x, rssi %d, params %d, params1 %d",
wmi_get_roam_event_reason_string(roam_event->reason),
roam_event->reason,
roam_event->notif, roam_event->vdev_id, roam_event->rssi);
roam_event->notif, roam_event->vdev_id, roam_event->rssi,
roam_event->notif_params, roam_event->notif_params1);
if (param_buf->hw_mode_transition_fixed_param) {
hw_mode_trans_ind = qdf_mem_malloc(sizeof(*hw_mode_trans_ind));