qcacmn: Handle TWT renegotiation failure case

Generally below process should happen in renegotiation failure
case.
1. TWT setup (successful)
2. TWT setup (renegotiation failure)
3. TWT teardown
4. TWT GET STATUS - 0(dialog ID) 0 0 0
5. TWT setup - successful

Since all WMI TWT events gets executed in WMI thread. So when
renegotiation failure case hits, driver sends TWT
teardown to firmware and waits for twt ack in worker thread.
In same worker thread TWT event needs to be processed.
TWT ack event will not process as it's waiting in same worker
thread and it will get timedout.

As part of fix, break the context in renegotiation and
send the teardown in the new worker context.

Change-Id: Id12cb906b780d3013562c1772e276639a056c8f7
CRs-Fixed: 3207537
Este commit está contenido en:
Jyoti Kumari
2022-05-26 00:20:19 +05:30
cometido por Madan Koyyalamudi
padre f4bfa6616b
commit 4afef82b70
Se han modificado 6 ficheros con 98 adiciones y 0 borrados

Ver fichero

@@ -873,6 +873,22 @@ struct twt_notify_event_param {
enum HOST_TWT_NOTIFY_STATUS status;
};
/* HOST_TWT_NEXT_WORK_ACTION - next action of TWT worker thread
* @HOST_TWT_SEND_DELETE_CMD: Send TWT delete command request
*/
enum HOST_TWT_NEXT_WORK_ACTION {
HOST_TWT_SEND_DELETE_CMD = 1,
};
/**
* struct twt_work_params
* @peer_macaddr: peer mac address
* @dialog_id: Dialog ID
*/
struct twt_work_params {
struct qdf_mac_addr peer_macaddr;
uint32_t dialog_id;
};
#ifdef WLAN_SUPPORT_BCAST_TWT
/**
* struct twt_btwt_invite_sta_cmd_param -