qcacld-3.0: Fix race issue of disconnect and roaming
Reproduce steps: 1. Driver received roam start from F/W, enqueue roam cmd in active queue. 2. Driver received disconnect cmd from wpa supplicant, set link vdev vdev1 as disconnecting, enqueue disconnect cmd in pending queue. 3. Driver received MLO roam sync event from F/W, need handle link vdev first, assoc vdev later. 4. Driver didn't handle link vdev1 roam sync for disconnecting state, DP MLD peer isn't created. 5. Driver handled vdev0 roam sync, dp_peer_setup failed for DP MLD peer not created, asserted. To fix it, when handle vdev0 roam sync, check state of all mlo vdev, if either disconnecting, abort roam sync, and delete roam req, let disconnect from upper layer continue. Change-Id: Ie03e0031908fef0f403d2cacf8ec976a147ef1ed CRs-Fixed: 3371850
Este cometimento está contido em:

cometido por
Madan Koyyalamudi

ascendente
1556ac57f3
cometimento
f9d4ce74c0
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2023 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
|
||||
@@ -61,7 +61,9 @@ QDF_STATUS cm_fw_roam_sync_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
return QDF_STATUS_E_NULL_VALUE;
|
||||
}
|
||||
|
||||
if (cm_is_vdev_connecting(vdev) || cm_is_vdev_disconnecting(vdev)) {
|
||||
if (mlo_is_mld_disconnecting_connecting(vdev) ||
|
||||
cm_is_vdev_connecting(vdev) ||
|
||||
cm_is_vdev_disconnecting(vdev)) {
|
||||
mlme_err("vdev %d Roam sync not handled in connecting/disconnecting state",
|
||||
vdev_id);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_SB_ID);
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador