qcacld-3.0: Don't repost ROAM event to scheduler thread

Currently, the ROAM event is posted to scheduler thread when it's
received from firmware. This is done to avoid processing the
complete event in IRQ context as the same callback gets called
from IRQ context for WOW events(WOW_REASON_LOW_RSSI and
WOW_REASON_HO_FAIL). Posting the ROAM event to scheduler
thread may introduce some additional delay in processing it back
as there would be a context switch.
If this ROAM event carries ROAM_START which is followed by a
ROAM_SYNC event, there is chance to process the ROAM_SYNC
before ROAM_START as ROAM_SYNC would be processed in the same
context whereas ROAM_START needs a context switch. This results
into an invalid connection manager state after processing
ROAM_START event, which results a connection failure.
Same is applicable for ROAM_PMKID_REQ_EVENT and
ROAM_VDEV_DISCONNECT_EVENT. Avoid reposting the same to scheduler
thread.

Change-Id: Ic4fc1b3baf12e4ceee9a0975ebfee77fb88ab6f0
CRs-Fixed: 3033657
Esse commit está contido em:
Srinivas Dasari
2021-09-09 22:26:50 +05:30
commit de Madan Koyyalamudi
commit f1e2971dd9
2 arquivos alterados com 63 adições e 143 exclusões

Ver arquivo

@@ -1883,13 +1883,11 @@ struct cm_roam_scan_ch_resp {
* enum roam_dispatcher_events - Roam events to post to scheduler thread
* @ROAM_EVENT_INVALID: Invalid event
* @ROAM_PMKID_REQ_EVENT: Roam pmkid request event
* @ROAM_EVENT: Roam event
* @ROAM_VDEV_DISCONNECT_EVENT: Roam disconnect event
*/
enum roam_dispatcher_events {
ROAM_EVENT_INVALID,
ROAM_PMKID_REQ_EVENT,
ROAM_EVENT,
ROAM_VDEV_DISCONNECT_EVENT,
};
#endif