qcacld-3.0: release the NDP end all command

Currently, driver post NDP end all command on the scheduler but
never release it. This casues timeout in the scheduler and driver
releases the vdev which is never referenced. This causes crash in
driver.

To resolve this issue, release the NDP end all command when NDP
Host Update event received from the firmware.

Change-Id: Iffe4f79b7c131c48cbf2b085d8bbc6e1fb0b5f0a
CRs-Fixed: 3521989
Šī revīzija ir iekļauta:
Rahul Gusain
2023-06-08 12:46:21 +05:30
revīziju iesūtīja Rahul Choudhary
vecāks bb7e163983
revīzija bcb01fb787
3 mainīti faili ar 40 papildinājumiem un 72 dzēšanām

Parādīt failu

@@ -956,7 +956,6 @@ QDF_STATUS
ucfg_nan_disable_ndi(struct wlan_objmgr_psoc *psoc, uint32_t ndi_vdev_id)
{
enum nan_datapath_state curr_ndi_state;
struct nan_datapath_host_event *event;
struct nan_vdev_priv_obj *ndi_vdev_priv;
struct nan_datapath_end_all_ndps req = {0};
struct wlan_objmgr_vdev *ndi_vdev;
@@ -964,7 +963,7 @@ ucfg_nan_disable_ndi(struct wlan_objmgr_psoc *psoc, uint32_t ndi_vdev_id)
QDF_STATUS status;
int err;
static const struct osif_request_params params = {
.priv_size = sizeof(struct nan_datapath_host_event),
.priv_size = 0,
.timeout_ms = 1000,
};
@@ -1023,18 +1022,11 @@ ucfg_nan_disable_ndi(struct wlan_objmgr_psoc *psoc, uint32_t ndi_vdev_id)
goto cleanup;
}
event = osif_request_priv(request);
if (!event->ndp_termination_in_progress) {
nan_err("Failed to terminate NDP's on NDI");
status = QDF_STATUS_E_FAILURE;
} else {
/*
* Host can assume NDP delete is successful and
* remove policy mgr entry
*/
policy_mgr_decr_session_set_pcl(psoc, QDF_NDI_MODE,
ndi_vdev_id);
}
/*
* Host can assume NDP delete is successful and
* remove policy mgr entry
*/
policy_mgr_decr_session_set_pcl(psoc, QDF_NDI_MODE, ndi_vdev_id);
cleanup:
/* Restore original NDI state in case of failure */