qcacld-3.0: Wait HO_FAIL event when roam sync failed
Host received deauth and roam sync back-to-back after WoW, sent vdev RSO_DISABLE before RSO_STATUS event, F/W assert. 1. Host received deauth event, limSmeState went out of link est state, sent async event of cm_send_sb_disconnect_req. 2. Host received and handled roam_sync, CM_RSO: vdev0: [ROAM_RSO_ENABLED(2)] --> [ROAM_SYNCH_IN_PROG(5)], roam sync failed since not in link est state. 3. Host aborted roaming, ent back to CM-VDEV-0: CONNECTED, removed roaming cmd from serialization queue. 4. Host sent RSO stop to F/W. 5. Host handled cm_send_sb_disconnect_req, dropped RSO stop during roam sync, called cm_disconnect_continue_after_rso_stop without waiting for RSO_STATUS event. 6. Host sent vdev RSO_DISABLE and vdev stop before received RSO_STATUS event, F/W asserted. To fix it, if host roam sync failed, need wait for HO_FAIL event and handle it before handling other cmd, can't remove roaming cmd from assoc vdev serialization queue to unblock other pending cmd before handling HO_FAIL, just send assoc link RSO stop to F/W one time with REASON_ROAM_SYNCH_FAILED, then wait for 2 events: FW_ROAM_EVT RSO status and HO_FAIL. then handle HO_FAIL, at last remove roaming cmd, unblock other cmd and trigger disconnect. Change-Id: I03dd3ed21007ee67613c2d90b5567348c240f375 CRs-Fixed: 3445233
This commit is contained in:

committed by
Madan Koyyalamudi

parent
a8b69af9a8
commit
9228383500
@@ -2661,7 +2661,6 @@ end:
|
||||
abort_roam:
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
wmi_err("%d Failed to extract roam sync ind", status);
|
||||
wlan_cm_fw_roam_abort_req(psoc, synch_event->vdev_id);
|
||||
wlan_cm_roam_stop_req(psoc, synch_event->vdev_id,
|
||||
REASON_ROAM_SYNCH_FAILED);
|
||||
}
|
||||
|
Reference in New Issue
Block a user