qcacld-3.0: Block NDP_END_ALL req till last NDP_END is received

Firmware sends NDP_HOST_UPDATE event as an immediate response to this
request and starts cleaning peers one by one. Once an NDP session is
ended (indicating NDP_END to peer + internal cleanup), firmware sends
NDP_END_IND to host.
Currently, host driver stops the wait timer and change state from NDP
end to disconnected upon receiving the NDP_HOST_UPDATE. But firmware
might still be in the process of NDP cleanup. As the NDP_END_ALL
context is unblocked, driver may send NAN disable request to firmware.
This may cause inconsistency in firmware state machine and firmware may
drop the ongoing NDP_END request. So, peer doesn't get the NDP_END frame
in such cases.

Unblock the NDP_END_ALL-wait call only upon last NDP_END indication to
avoid such issues. This change moves the major functionality of
NDP_HOST_UPDATE processing to last NDP_END indication. Cleanup/remove
the processing of NDP_HOST_UPDATE as it's not needed anymore.

Change-Id: I19d3e40700c1c0501b9c809820262472bf9bdba4
CRs-Fixed: 3512847
Šī revīzija ir iekļauta:
Rahul Gusain
2023-05-26 13:12:52 +05:30
revīziju iesūtīja Rahul Choudhary
vecāks 9df82708b2
revīzija 54c2fe240a
6 mainīti faili ar 46 papildinājumiem un 174 dzēšanām

Parādīt failu

@@ -473,8 +473,7 @@ QDF_STATUS ucfg_disable_nan_discovery(struct wlan_objmgr_psoc *psoc,
* @ndi_vdev_id: vdev_id of the NDI to be disabled
*
* Disable all the NDPs present on the given NDI by sending NDP_END_ALL
* to firmware. Firmwere sends an immediate response(NDP_HOST_UPDATE) with
* ndp_disable param as 1 followed by NDP_END indication for all the NDPs.
* to firmware.
*
* Return: status of operation
*/